Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Df parameter of Low models is replaced by weight because it means the same to maxmin...
[simgrid.git] / src / surf / maxmin.c
index 8e8d049..08109bd 100644 (file)
@@ -126,6 +126,11 @@ void lmm_constraint_shared(lmm_constraint_t cnst)
   cnst->shared = 0;
 }
 
+int lmm_constraint_is_shared(lmm_constraint_t cnst)
+{
+  return (cnst->shared);
+}
+
 void lmm_constraint_free(lmm_system_t sys, lmm_constraint_t cnst)
 {
   remove_constraint(sys, cnst);
@@ -178,7 +183,7 @@ lmm_variable_t lmm_variable_new(lmm_system_t sys, void *id,
   var->weight = weight;
   var->bound = bound;
   var->value = 0.0;
-  var->df = 0.0;
+
 
   var->func_f = func_f_def;
   var->func_fp = func_fp_def;
@@ -241,9 +246,10 @@ void lmm_expand_add(lmm_system_t sys, lmm_constraint_t cnst,
     if (var->cnsts[i].constraint == cnst)
       break;
 
-  if (i < var->cnsts_number)
-    var->cnsts[i].value += value;
-  else
+  if (i < var->cnsts_number) {
+    if(cnst->shared) var->cnsts[i].value += value;
+    else var->cnsts[i].value = MAX(var->cnsts[i].value,value);
+  }  else
     lmm_expand(sys, cnst, var, value);
 }
 
@@ -416,9 +422,9 @@ void lmm_print(lmm_system_t sys)
     }
     DEBUG1("%s", trace_buf);
     trace_buf[0] = '\000';
-    if (double_positive(sum - cnst->bound))
-      WARN3("Incorrect value (%f is not smaller than %f): %g",
-           sum, cnst->bound, sum - cnst->bound);
+    xbt_assert3(!double_positive(sum - cnst->bound),
+               "Incorrect value (%f is not smaller than %f): %g",
+               sum, cnst->bound, sum - cnst->bound);    
   }
 
   DEBUG0("Variables");
@@ -427,9 +433,9 @@ void lmm_print(lmm_system_t sys)
     if (var->bound > 0) {
       DEBUG4("'%p'(%f) : %f (<=%f)", var, var->weight, var->value,
             var->bound);
-      if (double_positive(var->value - var->bound))
-       WARN2("Incorrect value (%f is not smaller than %f",
-             var->value, var->bound);
+      xbt_assert2(!double_positive(var->value - var->bound),
+                 "Incorrect value (%f is not smaller than %f",
+                 var->value, var->bound);
     } else
       DEBUG3("'%p'(%f) : %f", var, var->weight, var->value);
   }
@@ -601,24 +607,6 @@ void lmm_update_variable_bound(lmm_system_t sys, lmm_variable_t var,
   var->bound = bound;
 }
 
-/** \brief Add the value delta to var->df (the sum of latencies).
- * 
- *  \param sys the lmm_system_t associated
- *  \param var the lmm_variable_t which need to updated
- *  \param delta the variation of the latency
- * 
- *  Add the value delta to var->df (the sum of latencys associated to the
- *  flow). Whenever this function is called a change is  signed in the system. To
- *  avoid false system changing detection it is a good idea to test 
- *  (delta != 0) before calling it.
- *
- */
-void lmm_update_variable_latency(lmm_system_t sys, lmm_variable_t var,
-                                double delta)
-{
-  sys->modified = 1;
-  var->df += delta;
-}
 
 void lmm_update_variable_weight(lmm_system_t sys, lmm_variable_t var,
                                double weight)