Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix dead assignments.
[simgrid.git] / src / surf / lagrange.cpp
index 8128625..ad8eabc 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2013. The SimGrid Team.
+/* Copyright (c) 2007-2014. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -63,7 +63,7 @@ static int __check_feasible(xbt_swag_t cnst_list, xbt_swag_t var_list,
       tmp += var->value;
     }
 
-    if (double_positive(tmp - cnst->bound)) {
+    if (double_positive(tmp - cnst->bound, sg_maxmin_precision)) {
       if (warn)
         XBT_WARN
             ("The link (%p) is over-used. Expected less than %f and got %f",
@@ -84,7 +84,7 @@ static int __check_feasible(xbt_swag_t cnst_list, xbt_swag_t var_list,
     XBT_DEBUG("Checking feasability for variable (%p): sat = %f mu = %f", var,
            var->value - var->bound, var->mu);
 
-    if (double_positive(var->value - var->bound)) {
+    if (double_positive(var->value - var->bound, sg_maxmin_precision)) {
       if (warn)
         XBT_WARN
             ("The variable (%p) is too large. Expected less than %f and got %f",
@@ -157,9 +157,10 @@ static double dual_objective(xbt_swag_t var_list, xbt_swag_t cnst_list)
       obj += var->mu * var->bound;
   }
 
-  xbt_swag_foreach(_cnst, cnst_list)
+  xbt_swag_foreach(_cnst, cnst_list) {
       cnst = (lmm_constraint_t)_cnst;
       obj += cnst->lambda * cnst->bound;
+  }
 
   return obj;
 }
@@ -170,7 +171,7 @@ void lagrange_solve(lmm_system_t sys)
    * Lagrange Variables.
    */
   int max_iterations = 100;
-  double epsilon_min_error = MAXMIN_PRECISION;
+  double epsilon_min_error = 0.00001; /* this is the precision on the objective function so it's none of the configurable values and this value is the legacy one */
   double dichotomy_min_error = 1e-14;
   double overall_modification = 1;
 
@@ -396,7 +397,6 @@ static double dichotomy(double init, double diff(double, void *),
     min = max = 0.5;
   }
 
-  min_diff = max_diff = middle_diff = 0.0;
   overall_error = 1;
 
   if ((diff_0 = diff(1e-16, var_cnst)) >= 0) {