Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
help readability
[simgrid.git] / src / surf / maxmin.c
index fc590cc..4d57218 100644 (file)
@@ -177,6 +177,19 @@ void lmm_expand(lmm_system_t sys, lmm_constraint_t cnst,
   make_constraint_active(sys, cnst);
 }
 
+void lmm_expand_add(lmm_system_t sys, lmm_constraint_t cnst,
+                   lmm_variable_t var, double value)
+{
+  int i ; 
+  sys->modified = 1;
+
+  for(i=0; i< var->cnsts_number ; i++)
+    if(var->cnsts[i].constraint == cnst) break;
+  
+  if(i<var->cnsts_number) var->cnsts[i].value +=value;
+  else lmm_expand(sys,cnst,var,value);
+}
+
 lmm_constraint_t lmm_get_cnst_from_var(lmm_system_t sys,
                                       lmm_variable_t var, int num)
 {
@@ -282,9 +295,9 @@ void lmm_solve(lmm_system_t sys)
   DEBUG1("cnst_list : %d", xbt_swag_size(cnst_list));
   xbt_swag_foreach(cnst, cnst_list) {
     /* INIT */
-    elem_list = &(cnst->element_set);
     cnst->remaining = cnst->bound;
     cnst->usage = 0;
+    elem_list = &(cnst->element_set);
     xbt_swag_foreach(elem, elem_list) {
       if(elem->variable->weight <=0) break;
       if ((elem->value > 0)) {