Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix the order of contraints changed by previous commits:
authorArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Fri, 9 Dec 2011 15:45:14 +0000 (16:45 +0100)
committerNavarrop <Pierre.Navarro@imag.fr>
Fri, 6 Jan 2012 15:30:58 +0000 (16:30 +0100)
7591b36 Reduce the number of calls to lmm_update_modified_set.
c44aefe In lmm_update_modified_set, don't visit variables twice.

src/surf/maxmin.c

index ff65a88..b80c47c 100644 (file)
@@ -719,13 +719,13 @@ void lmm_update_variable_weight(lmm_system_t sys, lmm_variable_t var,
       xbt_swag_insert_at_head(elem, &(elem->constraint->element_set));
     else
       xbt_swag_insert_at_tail(elem, &(elem->constraint->element_set));
+
+    if (i == 0)
+      lmm_update_modified_set(sys, elem->constraint);
   }
   if (!weight)
     var->value = 0.0;
 
-  if (var->cnsts_number)
-     lmm_update_modified_set(sys, var->cnsts[0].constraint);
-
   XBT_OUT();
 }
 
@@ -789,17 +789,16 @@ static void lmm_update_modified_set_rec(lmm_system_t sys,
     lmm_variable_t var = elem->variable;
     s_lmm_element_t *cnsts = var->cnsts;
     int i;
-    if (var->visited == sys->visited_counter)
-       continue;
-    var->visited = sys->visited_counter;
-    for (i = 0; i < var->cnsts_number; i++) {
-      if (cnsts[i].constraint != cnst
+    for (i = 0; var->visited != sys->visited_counter
+             && i < var->cnsts_number ; i++) {
+    if (cnsts[i].constraint != cnst
           && !xbt_swag_belongs(cnsts[i].constraint,
                                &sys->modified_constraint_set)) {
         xbt_swag_insert(cnsts[i].constraint, &sys->modified_constraint_set);
         lmm_update_modified_set_rec(sys, cnsts[i].constraint);
       }
     }
+    var->visited = sys->visited_counter;
   }
 }