Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 30 Nov 2017 22:10:59 +0000 (23:10 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 30 Nov 2017 22:10:59 +0000 (23:10 +0100)
12 files changed:
include/simgrid/forward.h
src/kernel/lmm/fair_bottleneck.cpp
src/kernel/lmm/lagrange.cpp
src/kernel/lmm/maxmin.cpp
src/kernel/lmm/maxmin.hpp
src/plugins/file_system/FileSystem.hpp
src/surf/cpu_cas01.cpp
src/surf/network_cm02.cpp
src/surf/ptask_L07.cpp
teshsuite/msg/process-kill/process-kill.c
teshsuite/surf/maxmin_bench/maxmin_bench_medium.tesh
teshsuite/surf/maxmin_bench/maxmin_bench_small.tesh

index 3b96273..b2905bb 100644 (file)
@@ -88,6 +88,7 @@ typedef simgrid::kernel::activity::MailboxImpl* smx_mailbox_t;
 typedef simgrid::surf::StorageImpl* surf_storage_t;
 
 typedef simgrid::kernel::lmm::s_lmm_element_t* lmm_element_t;
+typedef const simgrid::kernel::lmm::s_lmm_element_t* const_lmm_element_t;
 typedef simgrid::kernel::lmm::s_lmm_variable_t* lmm_variable_t;
 typedef simgrid::kernel::lmm::s_lmm_constraint_t* lmm_constraint_t;
 typedef simgrid::kernel::lmm::s_lmm_constraint_light_t* lmm_constraint_light_t;
index 0b5a9b4..5ff0ef2 100644 (file)
@@ -19,62 +19,31 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_maxmin);
 
 void simgrid::kernel::lmm::bottleneck_solve(lmm_system_t sys)
 {
-  void* _var;
-  void* _var_next;
-  void* _cnst;
-  void* _cnst_next;
-  void* _elem;
-  lmm_variable_t var    = nullptr;
-  lmm_constraint_t cnst = nullptr;
-  s_lmm_constraint_t s_cnst;
-  lmm_element_t elem   = nullptr;
-  xbt_swag_t cnst_list = nullptr;
-  xbt_swag_t var_list  = nullptr;
-  xbt_swag_t elem_list = nullptr;
-
-  static s_xbt_swag_t cnst_to_update;
-
   if (not sys->modified)
     return;
 
-  /* Init */
-  xbt_swag_init(&(cnst_to_update), xbt_swag_offset(s_cnst, saturated_constraint_set_hookup));
-
-  var_list = &(sys->variable_set);
-  XBT_DEBUG("Variable set : %d", xbt_swag_size(var_list));
-  xbt_swag_foreach(_var, var_list)
-  {
-    var        = static_cast<lmm_variable_t>(_var);
-    var->value = 0.0;
-    XBT_DEBUG("Handling variable %p", var);
-    xbt_swag_insert(var, &(sys->saturated_variable_set));
-    auto weighted = std::find_if(begin(var->cnsts), end(var->cnsts),
-                                 [](s_lmm_element_t const& x) { return x.consumption_weight != 0.0; });
-    if (weighted == end(var->cnsts) && var->sharing_weight > 0.0) {
-      XBT_DEBUG("Err, finally, there is no need to take care of variable %p", var);
-      xbt_swag_remove(var, &(sys->saturated_variable_set));
-      var->value = 1.0;
-    }
-    if (var->sharing_weight <= 0.0) {
-      XBT_DEBUG("Err, finally, there is no need to take care of variable %p", var);
-      xbt_swag_remove(var, &(sys->saturated_variable_set));
+  XBT_DEBUG("Variable set : %zu", sys->variable_set.size());
+  for (s_lmm_variable_t& var : sys->variable_set) {
+    var.value = 0.0;
+    XBT_DEBUG("Handling variable %p", &var);
+    if (var.sharing_weight > 0.0 && std::find_if(begin(var.cnsts), end(var.cnsts), [](s_lmm_element_t const& x) {
+                                      return x.consumption_weight != 0.0;
+                                    }) != end(var.cnsts)) {
+      sys->saturated_variable_set.push_back(var);
+    } else {
+      XBT_DEBUG("Err, finally, there is no need to take care of variable %p", &var);
+      if (var.sharing_weight > 0.0)
+        var.value = 1.0;
     }
   }
-  var_list = &(sys->saturated_variable_set);
 
-  cnst_list = &(sys->active_constraint_set);
-  XBT_DEBUG("Active constraints : %d", xbt_swag_size(cnst_list));
-  xbt_swag_foreach(_cnst, cnst_list)
-  {
-    cnst = static_cast<lmm_constraint_t>(_cnst);
-    xbt_swag_insert(cnst, &(sys->saturated_constraint_set));
+  XBT_DEBUG("Active constraints : %zu", sys->active_constraint_set.size());
+  for (s_lmm_constraint_t& cnst : sys->active_constraint_set) {
+    sys->saturated_constraint_set.push_back(cnst);
   }
-  cnst_list = &(sys->saturated_constraint_set);
-  xbt_swag_foreach(_cnst, cnst_list)
-  {
-    cnst            = static_cast<lmm_constraint_t>(_cnst);
-    cnst->remaining = cnst->bound;
-    cnst->usage     = 0.0;
+  for (s_lmm_constraint_t& cnst : sys->saturated_constraint_set) {
+    cnst.remaining = cnst.bound;
+    cnst.usage     = 0.0;
   }
 
   XBT_DEBUG("Fair bottleneck Initialized");
@@ -82,102 +51,97 @@ void simgrid::kernel::lmm::bottleneck_solve(lmm_system_t sys)
   /*
    * Compute Usage and store the variables that reach the maximum.
    */
+  auto& var_list  = sys->saturated_variable_set;
+  auto& cnst_list = sys->saturated_constraint_set;
   do {
     if (XBT_LOG_ISENABLED(surf_maxmin, xbt_log_priority_debug)) {
       XBT_DEBUG("Fair bottleneck done");
       sys->print();
     }
-    XBT_DEBUG("******* Constraints to process: %d *******", xbt_swag_size(cnst_list));
-    xbt_swag_foreach_safe(_cnst, _cnst_next, cnst_list)
-    {
-      cnst   = static_cast<lmm_constraint_t>(_cnst);
+    XBT_DEBUG("******* Constraints to process: %zu *******", cnst_list.size());
+    for (auto iter = std::begin(cnst_list); iter != std::end(cnst_list);) {
+      s_lmm_constraint_t& cnst = *iter;
       int nb = 0;
-      XBT_DEBUG("Processing cnst %p ", cnst);
-      elem_list   = &(cnst->enabled_element_set);
-      cnst->usage = 0.0;
-      xbt_swag_foreach(_elem, elem_list)
-      {
-        elem = static_cast<lmm_element_t>(_elem);
-        xbt_assert(elem->variable->sharing_weight > 0);
-        if ((elem->consumption_weight > 0) && xbt_swag_belongs(elem->variable, var_list))
+      XBT_DEBUG("Processing cnst %p ", &cnst);
+      cnst.usage = 0.0;
+      for (s_lmm_element_t& elem : cnst.enabled_element_set) {
+        xbt_assert(elem.variable->sharing_weight > 0);
+        if (elem.consumption_weight > 0 && elem.variable->saturated_variable_set_hook.is_linked())
           nb++;
       }
       XBT_DEBUG("\tThere are %d variables", nb);
-      if (nb > 0 && not cnst->sharing_policy)
+      if (nb > 0 && not cnst.sharing_policy)
         nb = 1;
-      if (not nb) {
-        cnst->remaining = 0.0;
-        cnst->usage     = cnst->remaining;
-        xbt_swag_remove(cnst, cnst_list);
-        continue;
+      if (nb == 0) {
+        cnst.remaining = 0.0;
+        cnst.usage     = 0.0;
+        iter           = cnst_list.erase(iter);
+      } else {
+        cnst.usage = cnst.remaining / nb;
+        XBT_DEBUG("\tConstraint Usage %p : %f with %d variables", &cnst, cnst.usage, nb);
+        iter++;
       }
-      cnst->usage = cnst->remaining / nb;
-      XBT_DEBUG("\tConstraint Usage %p : %f with %d variables", cnst, cnst->usage, nb);
     }
 
-    xbt_swag_foreach_safe(_var, _var_next, var_list)
-    {
-      var            = static_cast<lmm_variable_t>(_var);
+    for (auto iter = std::begin(var_list); iter != std::end(var_list);) {
+      s_lmm_variable_t& var = *iter;
       double min_inc = DBL_MAX;
-      for (s_lmm_element_t const& elm : var->cnsts) {
+      for (s_lmm_element_t const& elm : var.cnsts) {
         if (elm.consumption_weight > 0)
           min_inc = std::min(min_inc, elm.constraint->usage / elm.consumption_weight);
       }
-      if (var->bound > 0)
-        min_inc = std::min(min_inc, var->bound - var->value);
-      var->mu   = min_inc;
-      XBT_DEBUG("Updating variable %p maximum increment: %g", var, var->mu);
-      var->value += var->mu;
-      if (var->value == var->bound) {
-        xbt_swag_remove(var, var_list);
-      }
+      if (var.bound > 0)
+        min_inc = std::min(min_inc, var.bound - var.value);
+      var.mu    = min_inc;
+      XBT_DEBUG("Updating variable %p maximum increment: %g", &var, var.mu);
+      var.value += var.mu;
+      if (var.value == var.bound)
+        iter = var_list.erase(iter);
+      else
+        iter++;
     }
 
-    xbt_swag_foreach_safe(_cnst, _cnst_next, cnst_list)
-    {
-      cnst = static_cast<lmm_constraint_t>(_cnst);
-      XBT_DEBUG("Updating cnst %p ", cnst);
-      elem_list = &(cnst->enabled_element_set);
-      xbt_swag_foreach(_elem, elem_list)
-      {
-        elem = static_cast<lmm_element_t>(_elem);
-        xbt_assert(elem->variable->sharing_weight > 0);
-        if (cnst->sharing_policy) {
-          XBT_DEBUG("\tUpdate constraint %p (%g) with variable %p by %g", cnst, cnst->remaining, elem->variable,
-                    elem->variable->mu);
-          double_update(&(cnst->remaining), elem->consumption_weight * elem->variable->mu, sg_maxmin_precision);
-        } else {
-          XBT_DEBUG("\tNon-Shared variable. Update constraint usage of %p (%g) with variable %p by %g", cnst,
-                    cnst->usage, elem->variable, elem->variable->mu);
-          cnst->usage = std::min(cnst->usage, elem->consumption_weight * elem->variable->mu);
+    for (auto iter = std::begin(cnst_list); iter != std::end(cnst_list);) {
+      s_lmm_constraint_t& cnst = *iter;
+      XBT_DEBUG("Updating cnst %p ", &cnst);
+      if (cnst.sharing_policy) {
+        for (s_lmm_element_t& elem : cnst.enabled_element_set) {
+          xbt_assert(elem.variable->sharing_weight > 0);
+          XBT_DEBUG("\tUpdate constraint %p (%g) with variable %p by %g", &cnst, cnst.remaining, elem.variable,
+                    elem.variable->mu);
+          double_update(&cnst.remaining, elem.consumption_weight * elem.variable->mu, sg_maxmin_precision);
         }
-      }
-      if (not cnst->sharing_policy) {
-        XBT_DEBUG("\tUpdate constraint %p (%g) by %g", cnst, cnst->remaining, cnst->usage);
-
-        double_update(&(cnst->remaining), cnst->usage, sg_maxmin_precision);
+      } else {
+        for (s_lmm_element_t& elem : cnst.enabled_element_set) {
+          xbt_assert(elem.variable->sharing_weight > 0);
+          XBT_DEBUG("\tNon-Shared variable. Update constraint usage of %p (%g) with variable %p by %g", &cnst,
+                    cnst.usage, elem.variable, elem.variable->mu);
+          cnst.usage = std::min(cnst.usage, elem.consumption_weight * elem.variable->mu);
+        }
+        XBT_DEBUG("\tUpdate constraint %p (%g) by %g", &cnst, cnst.remaining, cnst.usage);
+        double_update(&cnst.remaining, cnst.usage, sg_maxmin_precision);
       }
 
-      XBT_DEBUG("\tRemaining for %p : %g", cnst, cnst->remaining);
-      if (cnst->remaining <= 0.0) {
-        XBT_DEBUG("\tGet rid of constraint %p", cnst);
+      XBT_DEBUG("\tRemaining for %p : %g", &cnst, cnst.remaining);
+      if (cnst.remaining <= 0.0) {
+        XBT_DEBUG("\tGet rid of constraint %p", &cnst);
 
-        xbt_swag_remove(cnst, cnst_list);
-        xbt_swag_foreach(_elem, elem_list)
-        {
-          elem = static_cast<lmm_element_t>(_elem);
-          if (elem->variable->sharing_weight <= 0)
+        iter = cnst_list.erase(iter);
+        for (s_lmm_element_t& elem : cnst.enabled_element_set) {
+          if (elem.variable->sharing_weight <= 0)
             break;
-          if (elem->consumption_weight > 0) {
-            XBT_DEBUG("\t\tGet rid of variable %p", elem->variable);
-            xbt_swag_remove(elem->variable, var_list);
+          if (elem.consumption_weight > 0 && elem.variable->saturated_variable_set_hook.is_linked()) {
+            XBT_DEBUG("\t\tGet rid of variable %p", elem.variable);
+            var_list.erase(var_list.iterator_to(*elem.variable));
           }
         }
+      } else {
+        iter++;
       }
     }
-  } while (xbt_swag_size(var_list));
+  } while (not var_list.empty());
 
-  xbt_swag_reset(cnst_list);
+  cnst_list.clear();
   sys->modified = true;
   if (XBT_LOG_ISENABLED(surf_maxmin, xbt_log_priority_debug)) {
     XBT_DEBUG("Fair bottleneck done");
index bb355c5..500884e 100644 (file)
@@ -29,9 +29,9 @@ namespace simgrid {
 namespace kernel {
 namespace lmm {
 
-double (*func_f_def)(lmm_variable_t, double);
-double (*func_fp_def)(lmm_variable_t, double);
-double (*func_fpi_def)(lmm_variable_t, double);
+double (*func_f_def)(const s_lmm_variable_t&, double);
+double (*func_fp_def)(const s_lmm_variable_t&, double);
+double (*func_fpi_def)(const s_lmm_variable_t&, double);
 
 /*
  * Local prototypes to implement the Lagrangian optimization with optimal step, also called dichotomy.
@@ -39,124 +39,101 @@ double (*func_fpi_def)(lmm_variable_t, double);
 // solves the proportional fairness using a Lagrangian optimization with dichotomy step
 void lagrange_solve(lmm_system_t sys);
 // computes the value of the dichotomy using a initial values, init, with a specific variable or constraint
-static double dichotomy(double init, double diff(double, void*), void* var_cnst, double min_error);
-// computes the value of the differential of constraint param_cnst applied to lambda
-static double partial_diff_lambda(double lambda, void* param_cnst);
+static double dichotomy(double init, double diff(double, const s_lmm_constraint_t&), const s_lmm_constraint_t& cnst,
+                        double min_error);
+// computes the value of the differential of constraint cnst applied to lambda
+static double partial_diff_lambda(double lambda, const s_lmm_constraint_t& cnst);
 
-static int __check_feasible(xbt_swag_t cnst_list, xbt_swag_t var_list, int warn)
+template <class CnstList, class VarList>
+static int __check_feasible(const CnstList& cnst_list, const VarList& var_list, int warn)
 {
-  void* _cnst;
-  void* _elem;
-  void* _var;
-  xbt_swag_t elem_list  = nullptr;
-  lmm_element_t elem    = nullptr;
-  lmm_constraint_t cnst = nullptr;
-  lmm_variable_t var    = nullptr;
-
-  xbt_swag_foreach(_cnst, cnst_list)
-  {
-    cnst       = static_cast<lmm_constraint_t>(_cnst);
+  for (s_lmm_constraint_t const& cnst : cnst_list) {
     double tmp = 0;
-    elem_list  = &(cnst->enabled_element_set);
-    xbt_swag_foreach(_elem, elem_list)
-    {
-      elem = static_cast<lmm_element_t>(_elem);
-      var  = elem->variable;
+    for (s_lmm_element_t const& elem : cnst.enabled_element_set) {
+      lmm_variable_t var = elem.variable;
       xbt_assert(var->sharing_weight > 0);
       tmp += var->value;
     }
 
-    if (double_positive(tmp - cnst->bound, sg_maxmin_precision)) {
+    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", cnst, cnst->bound, tmp);
+        XBT_WARN("The link (%p) is over-used. Expected less than %f and got %f", &cnst, cnst.bound, tmp);
       return 0;
     }
-    XBT_DEBUG("Checking feasability for constraint (%p): sat = %f, lambda = %f ", cnst, tmp - cnst->bound,
-              cnst->lambda);
+    XBT_DEBUG("Checking feasability for constraint (%p): sat = %f, lambda = %f ", &cnst, tmp - cnst.bound, cnst.lambda);
   }
 
-  xbt_swag_foreach(_var, var_list)
-  {
-    var = static_cast<lmm_variable_t>(_var);
-    if (not var->sharing_weight)
+  for (s_lmm_variable_t const& var : var_list) {
+    if (not var.sharing_weight)
       break;
-    if (var->bound < 0)
+    if (var.bound < 0)
       continue;
-    XBT_DEBUG("Checking feasability for variable (%p): sat = %f mu = %f", var, var->value - var->bound, var->mu);
+    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, sg_maxmin_precision)) {
+    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", var, var->bound, var->value);
+        XBT_WARN("The variable (%p) is too large. Expected less than %f and got %f", &var, var.bound, var.value);
       return 0;
     }
   }
   return 1;
 }
 
-static double new_value(lmm_variable_t var)
+static double new_value(const s_lmm_variable_t& var)
 {
   double tmp = 0;
 
-  for (s_lmm_element_t const& elem : var->cnsts) {
+  for (s_lmm_element_t const& elem : var.cnsts) {
     tmp += elem.constraint->lambda;
   }
-  if (var->bound > 0)
-    tmp += var->mu;
-  XBT_DEBUG("\t Working on var (%p). cost = %e; Weight = %e", var, tmp, var->sharing_weight);
+  if (var.bound > 0)
+    tmp += var.mu;
+  XBT_DEBUG("\t Working on var (%p). cost = %e; Weight = %e", &var, tmp, var.sharing_weight);
   // uses the partial differential inverse function
-  return var->func_fpi(var, tmp);
+  return var.func_fpi(var, tmp);
 }
 
-static double new_mu(lmm_variable_t var)
+static double new_mu(const s_lmm_variable_t& var)
 {
   double mu_i    = 0.0;
   double sigma_i = 0.0;
 
-  for (s_lmm_element_t const& elem : var->cnsts) {
+  for (s_lmm_element_t const& elem : var.cnsts) {
     sigma_i += elem.constraint->lambda;
   }
-  mu_i = var->func_fp(var, var->bound) - sigma_i;
+  mu_i = var.func_fp(var, var.bound) - sigma_i;
   if (mu_i < 0.0)
     return 0.0;
   return mu_i;
 }
 
-static double dual_objective(xbt_swag_t var_list, xbt_swag_t cnst_list)
+template <class VarList, class CnstList>
+static double dual_objective(const VarList& var_list, const CnstList& cnst_list)
 {
-  void* _cnst;
-  void* _var;
-  lmm_constraint_t cnst = nullptr;
-  lmm_variable_t var    = nullptr;
-
   double obj = 0.0;
 
-  xbt_swag_foreach(_var, var_list)
-  {
-    var            = static_cast<lmm_variable_t>(_var);
+  for (s_lmm_variable_t const& var : var_list) {
     double sigma_i = 0.0;
 
-    if (not var->sharing_weight)
+    if (not var.sharing_weight)
       break;
 
-    for (s_lmm_element_t const& elem : var->cnsts)
+    for (s_lmm_element_t const& elem : var.cnsts)
       sigma_i += elem.constraint->lambda;
 
-    if (var->bound > 0)
-      sigma_i += var->mu;
+    if (var.bound > 0)
+      sigma_i += var.mu;
 
-    XBT_DEBUG("var %p : sigma_i = %1.20f", var, sigma_i);
+    XBT_DEBUG("var %p : sigma_i = %1.20f", &var, sigma_i);
 
-    obj += var->func_f(var, var->func_fpi(var, sigma_i)) - sigma_i * var->func_fpi(var, sigma_i);
+    obj += var.func_f(var, var.func_fpi(var, sigma_i)) - sigma_i * var.func_fpi(var, sigma_i);
 
-    if (var->bound > 0)
-      obj += var->mu * var->bound;
+    if (var.bound > 0)
+      obj += var.mu * var.bound;
   }
 
-  xbt_swag_foreach(_cnst, cnst_list)
-  {
-    cnst = static_cast<lmm_constraint_t>(_cnst);
-    obj += cnst->lambda * cnst->bound;
-  }
+  for (s_lmm_constraint_t const& cnst : cnst_list)
+    obj += cnst.lambda * cnst.bound;
 
   return obj;
 }
@@ -183,44 +160,38 @@ void lagrange_solve(lmm_system_t sys)
     return;
 
   /* Initialize lambda. */
-  xbt_swag_t cnst_list = &(sys->active_constraint_set);
-  void* _cnst;
-  xbt_swag_foreach(_cnst, cnst_list)
-  {
-    lmm_constraint_t cnst = (lmm_constraint_t)_cnst;
-    cnst->lambda          = 1.0;
-    cnst->new_lambda      = 2.0;
-    XBT_DEBUG("#### cnst(%p)->lambda :  %e", cnst, cnst->lambda);
+  auto& cnst_list = sys->active_constraint_set;
+  for (s_lmm_constraint_t& cnst : cnst_list) {
+    cnst.lambda     = 1.0;
+    cnst.new_lambda = 2.0;
+    XBT_DEBUG("#### cnst(%p)->lambda :  %e", &cnst, cnst.lambda);
   }
 
   /*
    * Initialize the var list variable with only the active variables.
    * Associate an index in the swag variables. Initialize mu.
    */
-  xbt_swag_t var_list = &(sys->variable_set);
-  void* _var;
-  xbt_swag_foreach(_var, var_list)
-  {
-    lmm_variable_t var = static_cast<lmm_variable_t>(_var);
-    if (not var->sharing_weight)
-      var->value = 0.0;
+  auto& var_list = sys->variable_set;
+  for (s_lmm_variable_t& var : var_list) {
+    if (not var.sharing_weight)
+      var.value = 0.0;
     else {
-      if (var->bound < 0.0) {
-        XBT_DEBUG("#### NOTE var(%p) is a boundless variable", var);
-        var->mu = -1.0;
+      if (var.bound < 0.0) {
+        XBT_DEBUG("#### NOTE var(%p) is a boundless variable", &var);
+        var.mu = -1.0;
       } else {
-        var->mu     = 1.0;
-        var->new_mu = 2.0;
+        var.mu     = 1.0;
+        var.new_mu = 2.0;
       }
-      var->value = new_value(var);
-      XBT_DEBUG("#### var(%p) ->weight :  %e", var, var->sharing_weight);
-      XBT_DEBUG("#### var(%p) ->mu :  %e", var, var->mu);
-      XBT_DEBUG("#### var(%p) ->weight: %e", var, var->sharing_weight);
-      XBT_DEBUG("#### var(%p) ->bound: %e", var, var->bound);
-      auto weighted = std::find_if(begin(var->cnsts), end(var->cnsts),
+      var.value = new_value(var);
+      XBT_DEBUG("#### var(%p) ->weight :  %e", &var, var.sharing_weight);
+      XBT_DEBUG("#### var(%p) ->mu :  %e", &var, var.mu);
+      XBT_DEBUG("#### var(%p) ->weight: %e", &var, var.sharing_weight);
+      XBT_DEBUG("#### var(%p) ->bound: %e", &var, var.bound);
+      auto weighted = std::find_if(begin(var.cnsts), end(var.cnsts),
                                    [](s_lmm_element_t const& x) { return x.consumption_weight != 0.0; });
-      if (weighted == end(var->cnsts))
-        var->value = 1.0;
+      if (weighted == end(var.cnsts))
+        var.value = 1.0;
     }
   }
 
@@ -235,14 +206,12 @@ void lagrange_solve(lmm_system_t sys)
     XBT_DEBUG("-------------- Gradient Descent ----------");
 
     /* Improve the value of mu_i */
-    xbt_swag_foreach(_var, var_list)
-    {
-      lmm_variable_t var = static_cast<lmm_variable_t>(_var);
-      if (var->sharing_weight && var->bound >= 0) {
-        XBT_DEBUG("Working on var (%p)", var);
-        var->new_mu = new_mu(var);
-        XBT_DEBUG("Updating mu : var->mu (%p) : %1.20f -> %1.20f", var, var->mu, var->new_mu);
-        var->mu = var->new_mu;
+    for (s_lmm_variable_t& var : var_list) {
+      if (var.sharing_weight && var.bound >= 0) {
+        XBT_DEBUG("Working on var (%p)", &var);
+        var.new_mu = new_mu(var);
+        XBT_DEBUG("Updating mu : var->mu (%p) : %1.20f -> %1.20f", &var, var.mu, var.new_mu);
+        var.mu = var.new_mu;
 
         double new_obj = dual_objective(var_list, cnst_list);
         XBT_DEBUG("Improvement for Objective (%g -> %g) : %g", obj, new_obj, obj - new_obj);
@@ -252,13 +221,11 @@ void lagrange_solve(lmm_system_t sys)
     }
 
     /* Improve the value of lambda_i */
-    xbt_swag_foreach(_cnst, cnst_list)
-    {
-      lmm_constraint_t cnst = static_cast<lmm_constraint_t>(_cnst);
-      XBT_DEBUG("Working on cnst (%p)", cnst);
-      cnst->new_lambda = dichotomy(cnst->lambda, partial_diff_lambda, cnst, dichotomy_min_error);
-      XBT_DEBUG("Updating lambda : cnst->lambda (%p) : %1.20f -> %1.20f", cnst, cnst->lambda, cnst->new_lambda);
-      cnst->lambda = cnst->new_lambda;
+    for (s_lmm_constraint_t& cnst : cnst_list) {
+      XBT_DEBUG("Working on cnst (%p)", &cnst);
+      cnst.new_lambda = dichotomy(cnst.lambda, partial_diff_lambda, cnst, dichotomy_min_error);
+      XBT_DEBUG("Updating lambda : cnst->lambda (%p) : %1.20f -> %1.20f", &cnst, cnst.lambda, cnst.new_lambda);
+      cnst.lambda = cnst.new_lambda;
 
       double new_obj = dual_objective(var_list, cnst_list);
       XBT_DEBUG("Improvement for Objective (%g -> %g) : %g", obj, new_obj, obj - new_obj);
@@ -269,18 +236,16 @@ void lagrange_solve(lmm_system_t sys)
     /* Now computes the values of each variable (\rho) based on the values of \lambda and \mu. */
     XBT_DEBUG("-------------- Check convergence ----------");
     overall_modification = 0;
-    xbt_swag_foreach(_var, var_list)
-    {
-      lmm_variable_t var = static_cast<lmm_variable_t>(_var);
-      if (var->sharing_weight <= 0)
-        var->value = 0.0;
+    for (s_lmm_variable_t& var : var_list) {
+      if (var.sharing_weight <= 0)
+        var.value = 0.0;
       else {
         double tmp = new_value(var);
 
-        overall_modification = std::max(overall_modification, fabs(var->value - tmp));
+        overall_modification = std::max(overall_modification, fabs(var.value - tmp));
 
-        var->value = tmp;
-        XBT_DEBUG("New value of var (%p)  = %e, overall_modification = %e", var, var->value, overall_modification);
+        var.value = tmp;
+        XBT_DEBUG("New value of var (%p)  = %e, overall_modification = %e", &var, var.value, overall_modification);
       }
     }
 
@@ -315,7 +280,8 @@ void lagrange_solve(lmm_system_t sys)
  *
  * @return a double corresponding to the result of the dichotomy process
  */
-static double dichotomy(double init, double diff(double, void*), void* var_cnst, double min_error)
+static double dichotomy(double init, double diff(double, const s_lmm_constraint_t&), const s_lmm_constraint_t& cnst,
+                        double min_error)
 {
   double min = init;
   double max = init;
@@ -333,15 +299,15 @@ static double dichotomy(double init, double diff(double, void*), void* var_cnst,
 
   overall_error = 1;
 
-  diff_0 = diff(1e-16, var_cnst);
+  diff_0 = diff(1e-16, cnst);
   if (diff_0 >= 0) {
     XBT_CDEBUG(surf_lagrange_dichotomy, "returning 0.0 (diff = %e)", diff_0);
     XBT_OUT();
     return 0.0;
   }
 
-  double min_diff = diff(min, var_cnst);
-  double max_diff = diff(max, var_cnst);
+  double min_diff = diff(min, cnst);
+  double max_diff = diff(max, cnst);
 
   while (overall_error > min_error) {
     XBT_CDEBUG(surf_lagrange_dichotomy, "[min, max] = [%1.20f, %1.20f] || diffmin, diffmax = %1.20f, %1.20f", min, max,
@@ -351,7 +317,7 @@ static double dichotomy(double init, double diff(double, void*), void* var_cnst,
       if (min == max) {
         XBT_CDEBUG(surf_lagrange_dichotomy, "Decreasing min");
         min      = min / 2.0;
-        min_diff = diff(min, var_cnst);
+        min_diff = diff(min, cnst);
       } else {
         XBT_CDEBUG(surf_lagrange_dichotomy, "Decreasing max");
         max      = min;
@@ -361,7 +327,7 @@ static double dichotomy(double init, double diff(double, void*), void* var_cnst,
       if (min == max) {
         XBT_CDEBUG(surf_lagrange_dichotomy, "Increasing max");
         max      = max * 2.0;
-        max_diff = diff(max, var_cnst);
+        max_diff = diff(max, cnst);
       } else {
         XBT_CDEBUG(surf_lagrange_dichotomy, "Increasing min");
         min      = max;
@@ -378,7 +344,7 @@ static double dichotomy(double init, double diff(double, void*), void* var_cnst,
                   min, max - min, min_diff, max_diff);
         break;
       }
-      middle_diff = diff(middle, var_cnst);
+      middle_diff = diff(middle, cnst);
 
       if (middle_diff < 0) {
         XBT_CDEBUG(surf_lagrange_dichotomy, "Increasing min");
@@ -415,44 +381,38 @@ static double dichotomy(double init, double diff(double, void*), void* var_cnst,
   return ((min + max) / 2.0);
 }
 
-static double partial_diff_lambda(double lambda, void* param_cnst)
+static double partial_diff_lambda(double lambda, const s_lmm_constraint_t& cnst)
 {
-  lmm_constraint_t cnst = static_cast<lmm_constraint_t>(param_cnst);
   double diff           = 0.0;
 
   XBT_IN();
 
-  XBT_CDEBUG(surf_lagrange_dichotomy, "Computing diff of cnst (%p)", cnst);
+  XBT_CDEBUG(surf_lagrange_dichotomy, "Computing diff of cnst (%p)", &cnst);
 
-  xbt_swag_t elem_list = &(cnst->enabled_element_set);
-  void* _elem;
-  xbt_swag_foreach(_elem, elem_list)
-  {
-    lmm_element_t elem = static_cast<lmm_element_t>(_elem);
-    lmm_variable_t var = elem->variable;
-    xbt_assert(var->sharing_weight > 0);
-    XBT_CDEBUG(surf_lagrange_dichotomy, "Computing sigma_i for var (%p)", var);
+  for (s_lmm_element_t const& elem : cnst.enabled_element_set) {
+    s_lmm_variable_t& var = *elem.variable;
+    xbt_assert(var.sharing_weight > 0);
+    XBT_CDEBUG(surf_lagrange_dichotomy, "Computing sigma_i for var (%p)", &var);
     // Initialize the summation variable
     double sigma_i = 0.0;
 
     // Compute sigma_i
-    for (s_lmm_element_t const& elem : var->cnsts) {
-      sigma_i += elem.constraint->lambda;
-    }
+    for (s_lmm_element_t const& elem2 : var.cnsts)
+      sigma_i += elem2.constraint->lambda;
 
     // add mu_i if this flow has a RTT constraint associated
-    if (var->bound > 0)
-      sigma_i += var->mu;
+    if (var.bound > 0)
+      sigma_i += var.mu;
 
-    // replace value of cnst->lambda by the value of parameter lambda
-    sigma_i = (sigma_i - cnst->lambda) + lambda;
+    // replace value of cnst.lambda by the value of parameter lambda
+    sigma_i = (sigma_i - cnst.lambda) + lambda;
 
-    diff += -var->func_fpi(var, sigma_i);
+    diff += -var.func_fpi(var, sigma_i);
   }
 
-  diff += cnst->bound;
+  diff += cnst.bound;
 
-  XBT_CDEBUG(surf_lagrange_dichotomy, "d D/d lambda for cnst (%p) at %1.20f = %1.20f", cnst, lambda, diff);
+  XBT_CDEBUG(surf_lagrange_dichotomy, "d D/d lambda for cnst (%p) at %1.20f = %1.20f", &cnst, lambda, diff);
   XBT_OUT();
   return diff;
 }
@@ -465,9 +425,9 @@ static double partial_diff_lambda(double lambda, void* param_cnst)
  *  programming.
  *
  */
-void lmm_set_default_protocol_function(double (*func_f)(lmm_variable_t var, double x),
-                                       double (*func_fp)(lmm_variable_t var, double x),
-                                       double (*func_fpi)(lmm_variable_t var, double x))
+void lmm_set_default_protocol_function(double (*func_f)(const s_lmm_variable_t& var, double x),
+                                       double (*func_fp)(const s_lmm_variable_t& var, double x),
+                                       double (*func_fpi)(const s_lmm_variable_t& var, double x))
 {
   func_f_def   = func_f;
   func_fp_def  = func_fp;
@@ -482,22 +442,22 @@ void lmm_set_default_protocol_function(double (*func_f)(lmm_variable_t var, doub
  * Therefore: $fp(x) = \frac{\alpha D_f}{x}$
  * Therefore: $fpi(x) = \frac{\alpha D_f}{x}$
  */
-double func_vegas_f(lmm_variable_t var, double x)
+double func_vegas_f(const s_lmm_variable_t& var, double x)
 {
   xbt_assert(x > 0.0, "Don't call me with stupid values! (%1.20f)", x);
-  return VEGAS_SCALING * var->sharing_weight * log(x);
+  return VEGAS_SCALING * var.sharing_weight * log(x);
 }
 
-double func_vegas_fp(lmm_variable_t var, double x)
+double func_vegas_fp(const s_lmm_variable_t& var, double x)
 {
   xbt_assert(x > 0.0, "Don't call me with stupid values! (%1.20f)", x);
-  return VEGAS_SCALING * var->sharing_weight / x;
+  return VEGAS_SCALING * var.sharing_weight / x;
 }
 
-double func_vegas_fpi(lmm_variable_t var, double x)
+double func_vegas_fpi(const s_lmm_variable_t& var, double x)
 {
   xbt_assert(x > 0.0, "Don't call me with stupid values! (%1.20f)", x);
-  return var->sharing_weight / (x / VEGAS_SCALING);
+  return var.sharing_weight / (x / VEGAS_SCALING);
 }
 
 /*
@@ -505,27 +465,27 @@ double func_vegas_fpi(lmm_variable_t var, double x)
  * Therefore: $fp(x)  = \frac{3}{3 D_f^2 x^2+2}$
  * Therefore: $fpi(x)  = \sqrt{\frac{1}{{D_f}^2 x} - \frac{2}{3{D_f}^2}}$
  */
-double func_reno_f(lmm_variable_t var, double x)
+double func_reno_f(const s_lmm_variable_t& var, double x)
 {
-  xbt_assert(var->sharing_weight > 0.0, "Don't call me with stupid values!");
+  xbt_assert(var.sharing_weight > 0.0, "Don't call me with stupid values!");
 
-  return RENO_SCALING * sqrt(3.0 / 2.0) / var->sharing_weight * atan(sqrt(3.0 / 2.0) * var->sharing_weight * x);
+  return RENO_SCALING * sqrt(3.0 / 2.0) / var.sharing_weight * atan(sqrt(3.0 / 2.0) * var.sharing_weight * x);
 }
 
-double func_reno_fp(lmm_variable_t var, double x)
+double func_reno_fp(const s_lmm_variable_t& var, double x)
 {
-  return RENO_SCALING * 3.0 / (3.0 * var->sharing_weight * var->sharing_weight * x * x + 2.0);
+  return RENO_SCALING * 3.0 / (3.0 * var.sharing_weight * var.sharing_weight * x * x + 2.0);
 }
 
-double func_reno_fpi(lmm_variable_t var, double x)
+double func_reno_fpi(const s_lmm_variable_t& var, double x)
 {
   double res_fpi;
 
-  xbt_assert(var->sharing_weight > 0.0, "Don't call me with stupid values!");
+  xbt_assert(var.sharing_weight > 0.0, "Don't call me with stupid values!");
   xbt_assert(x > 0.0, "Don't call me with stupid values!");
 
-  res_fpi = 1.0 / (var->sharing_weight * var->sharing_weight * (x / RENO_SCALING)) -
-            2.0 / (3.0 * var->sharing_weight * var->sharing_weight);
+  res_fpi = 1.0 / (var.sharing_weight * var.sharing_weight * (x / RENO_SCALING)) -
+            2.0 / (3.0 * var.sharing_weight * var.sharing_weight);
   if (res_fpi <= 0.0)
     return 0.0;
   return sqrt(res_fpi);
@@ -536,22 +496,22 @@ double func_reno_fpi(lmm_variable_t var, double x)
  * Therefore:   $fp(x)  = 2/(Weight*x + 2)
  * Therefore:   $fpi(x) = (2*Weight)/x - 4
  */
-double func_reno2_f(lmm_variable_t var, double x)
+double func_reno2_f(const s_lmm_variable_t& var, double x)
 {
-  xbt_assert(var->sharing_weight > 0.0, "Don't call me with stupid values!");
-  return RENO2_SCALING * (1.0 / var->sharing_weight) *
-         log((x * var->sharing_weight) / (2.0 * x * var->sharing_weight + 3.0));
+  xbt_assert(var.sharing_weight > 0.0, "Don't call me with stupid values!");
+  return RENO2_SCALING * (1.0 / var.sharing_weight) *
+         log((x * var.sharing_weight) / (2.0 * x * var.sharing_weight + 3.0));
 }
 
-double func_reno2_fp(lmm_variable_t var, double x)
+double func_reno2_fp(const s_lmm_variable_t& var, double x)
 {
-  return RENO2_SCALING * 3.0 / (var->sharing_weight * x * (2.0 * var->sharing_weight * x + 3.0));
+  return RENO2_SCALING * 3.0 / (var.sharing_weight * x * (2.0 * var.sharing_weight * x + 3.0));
 }
 
-double func_reno2_fpi(lmm_variable_t var, double x)
+double func_reno2_fpi(const s_lmm_variable_t& var, double x)
 {
   xbt_assert(x > 0.0, "Don't call me with stupid values!");
-  double tmp     = x * var->sharing_weight * var->sharing_weight;
+  double tmp     = x * var.sharing_weight * var.sharing_weight;
   double res_fpi = tmp * (9.0 * x + 24.0);
 
   if (res_fpi <= 0.0)
index 153707a..7606426 100644 (file)
@@ -62,59 +62,47 @@ void s_lmm_element_t::increase_concurrency()
              "Concurrency limit overflow!");
 }
 
-void s_lmm_system_t::check_concurrency()
+void s_lmm_system_t::check_concurrency() const
 {
   // These checks are very expensive, so do them only if we want to debug SURF LMM
   if (not XBT_LOG_ISENABLED(surf_maxmin, xbt_log_priority_debug))
     return;
 
-  void* cnstIt;
-  xbt_swag_foreach(cnstIt, &constraint_set)
-  {
-    lmm_constraint_t cnst = (lmm_constraint_t)cnstIt;
+  for (s_lmm_constraint_t const& cnst : constraint_set) {
     int concurrency       = 0;
-    void* elemIt;
-    xbt_swag_foreach(elemIt, &(cnst->enabled_element_set))
-    {
-      lmm_element_t elem = (lmm_element_t)elemIt;
-      xbt_assert(elem->variable->sharing_weight > 0);
-      concurrency += elem->get_concurrency();
+    for (s_lmm_element_t const& elem : cnst.enabled_element_set) {
+      xbt_assert(elem.variable->sharing_weight > 0);
+      concurrency += elem.get_concurrency();
     }
 
-    xbt_swag_foreach(elemIt, &(cnst->disabled_element_set))
-    {
-      lmm_element_t elem = (lmm_element_t)elemIt;
+    for (s_lmm_element_t const& elem : cnst.disabled_element_set) {
       // We should have staged variables only if concurrency is reached in some constraint
-      xbt_assert(cnst->get_concurrency_limit() < 0 || elem->variable->staged_weight == 0 ||
-                     elem->variable->get_min_concurrency_slack() < elem->variable->concurrency_share,
+      xbt_assert(cnst.get_concurrency_limit() < 0 || elem.variable->staged_weight == 0 ||
+                     elem.variable->get_min_concurrency_slack() < elem.variable->concurrency_share,
                  "should not have staged variable!");
     }
 
-    xbt_assert(cnst->get_concurrency_limit() < 0 || cnst->get_concurrency_limit() >= concurrency,
+    xbt_assert(cnst.get_concurrency_limit() < 0 || cnst.get_concurrency_limit() >= concurrency,
                "concurrency check failed!");
-    xbt_assert(cnst->concurrency_current == concurrency, "concurrency_current is out-of-date!");
+    xbt_assert(cnst.concurrency_current == concurrency, "concurrency_current is out-of-date!");
   }
 
   // Check that for each variable, all corresponding elements are in the same state (i.e. same element sets)
-  void* varIt;
-  xbt_swag_foreach(varIt, &variable_set)
-  {
-    lmm_variable_t var = (lmm_variable_t)varIt;
-
-    if (var->cnsts.empty())
+  for (s_lmm_variable_t const& var : variable_set) {
+    if (var.cnsts.empty())
       continue;
 
-    lmm_element_t elem     = &var->cnsts[0];
-    int belong_to_enabled  = xbt_swag_belongs(elem, &(elem->constraint->enabled_element_set));
-    int belong_to_disabled = xbt_swag_belongs(elem, &(elem->constraint->disabled_element_set));
-    int belong_to_active   = xbt_swag_belongs(elem, &(elem->constraint->active_element_set));
+    const s_lmm_element_t& elem = var.cnsts[0];
+    int belong_to_enabled       = elem.enabled_element_set_hook.is_linked();
+    int belong_to_disabled      = elem.disabled_element_set_hook.is_linked();
+    int belong_to_active        = elem.active_element_set_hook.is_linked();
 
-    for (s_lmm_element_t const& elem : var->cnsts) {
-      xbt_assert(belong_to_enabled == xbt_swag_belongs(&elem, &(elem.constraint->enabled_element_set)),
+    for (s_lmm_element_t const& elem2 : var.cnsts) {
+      xbt_assert(belong_to_enabled == elem2.enabled_element_set_hook.is_linked(),
                  "Variable inconsistency (1): enabled_element_set");
-      xbt_assert(belong_to_disabled == xbt_swag_belongs(&elem, &(elem.constraint->disabled_element_set)),
+      xbt_assert(belong_to_disabled == elem2.disabled_element_set_hook.is_linked(),
                  "Variable inconsistency (2): disabled_element_set");
-      xbt_assert(belong_to_active == xbt_swag_belongs(&elem, &(elem.constraint->active_element_set)),
+      xbt_assert(belong_to_active == elem2.active_element_set_hook.is_linked(),
                  "Variable inconsistency (3): active_element_set");
     }
   }
@@ -133,11 +121,19 @@ void s_lmm_system_t::var_free(lmm_variable_t var)
   for (s_lmm_element_t& elem : var->cnsts) {
     if (var->sharing_weight > 0)
       elem.decrease_concurrency();
-    xbt_swag_remove(&elem, &(elem.constraint->enabled_element_set));
-    xbt_swag_remove(&elem, &(elem.constraint->disabled_element_set));
-    xbt_swag_remove(&elem, &(elem.constraint->active_element_set));
-    int nelements = xbt_swag_size(&(elem.constraint->enabled_element_set)) +
-                    xbt_swag_size(&(elem.constraint->disabled_element_set));
+    if (elem.enabled_element_set_hook.is_linked()) {
+      auto& set = elem.constraint->enabled_element_set;
+      set.erase(set.iterator_to(elem));
+    }
+    if (elem.disabled_element_set_hook.is_linked()) {
+      auto& set = elem.constraint->disabled_element_set;
+      set.erase(set.iterator_to(elem));
+    }
+    if (elem.active_element_set_hook.is_linked()) {
+      auto& set = elem.constraint->active_element_set;
+      set.erase(set.iterator_to(elem));
+    }
+    int nelements = elem.constraint->enabled_element_set.size() + elem.constraint->disabled_element_set.size();
     if (nelements == 0)
       make_constraint_inactive(elem.constraint);
     else
@@ -162,15 +158,6 @@ s_lmm_system_t::s_lmm_system_t(bool selective_update) : selective_update_active(
 
   XBT_DEBUG("Setting selective_update_active flag to %d", selective_update_active);
 
-  xbt_swag_init(&variable_set, xbt_swag_offset(var, variable_set_hookup));
-  xbt_swag_init(&constraint_set, xbt_swag_offset(cnst, constraint_set_hookup));
-
-  xbt_swag_init(&active_constraint_set, xbt_swag_offset(cnst, active_constraint_set_hookup));
-
-  xbt_swag_init(&modified_constraint_set, xbt_swag_offset(cnst, modified_constraint_set_hookup));
-  xbt_swag_init(&saturated_variable_set, xbt_swag_offset(var, saturated_variable_set_hookup));
-  xbt_swag_init(&saturated_constraint_set, xbt_swag_offset(cnst, saturated_constraint_set_hookup));
-
   keep_track          = nullptr;
   variable_mallocator = xbt_mallocator_new(65536, s_lmm_system_t::variable_mallocator_new_f,
                                            s_lmm_system_t::variable_mallocator_free_f, nullptr);
@@ -205,9 +192,6 @@ s_lmm_constraint_t::s_lmm_constraint_t(void* id_value, double bound_value) : bou
   s_lmm_element_t elem;
 
   id_int = Global_debug_id++;
-  xbt_swag_init(&enabled_element_set, xbt_swag_offset(elem, enabled_element_set_hookup));
-  xbt_swag_init(&disabled_element_set, xbt_swag_offset(elem, disabled_element_set_hookup));
-  xbt_swag_init(&active_element_set, xbt_swag_offset(elem, active_element_set_hookup));
 
   remaining           = 0.0;
   usage               = 0.0;
@@ -246,9 +230,9 @@ lmm_variable_t s_lmm_system_t::variable_new(simgrid::surf::Action* id, double sh
   lmm_variable_t var = static_cast<lmm_variable_t>(xbt_mallocator_get(variable_mallocator));
   var->initialize(id, sharing_weight, bound, number_of_constraints, visited_counter - 1);
   if (sharing_weight)
-    xbt_swag_insert_at_head(var, &variable_set);
+    variable_set.push_front(*var);
   else
-    xbt_swag_insert_at_tail(var, &variable_set);
+    variable_set.push_back(*var);
 
   XBT_OUT(" returns %p", var);
   return var;
@@ -269,7 +253,7 @@ void s_lmm_system_t::expand(lmm_constraint_t cnst, lmm_variable_t var, double co
   int current_share = 0;
   if (var->concurrency_share > 1) {
     for (s_lmm_element_t& elem : var->cnsts) {
-      if (elem.constraint == cnst && xbt_swag_belongs(&elem, &(elem.constraint->enabled_element_set)))
+      if (elem.constraint == cnst && elem.enabled_element_set_hook.is_linked())
         current_share += elem.get_concurrency();
     }
   }
@@ -295,10 +279,10 @@ void s_lmm_system_t::expand(lmm_constraint_t cnst, lmm_variable_t var, double co
   elem.variable           = var;
 
   if (var->sharing_weight) {
-    xbt_swag_insert_at_head(&elem, &(elem.constraint->enabled_element_set));
+    elem.constraint->enabled_element_set.push_front(elem);
     elem.increase_concurrency();
   } else
-    xbt_swag_insert_at_tail(&elem, &(elem.constraint->disabled_element_set));
+    elem.constraint->disabled_element_set.push_back(elem);
 
   if (not selective_update_active) {
     make_constraint_active(cnst);
@@ -351,23 +335,31 @@ void s_lmm_system_t::expand_add(lmm_constraint_t cnst, lmm_variable_t var, doubl
   check_concurrency();
 }
 
-lmm_variable_t s_lmm_constraint_t::get_variable(lmm_element_t* elem) const
+lmm_variable_t s_lmm_constraint_t::get_variable(const_lmm_element_t* elem) const
 {
   if (*elem == nullptr) {
     // That is the first call, pick the first element among enabled_element_set (or disabled_element_set if
     // enabled_element_set is empty)
-    *elem = (lmm_element_t)xbt_swag_getFirst(&enabled_element_set);
-    if (*elem == nullptr)
-      *elem = (lmm_element_t)xbt_swag_getFirst(&disabled_element_set);
+    if (not enabled_element_set.empty())
+      *elem = &enabled_element_set.front();
+    else if (not disabled_element_set.empty())
+      *elem = &disabled_element_set.front();
+    else
+      *elem = nullptr;
   } else {
     // elem is not null, so we carry on
-    if (xbt_swag_belongs(*elem, &enabled_element_set)) {
+    if ((*elem)->enabled_element_set_hook.is_linked()) {
       // Look at enabled_element_set, and jump to disabled_element_set when finished
-      *elem = (lmm_element_t)xbt_swag_getNext(*elem, enabled_element_set.offset);
-      if (*elem == nullptr)
-        *elem = (lmm_element_t)xbt_swag_getFirst(&disabled_element_set);
+      auto iter = std::next(enabled_element_set.iterator_to(**elem));
+      if (iter != std::end(enabled_element_set))
+        *elem = &*iter;
+      else if (not disabled_element_set.empty())
+        *elem = &disabled_element_set.front();
+      else
+        *elem = nullptr;
     } else {
-      *elem = (lmm_element_t)xbt_swag_getNext(*elem, disabled_element_set.offset);
+      auto iter = std::next(disabled_element_set.iterator_to(**elem));
+      *elem     = iter != std::end(disabled_element_set) ? &*iter : nullptr;
     }
   }
   if (*elem)
@@ -376,15 +368,19 @@ lmm_variable_t s_lmm_constraint_t::get_variable(lmm_element_t* elem) const
     return nullptr;
 }
 
-// if we modify the swag between calls, normal version may loop forever
-// this safe version ensures that we browse the swag elements only once
-lmm_variable_t s_lmm_constraint_t::get_variable_safe(lmm_element_t* elem, lmm_element_t* nextelem, int* numelem) const
+// if we modify the list between calls, normal version may loop forever
+// this safe version ensures that we browse the list elements only once
+lmm_variable_t s_lmm_constraint_t::get_variable_safe(const_lmm_element_t* elem, const_lmm_element_t* nextelem,
+                                                     int* numelem) const
 {
   if (*elem == nullptr) {
-    *elem    = (lmm_element_t)xbt_swag_getFirst(&enabled_element_set);
-    *numelem = xbt_swag_size(&enabled_element_set) + xbt_swag_size(&disabled_element_set) - 1;
-    if (*elem == nullptr)
-      *elem = (lmm_element_t)xbt_swag_getFirst(&disabled_element_set);
+    *numelem = enabled_element_set.size() + disabled_element_set.size() - 1;
+    if (not enabled_element_set.empty())
+      *elem = &enabled_element_set.front();
+    else if (not disabled_element_set.empty())
+      *elem = &disabled_element_set.front();
+    else
+      *elem = nullptr;
   } else {
     *elem = *nextelem;
     if (*numelem > 0) {
@@ -394,13 +390,18 @@ lmm_variable_t s_lmm_constraint_t::get_variable_safe(lmm_element_t* elem, lmm_el
   }
   if (*elem) {
     // elem is not null, so we carry on
-    if (xbt_swag_belongs(*elem, &enabled_element_set)) {
+    if ((*elem)->enabled_element_set_hook.is_linked()) {
       // Look at enabled_element_set, and jump to disabled_element_set when finished
-      *nextelem = (lmm_element_t)xbt_swag_getNext(*elem, enabled_element_set.offset);
-      if (*nextelem == nullptr)
-        *nextelem = (lmm_element_t)xbt_swag_getFirst(&disabled_element_set);
+      auto iter = std::next(enabled_element_set.iterator_to(**elem));
+      if (iter != std::end(enabled_element_set))
+        *elem = &*iter;
+      else if (not disabled_element_set.empty())
+        *elem = &disabled_element_set.front();
+      else
+        *elem = nullptr;
     } else {
-      *nextelem = (lmm_element_t)xbt_swag_getNext(*elem, disabled_element_set.offset);
+      auto iter = std::next(disabled_element_set.iterator_to(**elem));
+      *elem     = iter != std::end(disabled_element_set) ? &*iter : nullptr;
     }
     return (*elem)->variable;
   } else
@@ -427,165 +428,140 @@ static inline void saturated_variable_set_update(s_lmm_constraint_light_t* cnst_
   /* Add active variables (i.e. variables that need to be set) from the set of constraints to saturate
    * (cnst_light_tab)*/
   for (int const& saturated_cnst : saturated_constraints) {
-    lmm_constraint_light_t cnst = &cnst_light_tab[saturated_cnst];
-    void* _elem;
-    xbt_swag_t elem_list = &(cnst->cnst->active_element_set);
-    xbt_swag_foreach(_elem, elem_list)
-    {
-      lmm_element_t elem = (lmm_element_t)_elem;
+    s_lmm_constraint_light_t& cnst = cnst_light_tab[saturated_cnst];
+    for (s_lmm_element_t const& elem : cnst.cnst->active_element_set) {
       // Visiting active_element_set, so, by construction, should never get a zero weight, correct?
-      xbt_assert(elem->variable->sharing_weight > 0);
-      if (elem->consumption_weight > 0)
-        xbt_swag_insert(elem->variable, &(sys->saturated_variable_set));
+      xbt_assert(elem.variable->sharing_weight > 0);
+      if (elem.consumption_weight > 0 && not elem.variable->saturated_variable_set_hook.is_linked())
+        sys->saturated_variable_set.push_back(*elem.variable);
     }
   }
 }
 
-static void format_lmm_element_swag(xbt_swag_t elem_list, int sharing_policy, double& sum, std::string& buf)
+template <class ElemList>
+static void format_lmm_element_list(const ElemList& elem_list, int sharing_policy, double& sum, std::string& buf)
 {
-  void* _elem;
-  xbt_swag_foreach(_elem, elem_list)
-  {
-    lmm_element_t elem = (lmm_element_t)_elem;
-    buf += std::to_string(elem->consumption_weight) + ".'" + std::to_string(elem->variable->id_int) + "'(" +
-           std::to_string(elem->variable->value) + ")" + (sharing_policy ? " + " : " , ");
+  for (s_lmm_element_t const& elem : elem_list) {
+    buf += std::to_string(elem.consumption_weight) + ".'" + std::to_string(elem.variable->id_int) + "'(" +
+           std::to_string(elem.variable->value) + ")" + (sharing_policy ? " + " : " , ");
     if (sharing_policy)
-      sum += elem->consumption_weight * elem->variable->value;
+      sum += elem.consumption_weight * elem.variable->value;
     else
-      sum = std::max(sum, elem->consumption_weight * elem->variable->value);
+      sum = std::max(sum, elem.consumption_weight * elem.variable->value);
   }
 }
 
-void s_lmm_system_t::print()
+void s_lmm_system_t::print() const
 {
   std::string buf = std::string("MAX-MIN ( ");
-  void* _var;
 
   /* Printing Objective */
-  xbt_swag_t var_list = &variable_set;
-  xbt_swag_foreach(_var, var_list)
-  {
-    lmm_variable_t var = (lmm_variable_t)_var;
-    buf                = buf + "'" + std::to_string(var->id_int) + "'(" + std::to_string(var->sharing_weight) + ") ";
-  }
+  for (s_lmm_variable_t const& var : variable_set)
+    buf += "'" + std::to_string(var.id_int) + "'(" + std::to_string(var.sharing_weight) + ") ";
   buf += ")";
   XBT_DEBUG("%20s", buf.c_str());
   buf.clear();
 
   XBT_DEBUG("Constraints");
   /* Printing Constraints */
-  void* _cnst;
-  xbt_swag_t cnst_list = &active_constraint_set;
-  xbt_swag_foreach(_cnst, cnst_list)
-  {
-    lmm_constraint_t cnst = (lmm_constraint_t)_cnst;
+  for (s_lmm_constraint_t const& cnst : active_constraint_set) {
     double sum            = 0.0;
     // Show  the enabled variables
     buf += "\t";
-    buf += ((cnst->sharing_policy) ? "(" : "max(");
-    format_lmm_element_swag(&cnst->enabled_element_set, cnst->sharing_policy, sum, buf);
+    buf += cnst.sharing_policy ? "(" : "max(";
+    format_lmm_element_list(cnst.enabled_element_set, cnst.sharing_policy, sum, buf);
     // TODO: Adding disabled elements only for test compatibility, but do we really want them to be printed?
-    format_lmm_element_swag(&cnst->disabled_element_set, cnst->sharing_policy, sum, buf);
+    format_lmm_element_list(cnst.disabled_element_set, cnst.sharing_policy, sum, buf);
 
-    buf = buf + "0) <= " + std::to_string(cnst->bound) + " ('" + std::to_string(cnst->id_int) + "')";
+    buf += "0) <= " + std::to_string(cnst.bound) + " ('" + std::to_string(cnst.id_int) + "')";
 
-    if (not cnst->sharing_policy) {
+    if (not cnst.sharing_policy) {
       buf += " [MAX-Constraint]";
     }
     XBT_DEBUG("%s", buf.c_str());
     buf.clear();
-    xbt_assert(not double_positive(sum - cnst->bound, cnst->bound * sg_maxmin_precision),
-               "Incorrect value (%f is not smaller than %f): %g", sum, cnst->bound, sum - cnst->bound);
+    xbt_assert(not double_positive(sum - cnst.bound, cnst.bound * sg_maxmin_precision),
+               "Incorrect value (%f is not smaller than %f): %g", sum, cnst.bound, sum - cnst.bound);
   }
 
   XBT_DEBUG("Variables");
   /* Printing Result */
-  xbt_swag_foreach(_var, var_list)
-  {
-    lmm_variable_t var = (lmm_variable_t)_var;
-    if (var->bound > 0) {
-      XBT_DEBUG("'%d'(%f) : %f (<=%f)", var->id_int, var->sharing_weight, var->value, var->bound);
-      xbt_assert(not double_positive(var->value - var->bound, var->bound * sg_maxmin_precision),
-                 "Incorrect value (%f is not smaller than %f", var->value, var->bound);
+  for (s_lmm_variable_t const& var : variable_set) {
+    if (var.bound > 0) {
+      XBT_DEBUG("'%d'(%f) : %f (<=%f)", var.id_int, var.sharing_weight, var.value, var.bound);
+      xbt_assert(not double_positive(var.value - var.bound, var.bound * sg_maxmin_precision),
+                 "Incorrect value (%f is not smaller than %f", var.value, var.bound);
     } else {
-      XBT_DEBUG("'%d'(%f) : %f", var->id_int, var->sharing_weight, var->value);
+      XBT_DEBUG("'%d'(%f) : %f", var.id_int, var.sharing_weight, var.value);
     }
   }
 }
 
 void s_lmm_system_t::solve()
 {
-  void* _cnst;
-  void* _cnst_next;
-  void* _elem;
+  if (modified) {
+    XBT_IN("(sys=%p)", this);
+    /* Compute Usage and store the variables that reach the maximum. If selective_update_active is true, only
+     * constraints that changed are considered. Otherwise all constraints with active actions are considered.
+     */
+    if (selective_update_active)
+      solve(modified_constraint_set);
+    else
+      solve(active_constraint_set);
+    XBT_OUT();
+  }
+}
+
+template <class CnstList> void s_lmm_system_t::solve(CnstList& cnst_list)
+{
   double min_usage = -1;
   double min_bound = -1;
 
-  if (not modified)
-    return;
-
-  XBT_IN("(sys=%p)", this);
-
-  /* Compute Usage and store the variables that reach the maximum. If selective_update_active is true, only constraints
-   * that changed are considered. Otherwise all constraints with active actions are considered.
-   */
-  xbt_swag_t cnst_list = selective_update_active ? &modified_constraint_set : &active_constraint_set;
-
-  XBT_DEBUG("Active constraints : %d", xbt_swag_size(cnst_list));
+  XBT_DEBUG("Active constraints : %zu", cnst_list.size());
   /* Init: Only modified code portions: reset the value of active variables */
-  xbt_swag_foreach(_cnst, cnst_list)
-  {
-    lmm_constraint_t cnst = (lmm_constraint_t)_cnst;
-    xbt_swag_t elem_list  = &(cnst->enabled_element_set);
-    xbt_swag_foreach(_elem, elem_list)
-    {
-      lmm_variable_t var = ((lmm_element_t)_elem)->variable;
-      xbt_assert(var->sharing_weight > 0.0);
-      var->value = 0.0;
+  for (s_lmm_constraint_t const& cnst : cnst_list) {
+    for (s_lmm_element_t const& elem : cnst.enabled_element_set) {
+      xbt_assert(elem.variable->sharing_weight > 0.0);
+      elem.variable->value = 0.0;
     }
   }
 
-  s_lmm_constraint_light_t* cnst_light_tab = new s_lmm_constraint_light_t[xbt_swag_size(cnst_list)]();
+  s_lmm_constraint_light_t* cnst_light_tab = new s_lmm_constraint_light_t[cnst_list.size()]();
   int cnst_light_num                       = 0;
   dyn_light_t saturated_constraints;
 
-  xbt_swag_foreach_safe(_cnst, _cnst_next, cnst_list)
-  {
-    lmm_constraint_t cnst = (lmm_constraint_t)_cnst;
+  for (s_lmm_constraint_t& cnst : cnst_list) {
     /* INIT: Collect constraints that actually need to be saturated (i.e remaining  and usage are strictly positive)
      * into cnst_light_tab. */
-    cnst->remaining = cnst->bound;
-    if (not double_positive(cnst->remaining, cnst->bound * sg_maxmin_precision))
+    cnst.remaining = cnst.bound;
+    if (not double_positive(cnst.remaining, cnst.bound * sg_maxmin_precision))
       continue;
-    cnst->usage          = 0;
-    xbt_swag_t elem_list = &(cnst->enabled_element_set);
-    xbt_swag_foreach(_elem, elem_list)
-    {
-      lmm_element_t elem = (lmm_element_t)_elem;
-      xbt_assert(elem->variable->sharing_weight > 0);
-      if (elem->consumption_weight > 0) {
-        if (cnst->sharing_policy)
-          cnst->usage += elem->consumption_weight / elem->variable->sharing_weight;
-        else if (cnst->usage < elem->consumption_weight / elem->variable->sharing_weight)
-          cnst->usage = elem->consumption_weight / elem->variable->sharing_weight;
-
-        elem->make_active();
-        simgrid::surf::Action* action = static_cast<simgrid::surf::Action*>(elem->variable->id);
+    cnst.usage = 0;
+    for (s_lmm_element_t& elem : cnst.enabled_element_set) {
+      xbt_assert(elem.variable->sharing_weight > 0);
+      if (elem.consumption_weight > 0) {
+        if (cnst.sharing_policy)
+          cnst.usage += elem.consumption_weight / elem.variable->sharing_weight;
+        else if (cnst.usage < elem.consumption_weight / elem.variable->sharing_weight)
+          cnst.usage = elem.consumption_weight / elem.variable->sharing_weight;
+
+        elem.make_active();
+        simgrid::surf::Action* action = static_cast<simgrid::surf::Action*>(elem.variable->id);
         if (keep_track && not action->is_linked())
           keep_track->push_back(*action);
       }
     }
-    XBT_DEBUG("Constraint '%d' usage: %f remaining: %f concurrency: %i<=%i<=%i", cnst->id_int, cnst->usage,
-              cnst->remaining, cnst->concurrency_current, cnst->concurrency_maximum, cnst->get_concurrency_limit());
+    XBT_DEBUG("Constraint '%d' usage: %f remaining: %f concurrency: %i<=%i<=%i", cnst.id_int, cnst.usage,
+              cnst.remaining, cnst.concurrency_current, cnst.concurrency_maximum, cnst.get_concurrency_limit());
     /* Saturated constraints update */
 
-    if (cnst->usage > 0) {
-      cnst_light_tab[cnst_light_num].cnst                 = cnst;
-      cnst->cnst_light                                    = &(cnst_light_tab[cnst_light_num]);
-      cnst_light_tab[cnst_light_num].remaining_over_usage = cnst->remaining / cnst->usage;
+    if (cnst.usage > 0) {
+      cnst_light_tab[cnst_light_num].cnst                 = &cnst;
+      cnst.cnst_light                                     = &cnst_light_tab[cnst_light_num];
+      cnst_light_tab[cnst_light_num].remaining_over_usage = cnst.remaining / cnst.usage;
       saturated_constraints_update(cnst_light_tab[cnst_light_num].remaining_over_usage, cnst_light_num,
                                    saturated_constraints, &min_usage);
-      xbt_assert(cnst->active_element_set.count > 0,
+      xbt_assert(not cnst.active_element_set.empty(),
                  "There is no sense adding a constraint that has no active element!");
       cnst_light_num++;
     }
@@ -596,54 +572,51 @@ void s_lmm_system_t::solve()
   /* Saturated variables update */
   do {
     /* Fix the variables that have to be */
-    xbt_swag_t var_list = &saturated_variable_set;
-    void* _var;
-    lmm_variable_t var = nullptr;
-    xbt_swag_foreach(_var, var_list)
-    {
-      var = (lmm_variable_t)_var;
-      if (var->sharing_weight <= 0.0)
+    auto& var_list = saturated_variable_set;
+    for (s_lmm_variable_t const& var : var_list) {
+      if (var.sharing_weight <= 0.0)
         DIE_IMPOSSIBLE;
       /* First check if some of these variables could reach their upper bound and update min_bound accordingly. */
-      XBT_DEBUG("var=%d, var->bound=%f, var->weight=%f, min_usage=%f, var->bound*var->weight=%f", var->id_int,
-                var->bound, var->sharing_weight, min_usage, var->bound * var->sharing_weight);
-      if ((var->bound > 0) && (var->bound * var->sharing_weight < min_usage)) {
+      XBT_DEBUG("var=%d, var.bound=%f, var.weight=%f, min_usage=%f, var.bound*var.weight=%f", var.id_int, var.bound,
+                var.sharing_weight, min_usage, var.bound * var.sharing_weight);
+      if ((var.bound > 0) && (var.bound * var.sharing_weight < min_usage)) {
         if (min_bound < 0)
-          min_bound = var->bound * var->sharing_weight;
+          min_bound = var.bound * var.sharing_weight;
         else
-          min_bound = std::min(min_bound, (var->bound * var->sharing_weight));
+          min_bound = std::min(min_bound, (var.bound * var.sharing_weight));
         XBT_DEBUG("Updated min_bound=%f", min_bound);
       }
     }
 
-    while ((var = (lmm_variable_t)xbt_swag_getFirst(var_list))) {
+    while (not var_list.empty()) {
+      s_lmm_variable_t& var = var_list.front();
       if (min_bound < 0) {
         // If no variable could reach its bound, deal iteratively the constraints usage ( at worst one constraint is
         // saturated at each cycle)
-        var->value = min_usage / var->sharing_weight;
-        XBT_DEBUG("Setting var (%d) value to %f\n", var->id_int, var->value);
+        var.value = min_usage / var.sharing_weight;
+        XBT_DEBUG("Setting var (%d) value to %f\n", var.id_int, var.value);
       } else {
         // If there exist a variable that can reach its bound, only update it (and other with the same bound) for now.
-        if (double_equals(min_bound, var->bound * var->sharing_weight, sg_maxmin_precision)) {
-          var->value = var->bound;
-          XBT_DEBUG("Setting %p (%d) value to %f\n", var, var->id_int, var->value);
+        if (double_equals(min_bound, var.bound * var.sharing_weight, sg_maxmin_precision)) {
+          var.value = var.bound;
+          XBT_DEBUG("Setting %p (%d) value to %f\n", &var, var.id_int, var.value);
         } else {
           // Variables which bound is different are not considered for this cycle, but they will be afterwards.
-          XBT_DEBUG("Do not consider %p (%d) \n", var, var->id_int);
-          xbt_swag_remove(var, var_list);
+          XBT_DEBUG("Do not consider %p (%d) \n", &var, var.id_int);
+          var_list.pop_front();
           continue;
         }
       }
-      XBT_DEBUG("Min usage: %f, Var(%d)->weight: %f, Var(%d)->value: %f ", min_usage, var->id_int, var->sharing_weight,
-                var->id_int, var->value);
+      XBT_DEBUG("Min usage: %f, Var(%d).weight: %f, Var(%d).value: %f ", min_usage, var.id_int, var.sharing_weight,
+                var.id_int, var.value);
 
       /* Update the usage of contraints where this variable is involved */
-      for (s_lmm_element_t& elem : var->cnsts) {
+      for (s_lmm_element_t& elem : var.cnsts) {
         lmm_constraint_t cnst = elem.constraint;
         if (cnst->sharing_policy) {
-          // Remember: shared constraints require that sum(elem.value * var->value) < cnst->bound
-          double_update(&(cnst->remaining), elem.consumption_weight * var->value, cnst->bound * sg_maxmin_precision);
-          double_update(&(cnst->usage), elem.consumption_weight / var->sharing_weight, sg_maxmin_precision);
+          // Remember: shared constraints require that sum(elem.value * var.value) < cnst->bound
+          double_update(&(cnst->remaining), elem.consumption_weight * var.value, cnst->bound * sg_maxmin_precision);
+          double_update(&(cnst->usage), elem.consumption_weight / var.sharing_weight, sg_maxmin_precision);
           // If the constraint is saturated, remove it from the set of active constraints (light_tab)
           if (not double_positive(cnst->usage, sg_maxmin_precision) ||
               not double_positive(cnst->remaining, cnst->bound * sg_maxmin_precision)) {
@@ -661,18 +634,15 @@ void s_lmm_system_t::solve()
           }
           elem.make_inactive();
         } else {
-          // Remember: non-shared constraints only require that max(elem.value * var->value) < cnst->bound
+          // Remember: non-shared constraints only require that max(elem.value * var.value) < cnst->bound
           cnst->usage = 0.0;
           elem.make_inactive();
-          xbt_swag_t elem_list = &(cnst->enabled_element_set);
-          xbt_swag_foreach(_elem, elem_list)
-          {
-            lmm_element_t elem2 = static_cast<lmm_element_t>(_elem);
-            xbt_assert(elem2->variable->sharing_weight > 0);
-            if (elem2->variable->value > 0)
+          for (s_lmm_element_t& elem2 : cnst->enabled_element_set) {
+            xbt_assert(elem2.variable->sharing_weight > 0);
+            if (elem2.variable->value > 0)
               continue;
-            if (elem2->consumption_weight > 0)
-              cnst->usage = std::max(cnst->usage, elem2->consumption_weight / elem2->variable->sharing_weight);
+            if (elem2.consumption_weight > 0)
+              cnst->usage = std::max(cnst->usage, elem2.consumption_weight / elem2.variable->sharing_weight);
           }
           // If the constraint is saturated, remove it from the set of active constraints (light_tab)
           if (not double_positive(cnst->usage, sg_maxmin_precision) ||
@@ -690,13 +660,13 @@ void s_lmm_system_t::solve()
             }
           } else {
             cnst->cnst_light->remaining_over_usage = cnst->remaining / cnst->usage;
-            xbt_assert(cnst->active_element_set.count > 0,
+            xbt_assert(not cnst->active_element_set.empty(),
                        "Should not keep a maximum constraint that has no active"
                        " element! You want to check the maxmin precision and possible rounding effects.");
           }
         }
       }
-      xbt_swag_remove(var, var_list);
+      var_list.pop_front();
     }
 
     /* Find out which variables reach the maximum */
@@ -705,7 +675,7 @@ void s_lmm_system_t::solve()
     saturated_constraints.clear();
     int pos;
     for (pos = 0; pos < cnst_light_num; pos++) {
-      xbt_assert(cnst_light_tab[pos].cnst->active_element_set.count > 0,
+      xbt_assert(not cnst_light_tab[pos].cnst->active_element_set.empty(),
                  "Cannot saturate more a constraint that has"
                  " no active element! You may want to change the maxmin precision (--cfg=maxmin/precision:<new_value>)"
                  " because of possible rounding effects.\n\tFor the record, the usage of this constraint is %g while "
@@ -729,7 +699,6 @@ void s_lmm_system_t::solve()
   check_concurrency();
 
   delete[] cnst_light_tab;
-  XBT_OUT();
 }
 
 void lmm_solve(lmm_system_t sys)
@@ -773,10 +742,8 @@ void s_lmm_variable_t::initialize(simgrid::surf::Action* id_value, double sharin
   func_fp           = func_fp_def;
   func_fpi          = func_fpi_def;
 
-  variable_set_hookup.next           = nullptr;
-  variable_set_hookup.prev           = nullptr;
-  saturated_variable_set_hookup.next = nullptr;
-  saturated_variable_set_hookup.prev = nullptr;
+  xbt_assert(not variable_set_hook.is_linked());
+  xbt_assert(not saturated_variable_set_hook.is_linked());
 }
 
 int s_lmm_variable_t::get_min_concurrency_slack() const
@@ -805,14 +772,15 @@ void s_lmm_system_t::enable_var(lmm_variable_t var)
   var->sharing_weight = var->staged_weight;
   var->staged_weight  = 0;
 
-  // Enabling the variable, move to var to list head. Subtlety is: here, we need to call update_modified_set AFTER
+  // Enabling the variable, move var to list head. Subtlety is: here, we need to call update_modified_set AFTER
   // moving at least one element of var.
 
-  xbt_swag_remove(var, &variable_set);
-  xbt_swag_insert_at_head(var, &variable_set);
+  variable_set.erase(variable_set.iterator_to(*var));
+  variable_set.push_front(*var);
   for (s_lmm_element_t& elem : var->cnsts) {
-    xbt_swag_remove(&elem, &(elem.constraint->disabled_element_set));
-    xbt_swag_insert_at_head(&elem, &(elem.constraint->enabled_element_set));
+    auto& set = elem.constraint->disabled_element_set;
+    set.erase(set.iterator_to(elem));
+    elem.constraint->enabled_element_set.push_front(elem);
     elem.increase_concurrency();
   }
   if (not var->cnsts.empty())
@@ -828,16 +796,18 @@ void s_lmm_system_t::disable_var(lmm_variable_t var)
   xbt_assert(not var->staged_weight, "Staged weight should have been cleared");
   // Disabling the variable, move to var to list tail. Subtlety is: here, we need to call update_modified_set
   // BEFORE moving the last element of var.
-  xbt_swag_remove(var, &variable_set);
-  xbt_swag_insert_at_tail(var, &variable_set);
+  variable_set.erase(variable_set.iterator_to(*var));
+  variable_set.push_back(*var);
   if (not var->cnsts.empty())
     update_modified_set(var->cnsts[0].constraint);
   for (s_lmm_element_t& elem : var->cnsts) {
-    xbt_swag_remove(&elem, &(elem.constraint->enabled_element_set));
-    xbt_swag_insert_at_tail(&elem, &(elem.constraint->disabled_element_set));
-
-    xbt_swag_remove(&elem, &(elem.constraint->active_element_set));
-
+    auto& set = elem.constraint->enabled_element_set;
+    set.erase(set.iterator_to(elem));
+    elem.constraint->disabled_element_set.push_back(elem);
+    if (elem.active_element_set_hook.is_linked()) {
+      auto& set = elem.constraint->active_element_set;
+      set.erase(set.iterator_to(elem));
+    }
     elem.decrease_concurrency();
   }
 
@@ -859,16 +829,22 @@ void s_lmm_system_t::on_disabled_var(lmm_constraint_t cnstr)
   if (cnstr->get_concurrency_limit() < 0)
     return;
 
-  int numelem = xbt_swag_size(&(cnstr->disabled_element_set));
+  int numelem = cnstr->disabled_element_set.size();
   if (not numelem)
     return;
 
-  lmm_element_t elem = (lmm_element_t)xbt_swag_getFirst(&(cnstr->disabled_element_set));
+  lmm_element_t elem = &cnstr->disabled_element_set.front();
 
-  // Cannot use xbt_swag_foreach, because lmm_enable_var will modify disabled_element_set.. within the loop
+  // Cannot use foreach loop, because lmm_enable_var will modify disabled_element_set.. within the loop
   while (numelem-- && elem) {
 
-    lmm_element_t nextelem = (lmm_element_t)xbt_swag_getNext(elem, cnstr->disabled_element_set.offset);
+    lmm_element_t nextelem;
+    if (elem->disabled_element_set_hook.is_linked()) {
+      auto iter = std::next(cnstr->disabled_element_set.iterator_to(*elem));
+      nextelem  = iter != std::end(cnstr->disabled_element_set) ? &*iter : nullptr;
+    } else {
+      nextelem = nullptr;
+    }
 
     if (elem->variable->staged_weight > 0 && elem->variable->can_enable()) {
       // Found a staged variable
@@ -948,17 +924,14 @@ void s_lmm_system_t::update_constraint_bound(lmm_constraint_t cnst, double bound
  */
 void s_lmm_system_t::update_modified_set_rec(lmm_constraint_t cnst)
 {
-  void* _elem;
-
-  xbt_swag_foreach(_elem, &cnst->enabled_element_set)
-  {
-    lmm_variable_t var = ((lmm_element_t)_elem)->variable;
-    for (s_lmm_element_t const& elem : var->cnsts) {
+  for (s_lmm_element_t const& elem : cnst->enabled_element_set) {
+    lmm_variable_t var = elem.variable;
+    for (s_lmm_element_t const& elem2 : var->cnsts) {
       if (var->visited == visited_counter)
         break;
-      if (elem.constraint != cnst && not xbt_swag_belongs(elem.constraint, &modified_constraint_set)) {
-        xbt_swag_insert(elem.constraint, &modified_constraint_set);
-        update_modified_set_rec(elem.constraint);
+      if (elem2.constraint != cnst && not elem2.constraint->modified_constraint_set_hook.is_linked()) {
+        modified_constraint_set.push_back(*elem2.constraint);
+        update_modified_set_rec(elem2.constraint);
       }
     }
     // var will be ignored in later visits as long as sys->visited_counter does not move
@@ -969,8 +942,8 @@ void s_lmm_system_t::update_modified_set_rec(lmm_constraint_t cnst)
 void s_lmm_system_t::update_modified_set(lmm_constraint_t cnst)
 {
   /* nothing to do if selective update isn't active */
-  if (selective_update_active && not xbt_swag_belongs(cnst, &modified_constraint_set)) {
-    xbt_swag_insert(cnst, &modified_constraint_set);
+  if (selective_update_active && not cnst->modified_constraint_set_hook.is_linked()) {
+    modified_constraint_set.push_back(*cnst);
     update_modified_set_rec(cnst);
   }
 }
@@ -984,10 +957,10 @@ void s_lmm_system_t::remove_all_modified_set()
   // (i.e. not readibily reproducible, and requiring a lot of run time before happening).
   if (++visited_counter == 1) {
     /* the counter wrapped around, reset each variable->visited */
-    void* _var;
-    xbt_swag_foreach(_var, &variable_set)((lmm_variable_t)_var)->visited = 0;
+    for (s_lmm_variable_t& var : variable_set)
+      var.visited = 0;
   }
-  xbt_swag_reset(&modified_constraint_set);
+  modified_constraint_set.clear();
 }
 
 /**
@@ -1004,35 +977,22 @@ void s_lmm_system_t::remove_all_modified_set()
 double s_lmm_constraint_t::get_usage() const
 {
   double result              = 0.0;
-  const_xbt_swag_t elem_list = &enabled_element_set;
-  void* _elem;
-
-  xbt_swag_foreach(_elem, elem_list)
-  {
-    lmm_element_t elem = (lmm_element_t)_elem;
-    if (elem->consumption_weight > 0) {
-      if (sharing_policy)
-        result += elem->consumption_weight * elem->variable->value;
-      else if (result < elem->consumption_weight * elem->variable->value)
-        result = std::max(result, elem->consumption_weight * elem->variable->value);
-    }
+  if (sharing_policy) {
+    for (s_lmm_element_t const& elem : enabled_element_set)
+      if (elem.consumption_weight > 0)
+        result += elem.consumption_weight * elem.variable->value;
+  } else {
+    for (s_lmm_element_t const& elem : enabled_element_set)
+      if (elem.consumption_weight > 0)
+        result = std::max(result, elem.consumption_weight * elem.variable->value);
   }
   return result;
 }
 
 int s_lmm_constraint_t::get_variable_amount() const
 {
-  int result                 = 0;
-  const_xbt_swag_t elem_list = &enabled_element_set;
-  void* _elem;
-
-  xbt_swag_foreach(_elem, elem_list)
-  {
-    lmm_element_t elem = (lmm_element_t)_elem;
-    if (elem->consumption_weight > 0)
-      result++;
-  }
-  return result;
+  return std::count_if(std::begin(enabled_element_set), std::end(enabled_element_set),
+                       [](const s_lmm_element_t& elem) { return elem.consumption_weight > 0; });
 }
 }
 }
index 61f78ed..3fc501f 100644 (file)
@@ -12,7 +12,7 @@
 #include "xbt/asserts.h"
 #include "xbt/mallocator.h"
 #include "xbt/misc.h"
-#include "xbt/swag.h"
+#include <boost/intrusive/list.hpp>
 #include <cmath>
 #include <limits>
 #include <vector>
@@ -144,21 +144,21 @@ XBT_PUBLIC(void) bottleneck_solve(lmm_system_t sys);
 /** Default functions associated to the chosen protocol. When using the lagrangian approach. */
 
 XBT_PUBLIC(void)
-lmm_set_default_protocol_function(double (*func_f)(lmm_variable_t var, double x),
-                                  double (*func_fp)(lmm_variable_t var, double x),
-                                  double (*func_fpi)(lmm_variable_t var, double x));
+lmm_set_default_protocol_function(double (*func_f)(const s_lmm_variable_t& var, double x),
+                                  double (*func_fp)(const s_lmm_variable_t& var, double x),
+                                  double (*func_fpi)(const s_lmm_variable_t& var, double x));
 
-XBT_PUBLIC(double) func_reno_f(lmm_variable_t var, double x);
-XBT_PUBLIC(double) func_reno_fp(lmm_variable_t var, double x);
-XBT_PUBLIC(double) func_reno_fpi(lmm_variable_t var, double x);
+XBT_PUBLIC(double) func_reno_f(const s_lmm_variable_t& var, double x);
+XBT_PUBLIC(double) func_reno_fp(const s_lmm_variable_t& var, double x);
+XBT_PUBLIC(double) func_reno_fpi(const s_lmm_variable_t& var, double x);
 
-XBT_PUBLIC(double) func_reno2_f(lmm_variable_t var, double x);
-XBT_PUBLIC(double) func_reno2_fp(lmm_variable_t var, double x);
-XBT_PUBLIC(double) func_reno2_fpi(lmm_variable_t var, double x);
+XBT_PUBLIC(double) func_reno2_f(const s_lmm_variable_t& var, double x);
+XBT_PUBLIC(double) func_reno2_fp(const s_lmm_variable_t& var, double x);
+XBT_PUBLIC(double) func_reno2_fpi(const s_lmm_variable_t& var, double x);
 
-XBT_PUBLIC(double) func_vegas_f(lmm_variable_t var, double x);
-XBT_PUBLIC(double) func_vegas_fp(lmm_variable_t var, double x);
-XBT_PUBLIC(double) func_vegas_fpi(lmm_variable_t var, double x);
+XBT_PUBLIC(double) func_vegas_f(const s_lmm_variable_t& var, double x);
+XBT_PUBLIC(double) func_vegas_fp(const s_lmm_variable_t& var, double x);
+XBT_PUBLIC(double) func_vegas_fpi(const s_lmm_variable_t& var, double x);
 
 /**
  * @brief LMM element
@@ -178,9 +178,9 @@ public:
   void make_inactive();
 
   /* hookup to constraint */
-  s_xbt_swag_hookup_t enabled_element_set_hookup;
-  s_xbt_swag_hookup_t disabled_element_set_hookup;
-  s_xbt_swag_hookup_t active_element_set_hookup;
+  boost::intrusive::list_member_hook<> enabled_element_set_hook;
+  boost::intrusive::list_member_hook<> disabled_element_set_hook;
+  boost::intrusive::list_member_hook<> active_element_set_hook;
 
   lmm_constraint_t constraint;
   lmm_variable_t variable;
@@ -273,7 +273,7 @@ public:
    * @param elem A element of constraint of the constraint or NULL
    * @return A variable associated to a constraint
    */
-  lmm_variable_t get_variable(lmm_element_t * elem) const;
+  lmm_variable_t get_variable(const_lmm_element_t* elem) const;
 
   /**
    * @brief Get a var associated to a constraint
@@ -283,7 +283,7 @@ public:
    * @param numelem parameter representing the number of elements to go
    * @return A variable associated to a constraint
    */
-  lmm_variable_t get_variable_safe(lmm_element_t * elem, lmm_element_t * nextelem, int* numelem) const;
+  lmm_variable_t get_variable_safe(const_lmm_element_t* elem, const_lmm_element_t* nextelem, int* numelem) const;
 
   /**
    * @brief Get the data associated to a constraint
@@ -292,13 +292,22 @@ public:
   void* get_id() const { return id; }
 
   /* hookup to system */
-  s_xbt_swag_hookup_t constraint_set_hookup           = {nullptr, nullptr};
-  s_xbt_swag_hookup_t active_constraint_set_hookup    = {nullptr, nullptr};
-  s_xbt_swag_hookup_t modified_constraint_set_hookup  = {nullptr, nullptr};
-  s_xbt_swag_hookup_t saturated_constraint_set_hookup = {nullptr, nullptr};
-  s_xbt_swag_t enabled_element_set;  /* a list of lmm_element_t */
-  s_xbt_swag_t disabled_element_set; /* a list of lmm_element_t */
-  s_xbt_swag_t active_element_set;   /* a list of lmm_element_t */
+  boost::intrusive::list_member_hook<> constraint_set_hook;
+  boost::intrusive::list_member_hook<> active_constraint_set_hook;
+  boost::intrusive::list_member_hook<> modified_constraint_set_hook;
+  boost::intrusive::list_member_hook<> saturated_constraint_set_hook;
+  boost::intrusive::list<s_lmm_element_t,
+                         boost::intrusive::member_hook<s_lmm_element_t, boost::intrusive::list_member_hook<>,
+                                                       &s_lmm_element_t::enabled_element_set_hook>>
+      enabled_element_set;
+  boost::intrusive::list<s_lmm_element_t,
+                         boost::intrusive::member_hook<s_lmm_element_t, boost::intrusive::list_member_hook<>,
+                                                       &s_lmm_element_t::disabled_element_set_hook>>
+      disabled_element_set;
+  boost::intrusive::list<s_lmm_element_t,
+                         boost::intrusive::member_hook<s_lmm_element_t, boost::intrusive::list_member_hook<>,
+                                                       &s_lmm_element_t::active_element_set_hook>>
+      active_element_set;
   double remaining;
   double usage;
   double bound;
@@ -391,8 +400,8 @@ public:
   int can_enable() const { return staged_weight > 0 && get_min_concurrency_slack() >= concurrency_share; }
 
   /* hookup to system */
-  s_xbt_swag_hookup_t variable_set_hookup           = {nullptr, nullptr};
-  s_xbt_swag_hookup_t saturated_variable_set_hookup = {nullptr, nullptr};
+  boost::intrusive::list_member_hook<> variable_set_hook;
+  boost::intrusive::list_member_hook<> saturated_variable_set_hook;
 
   std::vector<s_lmm_element_t> cnsts;
 
@@ -413,9 +422,9 @@ public:
   /* \begin{For Lagrange only} */
   double mu;
   double new_mu;
-  double (*func_f)(s_lmm_variable_t * var, double x);   /* (f)    */
-  double (*func_fp)(s_lmm_variable_t * var, double x);  /* (f')    */
-  double (*func_fpi)(s_lmm_variable_t * var, double x); /* (f')^{-1}    */
+  double (*func_f)(const s_lmm_variable_t& var, double x);   /* (f)    */
+  double (*func_fp)(const s_lmm_variable_t& var, double x);  /* (f')    */
+  double (*func_fpi)(const s_lmm_variable_t& var, double x); /* (f')^{-1}    */
   /* \end{For Lagrange only} */
 
 private:
@@ -424,11 +433,14 @@ private:
 
 inline void s_lmm_element_t::make_active()
 {
-  xbt_swag_insert_at_head(this, &constraint->active_element_set);
+  constraint->active_element_set.push_front(*this);
 }
 inline void s_lmm_element_t::make_inactive()
 {
-  xbt_swag_remove(this, &constraint->active_element_set);
+  if (active_element_set_hook.is_linked()) {
+    auto& set = constraint->active_element_set;
+    set.erase(set.iterator_to(*this));
+  }
 }
 
 /**
@@ -509,10 +521,10 @@ public:
    * @param cnst A constraint
    * @return [description]
    */
-  int constraint_used(lmm_constraint_t cnst) { return xbt_swag_belongs(cnst, &active_constraint_set); }
+  int constraint_used(lmm_constraint_t cnst) { return cnst->active_constraint_set_hook.is_linked(); }
 
   /** @brief Print the lmm system */
-  void print();
+  void print() const;
 
   /** @brief Solve the lmm system */
   void solve();
@@ -523,19 +535,41 @@ private:
 
   void var_free(lmm_variable_t var);
   void cnst_free(lmm_constraint_t cnst);
-  lmm_variable_t extract_variable() { return static_cast<lmm_variable_t>(xbt_swag_extract(&variable_set)); }
-  lmm_constraint_t extract_constraint() { return static_cast<lmm_constraint_t>(xbt_swag_extract(&constraint_set)); }
-  void insert_constraint(lmm_constraint_t cnst) { xbt_swag_insert(cnst, &constraint_set); }
+  lmm_variable_t extract_variable()
+  {
+    if (variable_set.empty())
+      return nullptr;
+    lmm_variable_t res = &variable_set.front();
+    variable_set.pop_front();
+    return res;
+  }
+  lmm_constraint_t extract_constraint()
+  {
+    if (constraint_set.empty())
+      return nullptr;
+    lmm_constraint_t res = &constraint_set.front();
+    constraint_set.pop_front();
+    return res;
+  }
+  void insert_constraint(lmm_constraint_t cnst) { constraint_set.push_back(*cnst); }
   void remove_variable(lmm_variable_t var)
   {
-    xbt_swag_remove(var, &variable_set);
-    xbt_swag_remove(var, &saturated_variable_set);
+    if (var->variable_set_hook.is_linked())
+      variable_set.erase(variable_set.iterator_to(*var));
+    if (var->saturated_variable_set_hook.is_linked())
+      saturated_variable_set.erase(saturated_variable_set.iterator_to(*var));
+  }
+  void make_constraint_active(lmm_constraint_t cnst)
+  {
+    if (not cnst->active_constraint_set_hook.is_linked())
+      active_constraint_set.push_back(*cnst);
   }
-  void make_constraint_active(lmm_constraint_t cnst) { xbt_swag_insert(cnst, &active_constraint_set); }
   void make_constraint_inactive(lmm_constraint_t cnst)
   {
-    xbt_swag_remove(cnst, &active_constraint_set);
-    xbt_swag_remove(cnst, &modified_constraint_set);
+    if (cnst->active_constraint_set_hook.is_linked())
+      active_constraint_set.erase(active_constraint_set.iterator_to(*cnst));
+    if (cnst->modified_constraint_set_hook.is_linked())
+      modified_constraint_set.erase(modified_constraint_set.iterator_to(*cnst));
   }
 
   void enable_var(lmm_variable_t var);
@@ -555,14 +589,27 @@ private:
 
   /** @brief Remove all constraints of the modified_constraint_set. */
   void remove_all_modified_set();
-  void check_concurrency();
+  void check_concurrency() const;
 
+  template <class CnstList> void solve(CnstList& cnst_list);
 public:
   bool modified;
-  s_xbt_swag_t variable_set;             /* a list of lmm_variable_t */
-  s_xbt_swag_t active_constraint_set;    /* a list of lmm_constraint_t */
-  s_xbt_swag_t saturated_variable_set;   /* a list of lmm_variable_t */
-  s_xbt_swag_t saturated_constraint_set; /* a list of lmm_constraint_t */
+  boost::intrusive::list<s_lmm_variable_t,
+                         boost::intrusive::member_hook<s_lmm_variable_t, boost::intrusive::list_member_hook<>,
+                                                       &s_lmm_variable_t::variable_set_hook>>
+      variable_set;
+  boost::intrusive::list<s_lmm_constraint_t,
+                         boost::intrusive::member_hook<s_lmm_constraint_t, boost::intrusive::list_member_hook<>,
+                                                       &s_lmm_constraint_t::active_constraint_set_hook>>
+      active_constraint_set;
+  boost::intrusive::list<s_lmm_variable_t,
+                         boost::intrusive::member_hook<s_lmm_variable_t, boost::intrusive::list_member_hook<>,
+                                                       &s_lmm_variable_t::saturated_variable_set_hook>>
+      saturated_variable_set;
+  boost::intrusive::list<s_lmm_constraint_t,
+                         boost::intrusive::member_hook<s_lmm_constraint_t, boost::intrusive::list_member_hook<>,
+                                                       &s_lmm_constraint_t::saturated_constraint_set_hook>>
+      saturated_constraint_set;
 
   simgrid::surf::ActionLmmListPtr keep_track;
 
@@ -572,14 +619,20 @@ private:
   bool selective_update_active; /* flag to update partially the system only selecting changed portions */
   unsigned visited_counter;     /* used by lmm_update_modified_set and lmm_remove_modified_set to cleverly (un-)flag the
                                  * constraints (more details in these functions) */
-  s_xbt_swag_t constraint_set;  /* a list of lmm_constraint_t */
-  s_xbt_swag_t modified_constraint_set; /* a list of modified lmm_constraint_t */
+  boost::intrusive::list<s_lmm_constraint_t,
+                         boost::intrusive::member_hook<s_lmm_constraint_t, boost::intrusive::list_member_hook<>,
+                                                       &s_lmm_constraint_t::constraint_set_hook>>
+      constraint_set;
+  boost::intrusive::list<s_lmm_constraint_t,
+                         boost::intrusive::member_hook<s_lmm_constraint_t, boost::intrusive::list_member_hook<>,
+                                                       &s_lmm_constraint_t::modified_constraint_set_hook>>
+      modified_constraint_set;
   xbt_mallocator_t variable_mallocator;
 };
 
-extern XBT_PRIVATE double (*func_f_def)(lmm_variable_t, double);
-extern XBT_PRIVATE double (*func_fp_def)(lmm_variable_t, double);
-extern XBT_PRIVATE double (*func_fpi_def)(lmm_variable_t, double);
+extern XBT_PRIVATE double (*func_f_def)(const s_lmm_variable_t&, double);
+extern XBT_PRIVATE double (*func_fp_def)(const s_lmm_variable_t&, double);
+extern XBT_PRIVATE double (*func_fpi_def)(const s_lmm_variable_t&, double);
 
 /** @} */
 }
index 7a75abe..c54256e 100644 (file)
@@ -70,7 +70,7 @@ private:
   void* userdata_             = nullptr;
 };
 
-class FileSystemStorageExt {
+XBT_PUBLIC_CLASS FileSystemStorageExt {
 public:
   static simgrid::xbt::Extension<Storage, FileSystemStorageExt> EXTENSION_ID;
   explicit FileSystemStorageExt(Storage* ptr);
index 36fbc73..bfa4e53 100644 (file)
@@ -104,7 +104,7 @@ bool CpuCas01::isUsed()
 /** @brief take into account changes of speed (either load or max) */
 void CpuCas01::onSpeedChange() {
   lmm_variable_t var = nullptr;
-  lmm_element_t elem = nullptr;
+  const_lmm_element_t elem = nullptr;
 
   model()->getMaxminSystem()->update_constraint_bound(constraint(), coresAmount_ * speed_.scale * speed_.peak);
   while ((var = constraint()->get_variable(&elem))) {
@@ -138,7 +138,7 @@ void CpuCas01::apply_event(tmgr_trace_event_t event, double value)
     } else {
       lmm_constraint_t cnst = constraint();
       lmm_variable_t var = nullptr;
-      lmm_element_t elem = nullptr;
+      const_lmm_element_t elem = nullptr;
       double date = surf_get_clock();
 
       turnOff();
index 66a838f..e7338e9 100644 (file)
@@ -380,7 +380,7 @@ void NetworkCm02Link::apply_event(tmgr_trace_event_t triggered, double value)
       turnOn();
     else {
       lmm_variable_t var = nullptr;
-      lmm_element_t elem = nullptr;
+      const_lmm_element_t elem = nullptr;
       double now = surf_get_clock();
 
       turnOff();
@@ -414,8 +414,8 @@ void NetworkCm02Link::setBandwidth(double value)
     double delta = sg_weight_S_parameter / value - sg_weight_S_parameter / (bandwidth_.peak * bandwidth_.scale);
 
     lmm_variable_t var;
-    lmm_element_t elem = nullptr;
-    lmm_element_t nextelem = nullptr;
+    const_lmm_element_t elem     = nullptr;
+    const_lmm_element_t nextelem = nullptr;
     int numelem = 0;
     while ((var = constraint()->get_variable_safe(&elem, &nextelem, &numelem))) {
       NetworkCm02Action* action = static_cast<NetworkCm02Action*>(var->get_id());
@@ -428,10 +428,10 @@ void NetworkCm02Link::setBandwidth(double value)
 
 void NetworkCm02Link::setLatency(double value)
 {
-  double delta           = value - latency_.peak;
-  lmm_variable_t var = nullptr;
-  lmm_element_t elem = nullptr;
-  lmm_element_t nextelem = nullptr;
+  double delta                 = value - latency_.peak;
+  lmm_variable_t var           = nullptr;
+  const_lmm_element_t elem     = nullptr;
+  const_lmm_element_t nextelem = nullptr;
   int numelem = 0;
 
   latency_.peak = value;
index 55c1e24..d94f6fb 100644 (file)
@@ -295,7 +295,7 @@ bool CpuL07::isUsed(){
 /** @brief take into account changes of speed (either load or max) */
 void CpuL07::onSpeedChange() {
   lmm_variable_t var = nullptr;
-  lmm_element_t elem = nullptr;
+  const_lmm_element_t elem = nullptr;
 
   model()->getMaxminSystem()->update_constraint_bound(constraint(), speed_.peak * speed_.scale);
   while ((var = constraint()->get_variable(&elem))) {
@@ -365,7 +365,7 @@ void LinkL07::setLatency(double value)
 {
   lmm_variable_t var = nullptr;
   L07Action *action;
-  lmm_element_t elem = nullptr;
+  const_lmm_element_t elem = nullptr;
 
   latency_.peak = value;
   while ((var = constraint()->get_variable(&elem))) {
index 37ee439..9b2e48b 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007, 2009-2016. The SimGrid Team. All rights reserved.    */
+/* Copyright (c) 2007, 2009-2017. The SimGrid Team. All rights reserved.    */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -7,7 +7,7 @@
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(msg_process_kill, "Messages specific for this msg example");
 
-static int victimA_fun(int argc, char* argv[])
+static int victimA_fun(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[])
 {
   XBT_INFO("Hello!");
   XBT_INFO("Suspending myself");
@@ -18,13 +18,13 @@ static int victimA_fun(int argc, char* argv[])
   return 0;
 }
 
-static int victimB_fun(int argc, char* argv[])
+static int victimB_fun(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[])
 {
   XBT_INFO("Terminates before being killed");
   return 0;
 }
 
-static int killer(int argc, char* argv[])
+static int killer(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[])
 {
   XBT_INFO("Hello!"); /* - First start a victim process */
   msg_process_t victimA = MSG_process_create("victim A", victimA_fun, NULL, MSG_host_by_name("Fafard"));
index 7e38514..dc7003e 100644 (file)
@@ -106,176 +106,176 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '21' usage: 8.493506 remaining: 6.673327 concurrency: 4<=4<=9
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '3' usage: 10.696304 remaining: 5.434565 concurrency: 5<=5<=40
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '34' usage: 7.922577 remaining: 1.878122 concurrency: 3<=3<=-1
-> [0.000000]: [surf_maxmin/DEBUG] var=10, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004363, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=12, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004363, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=14, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004363, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=17, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004363, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=18, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004363, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=20, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004363, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=21, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004363, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=33, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004363, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=59, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004363, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=61, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004363, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=86, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004363, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=100, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004363, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=10, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004363, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=12, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004363, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=14, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004363, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=17, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004363, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=18, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004363, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=20, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004363, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=21, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004363, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=33, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004363, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=59, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004363, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=61, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004363, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=86, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004363, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=100, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004363, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (10) value to 0.004363
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(10)->weight: 1.000000, Var(10)->value: 0.004363 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(10).weight: 1.000000, Var(10).value: 0.004363 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (12) value to 0.004363
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(12)->weight: 1.000000, Var(12)->value: 0.004363 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(12).weight: 1.000000, Var(12).value: 0.004363 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (14) value to 0.004363
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(14)->weight: 1.000000, Var(14)->value: 0.004363 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(14).weight: 1.000000, Var(14).value: 0.004363 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (17) value to 0.004363
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(17)->weight: 1.000000, Var(17)->value: 0.004363 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(17).weight: 1.000000, Var(17).value: 0.004363 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (18) value to 0.004363
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(18)->weight: 1.000000, Var(18)->value: 0.004363 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(18).weight: 1.000000, Var(18).value: 0.004363 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (20) value to 0.004363
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(20)->weight: 1.000000, Var(20)->value: 0.004363 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(20).weight: 1.000000, Var(20).value: 0.004363 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (21) value to 0.004363
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(21)->weight: 1.000000, Var(21)->value: 0.004363 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(21).weight: 1.000000, Var(21).value: 0.004363 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (33) value to 0.004363
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(33)->weight: 1.000000, Var(33)->value: 0.004363 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(33).weight: 1.000000, Var(33).value: 0.004363 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (59) value to 0.004363
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(59)->weight: 1.000000, Var(59)->value: 0.004363 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(59).weight: 1.000000, Var(59).value: 0.004363 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (61) value to 0.004363
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(61)->weight: 1.000000, Var(61)->value: 0.004363 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(61).weight: 1.000000, Var(61).value: 0.004363 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (86) value to 0.004363
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(86)->weight: 1.000000, Var(86)->value: 0.004363 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(86).weight: 1.000000, Var(86).value: 0.004363 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (100) value to 0.004363
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(100)->weight: 1.000000, Var(100)->value: 0.004363 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004363, Var(100).weight: 1.000000, Var(100).value: 0.004363 
 > [0.000000]: [surf_maxmin/DEBUG] index: 86     cnst_light_num: 100     || usage: 0.000000 remaining: 0.000000 bound: 0.089910  
-> [0.000000]: [surf_maxmin/DEBUG] var=2, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008030, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=3, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008030, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=19, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008030, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=24, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008030, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=29, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008030, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=31, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008030, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=35, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008030, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=65, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008030, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=66, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008030, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=2, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008030, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=3, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008030, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=19, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008030, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=24, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008030, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=29, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008030, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=31, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008030, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=35, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008030, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=65, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008030, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=66, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008030, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (2) value to 0.008030
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(2)->weight: 1.000000, Var(2)->value: 0.008030 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(2).weight: 1.000000, Var(2).value: 0.008030 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (3) value to 0.008030
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(3)->weight: 1.000000, Var(3)->value: 0.008030 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(3).weight: 1.000000, Var(3).value: 0.008030 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (19) value to 0.008030
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(19)->weight: 1.000000, Var(19)->value: 0.008030 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(19).weight: 1.000000, Var(19).value: 0.008030 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (24) value to 0.008030
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(24)->weight: 1.000000, Var(24)->value: 0.008030 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(24).weight: 1.000000, Var(24).value: 0.008030 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (29) value to 0.008030
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(29)->weight: 1.000000, Var(29)->value: 0.008030 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(29).weight: 1.000000, Var(29).value: 0.008030 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (31) value to 0.008030
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(31)->weight: 1.000000, Var(31)->value: 0.008030 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(31).weight: 1.000000, Var(31).value: 0.008030 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (35) value to 0.008030
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(35)->weight: 1.000000, Var(35)->value: 0.008030 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(35).weight: 1.000000, Var(35).value: 0.008030 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (65) value to 0.008030
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(65)->weight: 1.000000, Var(65)->value: 0.008030 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(65).weight: 1.000000, Var(65).value: 0.008030 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (66) value to 0.008030
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(66)->weight: 1.000000, Var(66)->value: 0.008030 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008030, Var(66).weight: 1.000000, Var(66).value: 0.008030 
 > [0.000000]: [surf_maxmin/DEBUG] index: 33     cnst_light_num: 99      || usage: 0.000000 remaining: 0.000000 bound: 0.139860  
-> [0.000000]: [surf_maxmin/DEBUG] var=5, var->bound=-1.000000, var->weight=1.000000, min_usage=0.021367, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=13, var->bound=-1.000000, var->weight=1.000000, min_usage=0.021367, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=36, var->bound=-1.000000, var->weight=1.000000, min_usage=0.021367, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=39, var->bound=-1.000000, var->weight=1.000000, min_usage=0.021367, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=42, var->bound=-1.000000, var->weight=1.000000, min_usage=0.021367, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=57, var->bound=-1.000000, var->weight=1.000000, min_usage=0.021367, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=5, var.bound=-1.000000, var.weight=1.000000, min_usage=0.021367, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=13, var.bound=-1.000000, var.weight=1.000000, min_usage=0.021367, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=36, var.bound=-1.000000, var.weight=1.000000, min_usage=0.021367, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=39, var.bound=-1.000000, var.weight=1.000000, min_usage=0.021367, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=42, var.bound=-1.000000, var.weight=1.000000, min_usage=0.021367, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=57, var.bound=-1.000000, var.weight=1.000000, min_usage=0.021367, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (5) value to 0.021367
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.021367, Var(5)->weight: 1.000000, Var(5)->value: 0.021367 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.021367, Var(5).weight: 1.000000, Var(5).value: 0.021367 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (13) value to 0.021367
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.021367, Var(13)->weight: 1.000000, Var(13)->value: 0.021367 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.021367, Var(13).weight: 1.000000, Var(13).value: 0.021367 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (36) value to 0.021367
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.021367, Var(36)->weight: 1.000000, Var(36)->value: 0.021367 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.021367, Var(36).weight: 1.000000, Var(36).value: 0.021367 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (39) value to 0.021367
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.021367, Var(39)->weight: 1.000000, Var(39)->value: 0.021367 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.021367, Var(39).weight: 1.000000, Var(39).value: 0.021367 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (42) value to 0.021367
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.021367, Var(42)->weight: 1.000000, Var(42)->value: 0.021367 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.021367, Var(42).weight: 1.000000, Var(42).value: 0.021367 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (57) value to 0.021367
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.021367, Var(57)->weight: 1.000000, Var(57)->value: 0.021367 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.021367, Var(57).weight: 1.000000, Var(57).value: 0.021367 
 > [0.000000]: [surf_maxmin/DEBUG] index: 30     cnst_light_num: 98      || usage: 0.000000 remaining: 0.000000 bound: 0.239760  
-> [0.000000]: [surf_maxmin/DEBUG] var=7, var->bound=-1.000000, var->weight=1.000000, min_usage=0.111522, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=9, var->bound=-1.000000, var->weight=1.000000, min_usage=0.111522, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=25, var->bound=-1.000000, var->weight=1.000000, min_usage=0.111522, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=7, var.bound=-1.000000, var.weight=1.000000, min_usage=0.111522, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=9, var.bound=-1.000000, var.weight=1.000000, min_usage=0.111522, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=25, var.bound=-1.000000, var.weight=1.000000, min_usage=0.111522, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (7) value to 0.111522
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.111522, Var(7)->weight: 1.000000, Var(7)->value: 0.111522 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.111522, Var(7).weight: 1.000000, Var(7).value: 0.111522 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (9) value to 0.111522
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.111522, Var(9)->weight: 1.000000, Var(9)->value: 0.111522 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.111522, Var(9).weight: 1.000000, Var(9).value: 0.111522 
 > [0.000000]: [surf_maxmin/DEBUG] index: 43     cnst_light_num: 97      || usage: 0.000000 remaining: 6.351599 bound: 6.573427  
 > [0.000000]: [surf_maxmin/DEBUG] index: 35     cnst_light_num: 96      || usage: 0.000000 remaining: 6.501325 bound: 6.783217  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (25) value to 0.111522
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.111522, Var(25)->weight: 1.000000, Var(25)->value: 0.111522 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.111522, Var(25).weight: 1.000000, Var(25).value: 0.111522 
 > [0.000000]: [surf_maxmin/DEBUG] index: 64     cnst_light_num: 95      || usage: 0.000000 remaining: 0.000000 bound: 0.419580  
 > [0.000000]: [surf_maxmin/DEBUG] index: 37     cnst_light_num: 94      || usage: 0.000000 remaining: 5.229520 bound: 5.464535  
-> [0.000000]: [surf_maxmin/DEBUG] var=11, var->bound=-1.000000, var->weight=1.000000, min_usage=0.114197, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=60, var->bound=-1.000000, var->weight=1.000000, min_usage=0.114197, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=94, var->bound=-1.000000, var->weight=1.000000, min_usage=0.114197, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=11, var.bound=-1.000000, var.weight=1.000000, min_usage=0.114197, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=60, var.bound=-1.000000, var.weight=1.000000, min_usage=0.114197, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=94, var.bound=-1.000000, var.weight=1.000000, min_usage=0.114197, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (11) value to 0.114197
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.114197, Var(11)->weight: 1.000000, Var(11)->value: 0.114197 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.114197, Var(11).weight: 1.000000, Var(11).value: 0.114197 
 > [0.000000]: [surf_maxmin/DEBUG] index: 78     cnst_light_num: 93      || usage: 0.000000 remaining: 3.639923 bound: 3.946054  
 > [0.000000]: [surf_maxmin/DEBUG] index: 89     cnst_light_num: 92      || usage: 0.000000 remaining: 1.712163 bound: 1.928072  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (60) value to 0.114197
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.114197, Var(60)->weight: 1.000000, Var(60)->value: 0.114197 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.114197, Var(60).weight: 1.000000, Var(60).value: 0.114197 
 > [0.000000]: [surf_maxmin/DEBUG] index: 77     cnst_light_num: 91      || usage: 0.000000 remaining: 1.857045 bound: 2.437562  
 > [0.000000]: [surf_maxmin/DEBUG] index: 30     cnst_light_num: 90      || usage: 0.000000 remaining: 6.367133 bound: 6.673327  
 > [0.000000]: [surf_maxmin/DEBUG] index: 39     cnst_light_num: 89      || usage: 0.000000 remaining: 6.894919 bound: 7.282717  
 > [0.000000]: [surf_maxmin/DEBUG] index: 45     cnst_light_num: 88      || usage: 0.000000 remaining: 4.984682 bound: 5.784216  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (94) value to 0.114197
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.114197, Var(94)->weight: 1.000000, Var(94)->value: 0.114197 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.114197, Var(94).weight: 1.000000, Var(94).value: 0.114197 
 > [0.000000]: [surf_maxmin/DEBUG] index: 30     cnst_light_num: 87      || usage: 0.000000 remaining: 0.000000 bound: 0.909091  
 > [0.000000]: [surf_maxmin/DEBUG] index: 35     cnst_light_num: 86      || usage: 0.000000 remaining: 2.100813 bound: 2.467532  
 > [0.000000]: [surf_maxmin/DEBUG] index: 39     cnst_light_num: 85      || usage: 0.000000 remaining: 8.371246 bound: 8.641359  
 > [0.000000]: [surf_maxmin/DEBUG] index: 30     cnst_light_num: 84      || usage: 0.000000 remaining: 1.719694 bound: 1.878122  
 > [0.000000]: [surf_maxmin/DEBUG] index: 78     cnst_light_num: 83      || usage: 0.000000 remaining: 2.160269 bound: 2.597403  
 > [0.000000]: [surf_maxmin/DEBUG] index: 67     cnst_light_num: 82      || usage: 0.000000 remaining: 2.175342 bound: 2.557443  
-> [0.000000]: [surf_maxmin/DEBUG] var=6, var->bound=-1.000000, var->weight=1.000000, min_usage=0.220110, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=22, var->bound=-1.000000, var->weight=1.000000, min_usage=0.220110, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=6, var.bound=-1.000000, var.weight=1.000000, min_usage=0.220110, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=22, var.bound=-1.000000, var.weight=1.000000, min_usage=0.220110, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (6) value to 0.220110
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.220110, Var(6)->weight: 1.000000, Var(6)->value: 0.220110 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.220110, Var(6).weight: 1.000000, Var(6).value: 0.220110 
 > [0.000000]: [surf_maxmin/DEBUG] index: 69     cnst_light_num: 81      || usage: 0.000000 remaining: 5.566744 bound: 6.223776  
 > [0.000000]: [surf_maxmin/DEBUG] index: 71     cnst_light_num: 80      || usage: 0.000000 remaining: 8.565684 bound: 9.140859  
 > [0.000000]: [surf_maxmin/DEBUG] index: 73     cnst_light_num: 79      || usage: 0.000000 remaining: 0.742072 bound: 1.418581  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (22) value to 0.220110
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.220110, Var(22)->weight: 1.000000, Var(22)->value: 0.220110 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.220110, Var(22).weight: 1.000000, Var(22).value: 0.220110 
 > [0.000000]: [surf_maxmin/DEBUG] index: 64     cnst_light_num: 78      || usage: 0.000000 remaining: 0.265229 bound: 0.819181  
 > [0.000000]: [surf_maxmin/DEBUG] index: 29     cnst_light_num: 77      || usage: 0.000000 remaining: 0.000000 bound: 1.078921  
 > [0.000000]: [surf_maxmin/DEBUG] index: 64     cnst_light_num: 76      || usage: 0.000000 remaining: 7.994916 bound: 8.301698  
 > [0.000000]: [surf_maxmin/DEBUG] index: 36     cnst_light_num: 75      || usage: 0.000000 remaining: 0.153476 bound: 1.148851  
-> [0.000000]: [surf_maxmin/DEBUG] var=28, var->bound=-1.000000, var->weight=1.000000, min_usage=0.263657, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=28, var.bound=-1.000000, var.weight=1.000000, min_usage=0.263657, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (28) value to 0.263657
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.263657, Var(28)->weight: 1.000000, Var(28)->value: 0.263657 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.263657, Var(28).weight: 1.000000, Var(28).value: 0.263657 
 > [0.000000]: [surf_maxmin/DEBUG] index: 29     cnst_light_num: 74      || usage: 0.000000 remaining: 8.806164 bound: 9.620380  
 > [0.000000]: [surf_maxmin/DEBUG] index: 38     cnst_light_num: 73      || usage: 0.000000 remaining: 8.089858 bound: 9.280719  
 > [0.000000]: [surf_maxmin/DEBUG] index: 33     cnst_light_num: 72      || usage: 0.000000 remaining: 4.844821 bound: 5.434565  
@@ -283,11 +283,11 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 38     cnst_light_num: 70      || usage: 0.000000 remaining: 4.360482 bound: 5.334665  
 > [0.000000]: [surf_maxmin/DEBUG] index: 25     cnst_light_num: 69      || usage: 0.000000 remaining: 0.000000 bound: 0.949051  
 > [0.000000]: [surf_maxmin/DEBUG] index: 37     cnst_light_num: 68      || usage: 0.000000 remaining: 5.851198 bound: 6.473526  
-> [0.000000]: [surf_maxmin/DEBUG] var=1, var->bound=-1.000000, var->weight=1.000000, min_usage=0.281538, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=15, var->bound=-1.000000, var->weight=1.000000, min_usage=0.281538, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=1, var.bound=-1.000000, var.weight=1.000000, min_usage=0.281538, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=15, var.bound=-1.000000, var.weight=1.000000, min_usage=0.281538, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (1) value to 0.281538
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.281538, Var(1)->weight: 1.000000, Var(1)->value: 0.281538 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.281538, Var(1).weight: 1.000000, Var(1).value: 0.281538 
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 67      || usage: 0.000000 remaining: 2.572545 bound: 3.166833  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 66      || usage: 0.000000 remaining: 2.546729 bound: 3.766234  
 > [0.000000]: [surf_maxmin/DEBUG] index: 4      cnst_light_num: 65      || usage: 0.000000 remaining: 8.853024 bound: 9.710290  
@@ -298,7 +298,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 21     cnst_light_num: 60      || usage: 0.000000 remaining: 1.765549 bound: 2.777223  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (15) value to 0.281538
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.281538, Var(15)->weight: 1.000000, Var(15)->value: 0.281538 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.281538, Var(15).weight: 1.000000, Var(15).value: 0.281538 
 > [0.000000]: [surf_maxmin/DEBUG] index: 24     cnst_light_num: 59      || usage: 0.000000 remaining: 6.743340 bound: 9.040959  
 > [0.000000]: [surf_maxmin/DEBUG] index: 28     cnst_light_num: 58      || usage: 0.000000 remaining: 3.193824 bound: 3.966034  
 > [0.000000]: [surf_maxmin/DEBUG] index: 18     cnst_light_num: 57      || usage: 0.000000 remaining: 0.152448 bound: 1.528472  
@@ -306,11 +306,11 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 41     cnst_light_num: 55      || usage: 0.000000 remaining: 1.804698 bound: 3.346653  
 > [0.000000]: [surf_maxmin/DEBUG] index: 14     cnst_light_num: 54      || usage: 0.000000 remaining: 7.352391 bound: 9.780220  
 > [0.000000]: [surf_maxmin/DEBUG] index: 6      cnst_light_num: 53      || usage: 0.000000 remaining: 4.865037 bound: 6.283716  
-> [0.000000]: [surf_maxmin/DEBUG] var=8, var->bound=-1.000000, var->weight=1.000000, min_usage=0.293237, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=16, var->bound=-1.000000, var->weight=1.000000, min_usage=0.293237, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=8, var.bound=-1.000000, var.weight=1.000000, min_usage=0.293237, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=16, var.bound=-1.000000, var.weight=1.000000, min_usage=0.293237, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (8) value to 0.293237
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.293237, Var(8)->weight: 1.000000, Var(8)->value: 0.293237 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.293237, Var(8).weight: 1.000000, Var(8).value: 0.293237 
 > [0.000000]: [surf_maxmin/DEBUG] index: 37     cnst_light_num: 52      || usage: 0.000000 remaining: 8.183363 bound: 9.610390  
 > [0.000000]: [surf_maxmin/DEBUG] index: 29     cnst_light_num: 51      || usage: 0.000000 remaining: 5.407458 bound: 6.343656  
 > [0.000000]: [surf_maxmin/DEBUG] index: 7      cnst_light_num: 50      || usage: 0.000000 remaining: 8.934859 bound: 9.760240  
@@ -330,7 +330,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 36      || usage: 0.000000 remaining: 5.604287 bound: 7.692308  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (16) value to 0.293237
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.293237, Var(16)->weight: 1.000000, Var(16)->value: 0.293237 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.293237, Var(16).weight: 1.000000, Var(16).value: 0.293237 
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 35      || usage: 0.000000 remaining: 0.000000 bound: 1.948052  
 > [0.000000]: [surf_maxmin/DEBUG] index: 26     cnst_light_num: 34      || usage: 0.000000 remaining: 5.197662 bound: 5.894106  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 33      || usage: 0.000000 remaining: 1.441086 bound: 3.006993  
@@ -345,10 +345,10 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 7      cnst_light_num: 24      || usage: 0.000000 remaining: 2.217343 bound: 4.375624  
 > [0.000000]: [surf_maxmin/DEBUG] index: 7      cnst_light_num: 23      || usage: 0.000000 remaining: 5.049686 bound: 5.934066  
 > [0.000000]: [surf_maxmin/DEBUG] index: 16     cnst_light_num: 22      || usage: 0.000000 remaining: 5.574190 bound: 7.082917  
-> [0.000000]: [surf_maxmin/DEBUG] var=4, var->bound=-1.000000, var->weight=1.000000, min_usage=0.319893, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=4, var.bound=-1.000000, var.weight=1.000000, min_usage=0.319893, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (4) value to 0.319893
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.319893, Var(4)->weight: 1.000000, Var(4)->value: 0.319893 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.319893, Var(4).weight: 1.000000, Var(4).value: 0.319893 
 > [0.000000]: [surf_maxmin/DEBUG] index: 20     cnst_light_num: 21      || usage: 0.000000 remaining: 4.569620 bound: 6.783217  
 > [0.000000]: [surf_maxmin/DEBUG] index: 6      cnst_light_num: 20      || usage: 0.000000 remaining: 3.597397 bound: 4.915085  
 > [0.000000]: [surf_maxmin/DEBUG] index: 10     cnst_light_num: 19      || usage: 0.000000 remaining: 4.238922 bound: 6.713287  
@@ -675,166 +675,166 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '131' usage: 10.369630 remaining: 1.608392 concurrency: 6<=7<=40
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '156' usage: 10.795205 remaining: 5.774226 concurrency: 6<=7<=9
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '103' usage: 11.283716 remaining: 1.088911 concurrency: 7<=8<=-1
-> [0.000000]: [surf_maxmin/DEBUG] var=101, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007926, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=110, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007926, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=125, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007926, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=130, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007926, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=131, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007926, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=132, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007926, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=136, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007926, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=138, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007926, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=139, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007926, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=153, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007926, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=101, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007926, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=110, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007926, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=125, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007926, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=130, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007926, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=131, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007926, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=132, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007926, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=136, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007926, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=138, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007926, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=139, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007926, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=153, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007926, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (101) value to 0.007926
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(101)->weight: 1.000000, Var(101)->value: 0.007926 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(101).weight: 1.000000, Var(101).value: 0.007926 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (110) value to 0.007926
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(110)->weight: 1.000000, Var(110)->value: 0.007926 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(110).weight: 1.000000, Var(110).value: 0.007926 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (125) value to 0.007926
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(125)->weight: 1.000000, Var(125)->value: 0.007926 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(125).weight: 1.000000, Var(125).value: 0.007926 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (130) value to 0.007926
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(130)->weight: 1.000000, Var(130)->value: 0.007926 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(130).weight: 1.000000, Var(130).value: 0.007926 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (131) value to 0.007926
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(131)->weight: 1.000000, Var(131)->value: 0.007926 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(131).weight: 1.000000, Var(131).value: 0.007926 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (132) value to 0.007926
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(132)->weight: 1.000000, Var(132)->value: 0.007926 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(132).weight: 1.000000, Var(132).value: 0.007926 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (136) value to 0.007926
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(136)->weight: 1.000000, Var(136)->value: 0.007926 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(136).weight: 1.000000, Var(136).value: 0.007926 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (138) value to 0.007926
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(138)->weight: 1.000000, Var(138)->value: 0.007926 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(138).weight: 1.000000, Var(138).value: 0.007926 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (139) value to 0.007926
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(139)->weight: 1.000000, Var(139)->value: 0.007926 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(139).weight: 1.000000, Var(139).value: 0.007926 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (153) value to 0.007926
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(153)->weight: 1.000000, Var(153)->value: 0.007926 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007926, Var(153).weight: 1.000000, Var(153).value: 0.007926 
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 100     || usage: 0.000000 remaining: 0.000000 bound: 0.119880  
-> [0.000000]: [surf_maxmin/DEBUG] var=102, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008159, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=103, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008159, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=104, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008159, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=105, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008159, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=106, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008159, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=112, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008159, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=127, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008159, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=129, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008159, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=102, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008159, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=103, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008159, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=104, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008159, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=105, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008159, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=106, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008159, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=112, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008159, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=127, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008159, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=129, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008159, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (102) value to 0.008159
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(102)->weight: 1.000000, Var(102)->value: 0.008159 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(102).weight: 1.000000, Var(102).value: 0.008159 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (103) value to 0.008159
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(103)->weight: 1.000000, Var(103)->value: 0.008159 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(103).weight: 1.000000, Var(103).value: 0.008159 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (104) value to 0.008159
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(104)->weight: 1.000000, Var(104)->value: 0.008159 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(104).weight: 1.000000, Var(104).value: 0.008159 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (105) value to 0.008159
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(105)->weight: 1.000000, Var(105)->value: 0.008159 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(105).weight: 1.000000, Var(105).value: 0.008159 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (106) value to 0.008159
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(106)->weight: 1.000000, Var(106)->value: 0.008159 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(106).weight: 1.000000, Var(106).value: 0.008159 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (112) value to 0.008159
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(112)->weight: 1.000000, Var(112)->value: 0.008159 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(112).weight: 1.000000, Var(112).value: 0.008159 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (127) value to 0.008159
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(127)->weight: 1.000000, Var(127)->value: 0.008159 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(127).weight: 1.000000, Var(127).value: 0.008159 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (129) value to 0.008159
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(129)->weight: 1.000000, Var(129)->value: 0.008159 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008159, Var(129).weight: 1.000000, Var(129).value: 0.008159 
 > [0.000000]: [surf_maxmin/DEBUG] index: 65     cnst_light_num: 99      || usage: 0.000000 remaining: 2.401264 bound: 2.457542  
 > [0.000000]: [surf_maxmin/DEBUG] index: 13     cnst_light_num: 98      || usage: 0.000000 remaining: 0.000000 bound: 0.159840  
-> [0.000000]: [surf_maxmin/DEBUG] var=108, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008523, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=114, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008523, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=116, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008523, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=121, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008523, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=141, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008523, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=144, var->bound=-1.000000, var->weight=1.000000, min_usage=0.008523, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=108, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008523, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=114, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008523, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=116, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008523, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=121, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008523, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=141, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008523, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=144, var.bound=-1.000000, var.weight=1.000000, min_usage=0.008523, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (108) value to 0.008523
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008523, Var(108)->weight: 1.000000, Var(108)->value: 0.008523 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008523, Var(108).weight: 1.000000, Var(108).value: 0.008523 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (114) value to 0.008523
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008523, Var(114)->weight: 1.000000, Var(114)->value: 0.008523 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008523, Var(114).weight: 1.000000, Var(114).value: 0.008523 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (116) value to 0.008523
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008523, Var(116)->weight: 1.000000, Var(116)->value: 0.008523 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008523, Var(116).weight: 1.000000, Var(116).value: 0.008523 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (121) value to 0.008523
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008523, Var(121)->weight: 1.000000, Var(121)->value: 0.008523 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008523, Var(121).weight: 1.000000, Var(121).value: 0.008523 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (141) value to 0.008523
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008523, Var(141)->weight: 1.000000, Var(141)->value: 0.008523 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008523, Var(141).weight: 1.000000, Var(141).value: 0.008523 
 > [0.000000]: [surf_maxmin/DEBUG] index: 71     cnst_light_num: 97      || usage: 0.000000 remaining: 8.670797 bound: 8.741259  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (144) value to 0.008523
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008523, Var(144)->weight: 1.000000, Var(144)->value: 0.008523 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.008523, Var(144).weight: 1.000000, Var(144).value: 0.008523 
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 96      || usage: 0.000000 remaining: 0.000000 bound: 0.149850  
 > [0.000000]: [surf_maxmin/DEBUG] index: 53     cnst_light_num: 95      || usage: 0.000000 remaining: 6.333684 bound: 6.373626  
-> [0.000000]: [surf_maxmin/DEBUG] var=117, var->bound=-1.000000, var->weight=1.000000, min_usage=0.016848, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=119, var->bound=-1.000000, var->weight=1.000000, min_usage=0.016848, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=181, var->bound=-1.000000, var->weight=1.000000, min_usage=0.016848, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=117, var.bound=-1.000000, var.weight=1.000000, min_usage=0.016848, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=119, var.bound=-1.000000, var.weight=1.000000, min_usage=0.016848, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=181, var.bound=-1.000000, var.weight=1.000000, min_usage=0.016848, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (117) value to 0.016848
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.016848, Var(117)->weight: 1.000000, Var(117)->value: 0.016848 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.016848, Var(117).weight: 1.000000, Var(117).value: 0.016848 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (119) value to 0.016848
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.016848, Var(119)->weight: 1.000000, Var(119)->value: 0.016848 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.016848, Var(119).weight: 1.000000, Var(119).value: 0.016848 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (181) value to 0.016848
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.016848, Var(181)->weight: 1.000000, Var(181)->value: 0.016848 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.016848, Var(181).weight: 1.000000, Var(181).value: 0.016848 
 > [0.000000]: [surf_maxmin/DEBUG] index: 69     cnst_light_num: 94      || usage: 0.000000 remaining: 5.020334 bound: 5.094905  
 > [0.000000]: [surf_maxmin/DEBUG] index: 22     cnst_light_num: 93      || usage: 0.000000 remaining: 0.000000 bound: 0.149850  
-> [0.000000]: [surf_maxmin/DEBUG] var=115, var->bound=-1.000000, var->weight=1.000000, min_usage=0.017542, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=120, var->bound=-1.000000, var->weight=1.000000, min_usage=0.017542, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=122, var->bound=-1.000000, var->weight=1.000000, min_usage=0.017542, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=115, var.bound=-1.000000, var.weight=1.000000, min_usage=0.017542, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=120, var.bound=-1.000000, var.weight=1.000000, min_usage=0.017542, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=122, var.bound=-1.000000, var.weight=1.000000, min_usage=0.017542, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (115) value to 0.017542
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.017542, Var(115)->weight: 1.000000, Var(115)->value: 0.017542 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.017542, Var(115).weight: 1.000000, Var(115).value: 0.017542 
 > [0.000000]: [surf_maxmin/DEBUG] index: 44     cnst_light_num: 92      || usage: 0.000000 remaining: 1.917360 bound: 2.027972  
 > [0.000000]: [surf_maxmin/DEBUG] index: 54     cnst_light_num: 91      || usage: 0.000000 remaining: 4.207907 bound: 4.305694  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (120) value to 0.017542
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.017542, Var(120)->weight: 1.000000, Var(120)->value: 0.017542 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.017542, Var(120).weight: 1.000000, Var(120).value: 0.017542 
 > [0.000000]: [surf_maxmin/DEBUG] index: 74     cnst_light_num: 90      || usage: 0.000000 remaining: 2.741877 bound: 2.887113  
 > [0.000000]: [surf_maxmin/DEBUG] index: 28     cnst_light_num: 89      || usage: 0.000000 remaining: 7.135906 bound: 7.252747  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (122) value to 0.017542
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.017542, Var(122)->weight: 1.000000, Var(122)->value: 0.017542 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.017542, Var(122).weight: 1.000000, Var(122).value: 0.017542 
 > [0.000000]: [surf_maxmin/DEBUG] index: 59     cnst_light_num: 88      || usage: 0.000000 remaining: 4.167871 bound: 4.315684  
 > [0.000000]: [surf_maxmin/DEBUG] index: 68     cnst_light_num: 87      || usage: 0.000000 remaining: 0.000000 bound: 0.249750  
-> [0.000000]: [surf_maxmin/DEBUG] var=109, var->bound=-1.000000, var->weight=1.000000, min_usage=0.023470, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=111, var->bound=-1.000000, var->weight=1.000000, min_usage=0.023470, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=118, var->bound=-1.000000, var->weight=1.000000, min_usage=0.023470, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=109, var.bound=-1.000000, var.weight=1.000000, min_usage=0.023470, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=111, var.bound=-1.000000, var.weight=1.000000, min_usage=0.023470, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=118, var.bound=-1.000000, var.weight=1.000000, min_usage=0.023470, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (109) value to 0.023470
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023470, Var(109)->weight: 1.000000, Var(109)->value: 0.023470 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023470, Var(109).weight: 1.000000, Var(109).value: 0.023470 
 > [0.000000]: [surf_maxmin/DEBUG] index: 38     cnst_light_num: 86      || usage: 0.000000 remaining: 3.751087 bound: 3.896104  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (111) value to 0.023470
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023470, Var(111)->weight: 1.000000, Var(111)->value: 0.023470 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023470, Var(111).weight: 1.000000, Var(111).value: 0.023470 
 > [0.000000]: [surf_maxmin/DEBUG] index: 54     cnst_light_num: 85      || usage: 0.000000 remaining: 1.804308 bound: 1.878122  
 > [0.000000]: [surf_maxmin/DEBUG] index: 69     cnst_light_num: 84      || usage: 0.000000 remaining: 8.730985 bound: 8.861139  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (118) value to 0.023470
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023470, Var(118)->weight: 1.000000, Var(118)->value: 0.023470 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023470, Var(118).weight: 1.000000, Var(118).value: 0.023470 
 > [0.000000]: [surf_maxmin/DEBUG] index: 28     cnst_light_num: 83      || usage: 0.000000 remaining: 2.564810 bound: 2.737263  
 > [0.000000]: [surf_maxmin/DEBUG] index: 26     cnst_light_num: 82      || usage: 0.000000 remaining: 7.605992 bound: 7.722278  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 81      || usage: 0.000000 remaining: 0.000000 bound: 0.229770  
 > [0.000000]: [surf_maxmin/DEBUG] index: 66     cnst_light_num: 80      || usage: 0.000000 remaining: 6.046675 bound: 6.253746  
 > [0.000000]: [surf_maxmin/DEBUG] index: 62     cnst_light_num: 79      || usage: 0.000000 remaining: 7.487702 bound: 7.702298  
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 78      || usage: 0.000000 remaining: 1.079910 bound: 1.168831  
-> [0.000000]: [surf_maxmin/DEBUG] var=113, var->bound=-1.000000, var->weight=1.000000, min_usage=0.052532, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=156, var->bound=-1.000000, var->weight=1.000000, min_usage=0.052532, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=113, var.bound=-1.000000, var.weight=1.000000, min_usage=0.052532, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=156, var.bound=-1.000000, var.weight=1.000000, min_usage=0.052532, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (113) value to 0.052532
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.052532, Var(113)->weight: 1.000000, Var(113)->value: 0.052532 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.052532, Var(113).weight: 1.000000, Var(113).value: 0.052532 
 > [0.000000]: [surf_maxmin/DEBUG] index: 42     cnst_light_num: 77      || usage: 0.000000 remaining: 6.792157 bound: 7.062937  
 > [0.000000]: [surf_maxmin/DEBUG] index: 31     cnst_light_num: 76      || usage: 0.000000 remaining: 9.368723 bound: 9.540460  
 > [0.000000]: [surf_maxmin/DEBUG] index: 50     cnst_light_num: 75      || usage: 0.000000 remaining: 8.560864 bound: 8.751249  
@@ -843,7 +843,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 45     cnst_light_num: 72      || usage: 0.000000 remaining: 4.138470 bound: 4.365634  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (156) value to 0.052532
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.052532, Var(156)->weight: 1.000000, Var(156)->value: 0.052532 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.052532, Var(156).weight: 1.000000, Var(156).value: 0.052532 
 > [0.000000]: [surf_maxmin/DEBUG] index: 20     cnst_light_num: 71      || usage: 0.000000 remaining: 5.229336 bound: 5.404595  
 > [0.000000]: [surf_maxmin/DEBUG] index: 52     cnst_light_num: 70      || usage: 0.000000 remaining: 9.576867 bound: 9.730270  
 > [0.000000]: [surf_maxmin/DEBUG] index: 40     cnst_light_num: 69      || usage: 0.000000 remaining: 0.000000 bound: 0.299700  
@@ -852,10 +852,10 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 65     cnst_light_num: 66      || usage: 0.000000 remaining: 5.550824 bound: 5.774226  
 > [0.000000]: [surf_maxmin/DEBUG] index: 38     cnst_light_num: 65      || usage: 0.000000 remaining: 6.938266 bound: 7.102897  
 > [0.000000]: [surf_maxmin/DEBUG] index: 23     cnst_light_num: 64      || usage: 0.000000 remaining: 3.985576 bound: 4.125874  
-> [0.000000]: [surf_maxmin/DEBUG] var=147, var->bound=-1.000000, var->weight=1.000000, min_usage=0.060227, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=147, var.bound=-1.000000, var.weight=1.000000, min_usage=0.060227, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (147) value to 0.060227
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.060227, Var(147)->weight: 1.000000, Var(147)->value: 0.060227 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.060227, Var(147).weight: 1.000000, Var(147).value: 0.060227 
 > [0.000000]: [surf_maxmin/DEBUG] index: 60     cnst_light_num: 63      || usage: 0.000000 remaining: 0.790150 bound: 1.138861  
 > [0.000000]: [surf_maxmin/DEBUG] index: 57     cnst_light_num: 62      || usage: 0.000000 remaining: 1.626935 bound: 1.938062  
 > [0.000000]: [surf_maxmin/DEBUG] index: 59     cnst_light_num: 61      || usage: 0.000000 remaining: 1.881502 bound: 2.127872  
@@ -865,11 +865,11 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 7      cnst_light_num: 57      || usage: 0.000000 remaining: 7.011837 bound: 7.362637  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 56      || usage: 0.000000 remaining: 0.000000 bound: 0.239760  
 > [0.000000]: [surf_maxmin/DEBUG] index: 36     cnst_light_num: 55      || usage: 0.000000 remaining: 1.363107 bound: 1.548452  
-> [0.000000]: [surf_maxmin/DEBUG] var=107, var->bound=-1.000000, var->weight=1.000000, min_usage=0.151955, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=124, var->bound=-1.000000, var->weight=1.000000, min_usage=0.151955, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=107, var.bound=-1.000000, var.weight=1.000000, min_usage=0.151955, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=124, var.bound=-1.000000, var.weight=1.000000, min_usage=0.151955, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (107) value to 0.151955
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.151955, Var(107)->weight: 1.000000, Var(107)->value: 0.151955 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.151955, Var(107).weight: 1.000000, Var(107).value: 0.151955 
 > [0.000000]: [surf_maxmin/DEBUG] index: 47     cnst_light_num: 54      || usage: 0.000000 remaining: 5.898751 bound: 6.563437  
 > [0.000000]: [surf_maxmin/DEBUG] index: 34     cnst_light_num: 53      || usage: 0.000000 remaining: 8.764203 bound: 9.020979  
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 52      || usage: 0.000000 remaining: 0.367055 bound: 0.569431  
@@ -881,7 +881,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 26     cnst_light_num: 46      || usage: 0.000000 remaining: 1.453623 bound: 1.828172  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (124) value to 0.151955
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.151955, Var(124)->weight: 1.000000, Var(124)->value: 0.151955 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.151955, Var(124).weight: 1.000000, Var(124).value: 0.151955 
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 45      || usage: 0.000000 remaining: 7.302255 bound: 7.932068  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 44      || usage: 0.000000 remaining: 7.271628 bound: 8.151848  
 > [0.000000]: [surf_maxmin/DEBUG] index: 17     cnst_light_num: 43      || usage: 0.000000 remaining: 8.011786 bound: 8.281718  
@@ -903,10 +903,10 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 27      || usage: 0.000000 remaining: 9.218764 bound: 9.880120  
 > [0.000000]: [surf_maxmin/DEBUG] index: 13     cnst_light_num: 26      || usage: 0.000000 remaining: 1.190898 bound: 1.608392  
 > [0.000000]: [surf_maxmin/DEBUG] index: 14     cnst_light_num: 25      || usage: 0.000000 remaining: 3.822706 bound: 4.185814  
-> [0.000000]: [surf_maxmin/DEBUG] var=143, var->bound=-1.000000, var->weight=1.000000, min_usage=0.162422, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=143, var.bound=-1.000000, var.weight=1.000000, min_usage=0.162422, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (143) value to 0.162422
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.162422, Var(143)->weight: 1.000000, Var(143)->value: 0.162422 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.162422, Var(143).weight: 1.000000, Var(143).value: 0.162422 
 > [0.000000]: [surf_maxmin/DEBUG] index: 14     cnst_light_num: 24      || usage: 0.000000 remaining: 9.155216 bound: 9.790210  
 > [0.000000]: [surf_maxmin/DEBUG] index: 13     cnst_light_num: 23      || usage: 0.000000 remaining: 8.797972 bound: 9.480519  
 > [0.000000]: [surf_maxmin/DEBUG] index: 8      cnst_light_num: 22      || usage: 0.000000 remaining: 6.211834 bound: 6.843157  
@@ -1236,188 +1236,188 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '234' usage: 12.654845 remaining: 4.035964 concurrency: 6<=6<=24
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '272' usage: 19.035465 remaining: 1.598402 concurrency: 8<=9<=24
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '224' usage: 16.651349 remaining: 9.110889 concurrency: 10<=10<=10
-> [0.000000]: [surf_maxmin/DEBUG] var=204, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004588, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=205, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004588, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=208, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004588, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=209, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004588, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=217, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004588, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=220, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004588, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=221, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004588, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=222, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004588, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=223, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004588, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=240, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004588, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=259, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004588, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=272, var->bound=-1.000000, var->weight=1.000000, min_usage=0.004588, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=204, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004588, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=205, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004588, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=208, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004588, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=209, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004588, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=217, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004588, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=220, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004588, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=221, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004588, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=222, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004588, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=223, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004588, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=240, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004588, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=259, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004588, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=272, var.bound=-1.000000, var.weight=1.000000, min_usage=0.004588, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (204) value to 0.004588
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(204)->weight: 1.000000, Var(204)->value: 0.004588 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(204).weight: 1.000000, Var(204).value: 0.004588 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (205) value to 0.004588
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(205)->weight: 1.000000, Var(205)->value: 0.004588 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(205).weight: 1.000000, Var(205).value: 0.004588 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (208) value to 0.004588
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(208)->weight: 1.000000, Var(208)->value: 0.004588 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(208).weight: 1.000000, Var(208).value: 0.004588 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (209) value to 0.004588
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(209)->weight: 1.000000, Var(209)->value: 0.004588 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(209).weight: 1.000000, Var(209).value: 0.004588 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (217) value to 0.004588
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(217)->weight: 1.000000, Var(217)->value: 0.004588 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(217).weight: 1.000000, Var(217).value: 0.004588 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (220) value to 0.004588
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(220)->weight: 1.000000, Var(220)->value: 0.004588 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(220).weight: 1.000000, Var(220).value: 0.004588 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (221) value to 0.004588
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(221)->weight: 1.000000, Var(221)->value: 0.004588 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(221).weight: 1.000000, Var(221).value: 0.004588 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (222) value to 0.004588
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(222)->weight: 1.000000, Var(222)->value: 0.004588 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(222).weight: 1.000000, Var(222).value: 0.004588 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (223) value to 0.004588
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(223)->weight: 1.000000, Var(223)->value: 0.004588 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(223).weight: 1.000000, Var(223).value: 0.004588 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (240) value to 0.004588
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(240)->weight: 1.000000, Var(240)->value: 0.004588 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(240).weight: 1.000000, Var(240).value: 0.004588 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (259) value to 0.004588
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(259)->weight: 1.000000, Var(259)->value: 0.004588 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(259).weight: 1.000000, Var(259).value: 0.004588 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (272) value to 0.004588
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(272)->weight: 1.000000, Var(272)->value: 0.004588 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.004588, Var(272).weight: 1.000000, Var(272).value: 0.004588 
 > [0.000000]: [surf_maxmin/DEBUG] index: 57     cnst_light_num: 100     || usage: 0.000000 remaining: 0.000000 bound: 0.069930  
-> [0.000000]: [surf_maxmin/DEBUG] var=203, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011179, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=215, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011179, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=216, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011179, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=226, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011179, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=230, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011179, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=244, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011179, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=253, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011179, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=254, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011179, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=203, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011179, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=215, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011179, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=216, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011179, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=226, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011179, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=230, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011179, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=244, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011179, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=253, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011179, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=254, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011179, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (203) value to 0.011179
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(203)->weight: 1.000000, Var(203)->value: 0.011179 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(203).weight: 1.000000, Var(203).value: 0.011179 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (215) value to 0.011179
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(215)->weight: 1.000000, Var(215)->value: 0.011179 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(215).weight: 1.000000, Var(215).value: 0.011179 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (216) value to 0.011179
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(216)->weight: 1.000000, Var(216)->value: 0.011179 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(216).weight: 1.000000, Var(216).value: 0.011179 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (226) value to 0.011179
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(226)->weight: 1.000000, Var(226)->value: 0.011179 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(226).weight: 1.000000, Var(226).value: 0.011179 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (230) value to 0.011179
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(230)->weight: 1.000000, Var(230)->value: 0.011179 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(230).weight: 1.000000, Var(230).value: 0.011179 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (244) value to 0.011179
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(244)->weight: 1.000000, Var(244)->value: 0.011179 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(244).weight: 1.000000, Var(244).value: 0.011179 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (253) value to 0.011179
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(253)->weight: 1.000000, Var(253)->value: 0.011179 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(253).weight: 1.000000, Var(253).value: 0.011179 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (254) value to 0.011179
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(254)->weight: 1.000000, Var(254)->value: 0.011179 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011179, Var(254).weight: 1.000000, Var(254).value: 0.011179 
 > [0.000000]: [surf_maxmin/DEBUG] index: 41     cnst_light_num: 99      || usage: 0.000000 remaining: 0.000000 bound: 0.129870  
-> [0.000000]: [surf_maxmin/DEBUG] var=206, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011967, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=214, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011967, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=224, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011967, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=228, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011967, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=235, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011967, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=255, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011967, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=261, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011967, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=206, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011967, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=214, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011967, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=224, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011967, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=228, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011967, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=235, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011967, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=255, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011967, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=261, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011967, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (206) value to 0.011967
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(206)->weight: 1.000000, Var(206)->value: 0.011967 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(206).weight: 1.000000, Var(206).value: 0.011967 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (214) value to 0.011967
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(214)->weight: 1.000000, Var(214)->value: 0.011967 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(214).weight: 1.000000, Var(214).value: 0.011967 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (224) value to 0.011967
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(224)->weight: 1.000000, Var(224)->value: 0.011967 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(224).weight: 1.000000, Var(224).value: 0.011967 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (228) value to 0.011967
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(228)->weight: 1.000000, Var(228)->value: 0.011967 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(228).weight: 1.000000, Var(228).value: 0.011967 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (235) value to 0.011967
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(235)->weight: 1.000000, Var(235)->value: 0.011967 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(235).weight: 1.000000, Var(235).value: 0.011967 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (255) value to 0.011967
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(255)->weight: 1.000000, Var(255)->value: 0.011967 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(255).weight: 1.000000, Var(255).value: 0.011967 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (261) value to 0.011967
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(261)->weight: 1.000000, Var(261)->value: 0.011967 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011967, Var(261).weight: 1.000000, Var(261).value: 0.011967 
 > [0.000000]: [surf_maxmin/DEBUG] index: 44     cnst_light_num: 98      || usage: 0.000000 remaining: 0.000000 bound: 0.209790  
-> [0.000000]: [surf_maxmin/DEBUG] var=210, var->bound=-1.000000, var->weight=1.000000, min_usage=0.018751, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=218, var->bound=-1.000000, var->weight=1.000000, min_usage=0.018751, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=219, var->bound=-1.000000, var->weight=1.000000, min_usage=0.018751, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=245, var->bound=-1.000000, var->weight=1.000000, min_usage=0.018751, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=210, var.bound=-1.000000, var.weight=1.000000, min_usage=0.018751, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=218, var.bound=-1.000000, var.weight=1.000000, min_usage=0.018751, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=219, var.bound=-1.000000, var.weight=1.000000, min_usage=0.018751, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=245, var.bound=-1.000000, var.weight=1.000000, min_usage=0.018751, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (210) value to 0.018751
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018751, Var(210)->weight: 1.000000, Var(210)->value: 0.018751 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018751, Var(210).weight: 1.000000, Var(210).value: 0.018751 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (218) value to 0.018751
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018751, Var(218)->weight: 1.000000, Var(218)->value: 0.018751 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018751, Var(218).weight: 1.000000, Var(218).value: 0.018751 
 > [0.000000]: [surf_maxmin/DEBUG] index: 63     cnst_light_num: 97      || usage: 0.000000 remaining: 0.578879 bound: 0.679321  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (219) value to 0.018751
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018751, Var(219)->weight: 1.000000, Var(219)->value: 0.018751 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018751, Var(219).weight: 1.000000, Var(219).value: 0.018751 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (245) value to 0.018751
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018751, Var(245)->weight: 1.000000, Var(245)->value: 0.018751 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018751, Var(245).weight: 1.000000, Var(245).value: 0.018751 
 > [0.000000]: [surf_maxmin/DEBUG] index: 93     cnst_light_num: 96      || usage: 0.000000 remaining: 3.076350 bound: 3.146853  
 > [0.000000]: [surf_maxmin/DEBUG] index: 45     cnst_light_num: 95      || usage: 0.000000 remaining: 3.769672 bound: 3.896104  
 > [0.000000]: [surf_maxmin/DEBUG] index: 84     cnst_light_num: 94      || usage: 0.000000 remaining: 0.000000 bound: 0.219780  
-> [0.000000]: [surf_maxmin/DEBUG] var=212, var->bound=-1.000000, var->weight=1.000000, min_usage=0.024496, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=213, var->bound=-1.000000, var->weight=1.000000, min_usage=0.024496, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=247, var->bound=-1.000000, var->weight=1.000000, min_usage=0.024496, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=251, var->bound=-1.000000, var->weight=1.000000, min_usage=0.024496, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=270, var->bound=-1.000000, var->weight=1.000000, min_usage=0.024496, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=212, var.bound=-1.000000, var.weight=1.000000, min_usage=0.024496, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=213, var.bound=-1.000000, var.weight=1.000000, min_usage=0.024496, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=247, var.bound=-1.000000, var.weight=1.000000, min_usage=0.024496, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=251, var.bound=-1.000000, var.weight=1.000000, min_usage=0.024496, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=270, var.bound=-1.000000, var.weight=1.000000, min_usage=0.024496, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (212) value to 0.024496
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.024496, Var(212)->weight: 1.000000, Var(212)->value: 0.024496 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.024496, Var(212).weight: 1.000000, Var(212).value: 0.024496 
 > [0.000000]: [surf_maxmin/DEBUG] index: 61     cnst_light_num: 93      || usage: 0.000000 remaining: 2.039851 bound: 2.127872  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (213) value to 0.024496
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.024496, Var(213)->weight: 1.000000, Var(213)->value: 0.024496 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.024496, Var(213).weight: 1.000000, Var(213).value: 0.024496 
 > [0.000000]: [surf_maxmin/DEBUG] index: 44     cnst_light_num: 92      || usage: 0.000000 remaining: 3.878060 bound: 4.035964  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (247) value to 0.024496
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.024496, Var(247)->weight: 1.000000, Var(247)->value: 0.024496 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.024496, Var(247).weight: 1.000000, Var(247).value: 0.024496 
 > [0.000000]: [surf_maxmin/DEBUG] index: 60     cnst_light_num: 91      || usage: 0.000000 remaining: 7.260437 bound: 7.472527  
 > [0.000000]: [surf_maxmin/DEBUG] index: 78     cnst_light_num: 90      || usage: 0.000000 remaining: 6.425400 bound: 6.613387  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (251) value to 0.024496
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.024496, Var(251)->weight: 1.000000, Var(251)->value: 0.024496 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.024496, Var(251).weight: 1.000000, Var(251).value: 0.024496 
 > [0.000000]: [surf_maxmin/DEBUG] index: 70     cnst_light_num: 89      || usage: 0.000000 remaining: 5.064446 bound: 5.214785  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (270) value to 0.024496
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.024496, Var(270)->weight: 1.000000, Var(270)->value: 0.024496 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.024496, Var(270).weight: 1.000000, Var(270).value: 0.024496 
 > [0.000000]: [surf_maxmin/DEBUG] index: 45     cnst_light_num: 88      || usage: 0.000000 remaining: 4.866697 bound: 5.074925  
 > [0.000000]: [surf_maxmin/DEBUG] index: 54     cnst_light_num: 87      || usage: 0.000000 remaining: 2.783177 bound: 2.847153  
 > [0.000000]: [surf_maxmin/DEBUG] index: 73     cnst_light_num: 86      || usage: 0.000000 remaining: 0.000000 bound: 0.269730  
-> [0.000000]: [surf_maxmin/DEBUG] var=231, var->bound=-1.000000, var->weight=1.000000, min_usage=0.028740, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=258, var->bound=-1.000000, var->weight=1.000000, min_usage=0.028740, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=231, var.bound=-1.000000, var.weight=1.000000, min_usage=0.028740, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=258, var.bound=-1.000000, var.weight=1.000000, min_usage=0.028740, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (231) value to 0.028740
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.028740, Var(231)->weight: 1.000000, Var(231)->value: 0.028740 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.028740, Var(231).weight: 1.000000, Var(231).value: 0.028740 
 > [0.000000]: [surf_maxmin/DEBUG] index: 63     cnst_light_num: 85      || usage: 0.000000 remaining: 7.996007 bound: 8.151848  
 > [0.000000]: [surf_maxmin/DEBUG] index: 56     cnst_light_num: 84      || usage: 0.000000 remaining: 1.988515 bound: 2.207792  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (258) value to 0.028740
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.028740, Var(258)->weight: 1.000000, Var(258)->value: 0.028740 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.028740, Var(258).weight: 1.000000, Var(258).value: 0.028740 
 > [0.000000]: [surf_maxmin/DEBUG] index: 58     cnst_light_num: 83      || usage: 0.000000 remaining: 0.000000 bound: 0.219780  
 > [0.000000]: [surf_maxmin/DEBUG] index: 52     cnst_light_num: 82      || usage: 0.000000 remaining: 3.636900 bound: 3.856144  
 > [0.000000]: [surf_maxmin/DEBUG] index: 48     cnst_light_num: 81      || usage: 0.000000 remaining: 5.787038 bound: 6.073926  
 > [0.000000]: [surf_maxmin/DEBUG] index: 76     cnst_light_num: 80      || usage: 0.000000 remaining: 6.904787 bound: 7.102897  
 > [0.000000]: [surf_maxmin/DEBUG] index: 76     cnst_light_num: 79      || usage: 0.000000 remaining: 2.965961 bound: 3.096903  
 > [0.000000]: [surf_maxmin/DEBUG] index: 63     cnst_light_num: 78      || usage: 0.000000 remaining: 4.074735 bound: 4.255744  
-> [0.000000]: [surf_maxmin/DEBUG] var=207, var->bound=-1.000000, var->weight=1.000000, min_usage=0.081677, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=211, var->bound=-1.000000, var->weight=1.000000, min_usage=0.081677, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=225, var->bound=-1.000000, var->weight=1.000000, min_usage=0.081677, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=241, var->bound=-1.000000, var->weight=1.000000, min_usage=0.081677, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=207, var.bound=-1.000000, var.weight=1.000000, min_usage=0.081677, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=211, var.bound=-1.000000, var.weight=1.000000, min_usage=0.081677, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=225, var.bound=-1.000000, var.weight=1.000000, min_usage=0.081677, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=241, var.bound=-1.000000, var.weight=1.000000, min_usage=0.081677, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (207) value to 0.081677
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.081677, Var(207)->weight: 1.000000, Var(207)->value: 0.081677 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.081677, Var(207).weight: 1.000000, Var(207).value: 0.081677 
 > [0.000000]: [surf_maxmin/DEBUG] index: 58     cnst_light_num: 77      || usage: 0.000000 remaining: 8.327882 bound: 8.671329  
 > [0.000000]: [surf_maxmin/DEBUG] index: 40     cnst_light_num: 76      || usage: 0.000000 remaining: 6.555929 bound: 6.863137  
 > [0.000000]: [surf_maxmin/DEBUG] index: 50     cnst_light_num: 75      || usage: 0.000000 remaining: 1.475985 bound: 1.838162  
@@ -1425,7 +1425,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 70     cnst_light_num: 73      || usage: 0.000000 remaining: 9.192322 bound: 9.540460  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (211) value to 0.081677
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.081677, Var(211)->weight: 1.000000, Var(211)->value: 0.081677 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.081677, Var(211).weight: 1.000000, Var(211).value: 0.081677 
 > [0.000000]: [surf_maxmin/DEBUG] index: 50     cnst_light_num: 72      || usage: 0.000000 remaining: 3.995254 bound: 4.445554  
 > [0.000000]: [surf_maxmin/DEBUG] index: 60     cnst_light_num: 71      || usage: 0.000000 remaining: 8.857261 bound: 9.130869  
 > [0.000000]: [surf_maxmin/DEBUG] index: 42     cnst_light_num: 70      || usage: 0.000000 remaining: 6.483225 bound: 6.703297  
@@ -1433,7 +1433,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 54     cnst_light_num: 68      || usage: 0.000000 remaining: 3.798887 bound: 4.235764  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (225) value to 0.081677
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.081677, Var(225)->weight: 1.000000, Var(225)->value: 0.081677 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.081677, Var(225).weight: 1.000000, Var(225).value: 0.081677 
 > [0.000000]: [surf_maxmin/DEBUG] index: 65     cnst_light_num: 67      || usage: 0.000000 remaining: 7.072223 bound: 7.462537  
 > [0.000000]: [surf_maxmin/DEBUG] index: 50     cnst_light_num: 66      || usage: 0.000000 remaining: 2.691950 bound: 2.967033  
 > [0.000000]: [surf_maxmin/DEBUG] index: 64     cnst_light_num: 65      || usage: 0.000000 remaining: 0.118066 bound: 0.439560  
@@ -1449,7 +1449,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 44     cnst_light_num: 55      || usage: 0.000000 remaining: 2.679793 bound: 2.957043  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (241) value to 0.081677
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.081677, Var(241)->weight: 1.000000, Var(241)->value: 0.081677 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.081677, Var(241).weight: 1.000000, Var(241).value: 0.081677 
 > [0.000000]: [surf_maxmin/DEBUG] index: 41     cnst_light_num: 54      || usage: 0.000000 remaining: 1.184105 bound: 1.598402  
 > [0.000000]: [surf_maxmin/DEBUG] index: 39     cnst_light_num: 53      || usage: 0.000000 remaining: 3.653829 bound: 3.896104  
 > [0.000000]: [surf_maxmin/DEBUG] index: 39     cnst_light_num: 52      || usage: 0.000000 remaining: 0.077489 bound: 0.369630  
@@ -1466,10 +1466,10 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 39     cnst_light_num: 41      || usage: 0.000000 remaining: 6.589209 bound: 6.963037  
 > [0.000000]: [surf_maxmin/DEBUG] index: 38     cnst_light_num: 40      || usage: 0.000000 remaining: 8.777468 bound: 9.170829  
 > [0.000000]: [surf_maxmin/DEBUG] index: 38     cnst_light_num: 39      || usage: 0.000000 remaining: 6.325405 bound: 6.563437  
-> [0.000000]: [surf_maxmin/DEBUG] var=202, var->bound=-1.000000, var->weight=1.000000, min_usage=0.128912, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=202, var.bound=-1.000000, var.weight=1.000000, min_usage=0.128912, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (202) value to 0.128912
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.128912, Var(202)->weight: 1.000000, Var(202)->value: 0.128912 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.128912, Var(202).weight: 1.000000, Var(202).value: 0.128912 
 > [0.000000]: [surf_maxmin/DEBUG] index: 20     cnst_light_num: 38      || usage: 0.000000 remaining: 2.032430 bound: 2.307692  
 > [0.000000]: [surf_maxmin/DEBUG] index: 21     cnst_light_num: 37      || usage: 0.000000 remaining: 6.334159 bound: 6.913087  
 > [0.000000]: [surf_maxmin/DEBUG] index: 22     cnst_light_num: 36      || usage: 0.000000 remaining: 0.404144 bound: 0.889111  
@@ -1488,10 +1488,10 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 22     cnst_light_num: 23      || usage: 0.000000 remaining: 5.378706 bound: 5.894106  
 > [0.000000]: [surf_maxmin/DEBUG] index: 21     cnst_light_num: 22      || usage: 0.000000 remaining: 7.128378 bound: 7.842158  
 > [0.000000]: [surf_maxmin/DEBUG] index: 20     cnst_light_num: 21      || usage: 0.000000 remaining: 3.080921 bound: 3.706294  
-> [0.000000]: [surf_maxmin/DEBUG] var=201, var->bound=-1.000000, var->weight=1.000000, min_usage=1.559233, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=201, var.bound=-1.000000, var.weight=1.000000, min_usage=1.559233, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (201) value to 1.559233
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.559233, Var(201)->weight: 1.000000, Var(201)->value: 1.559233 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.559233, Var(201).weight: 1.000000, Var(201).value: 1.559233 
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 20      || usage: 0.000000 remaining: 2.120434 bound: 3.656344  
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 19      || usage: 0.000000 remaining: 3.188475 bound: 5.324675  
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 18      || usage: 0.000000 remaining: 0.342262 bound: 3.136863  
@@ -1817,190 +1817,190 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '344' usage: 12.720779 remaining: 3.846154 concurrency: 6<=7<=16
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '390' usage: 8.037962 remaining: 2.907093 concurrency: 5<=6<=40
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '313' usage: 11.415584 remaining: 0.679321 concurrency: 5<=6<=40
-> [0.000000]: [surf_maxmin/DEBUG] var=302, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007198, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=307, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007198, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=308, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007198, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=309, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007198, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=311, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007198, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=312, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007198, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=327, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007198, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=328, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007198, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=335, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007198, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=338, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007198, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=352, var->bound=-1.000000, var->weight=1.000000, min_usage=0.007198, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=302, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007198, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=307, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007198, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=308, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007198, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=309, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007198, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=311, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007198, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=312, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007198, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=327, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007198, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=328, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007198, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=335, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007198, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=338, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007198, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=352, var.bound=-1.000000, var.weight=1.000000, min_usage=0.007198, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (302) value to 0.007198
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(302)->weight: 1.000000, Var(302)->value: 0.007198 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(302).weight: 1.000000, Var(302).value: 0.007198 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (307) value to 0.007198
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(307)->weight: 1.000000, Var(307)->value: 0.007198 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(307).weight: 1.000000, Var(307).value: 0.007198 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (308) value to 0.007198
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(308)->weight: 1.000000, Var(308)->value: 0.007198 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(308).weight: 1.000000, Var(308).value: 0.007198 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (309) value to 0.007198
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(309)->weight: 1.000000, Var(309)->value: 0.007198 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(309).weight: 1.000000, Var(309).value: 0.007198 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (311) value to 0.007198
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(311)->weight: 1.000000, Var(311)->value: 0.007198 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(311).weight: 1.000000, Var(311).value: 0.007198 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (312) value to 0.007198
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(312)->weight: 1.000000, Var(312)->value: 0.007198 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(312).weight: 1.000000, Var(312).value: 0.007198 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (327) value to 0.007198
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(327)->weight: 1.000000, Var(327)->value: 0.007198 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(327).weight: 1.000000, Var(327).value: 0.007198 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (328) value to 0.007198
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(328)->weight: 1.000000, Var(328)->value: 0.007198 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(328).weight: 1.000000, Var(328).value: 0.007198 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (335) value to 0.007198
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(335)->weight: 1.000000, Var(335)->value: 0.007198 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(335).weight: 1.000000, Var(335).value: 0.007198 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (338) value to 0.007198
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(338)->weight: 1.000000, Var(338)->value: 0.007198 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(338).weight: 1.000000, Var(338).value: 0.007198 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (352) value to 0.007198
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(352)->weight: 1.000000, Var(352)->value: 0.007198 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.007198, Var(352).weight: 1.000000, Var(352).value: 0.007198 
 > [0.000000]: [surf_maxmin/DEBUG] index: 39     cnst_light_num: 100     || usage: 0.000000 remaining: 0.000000 bound: 0.139860  
-> [0.000000]: [surf_maxmin/DEBUG] var=301, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=304, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=315, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=318, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=319, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=322, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=332, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=333, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=334, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=339, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=343, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=344, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=345, var->bound=-1.000000, var->weight=1.000000, min_usage=0.011252, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=301, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=304, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=315, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=318, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=319, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=322, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=332, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=333, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=334, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=339, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=343, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=344, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=345, var.bound=-1.000000, var.weight=1.000000, min_usage=0.011252, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (301) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(301)->weight: 1.000000, Var(301)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(301).weight: 1.000000, Var(301).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (304) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(304)->weight: 1.000000, Var(304)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(304).weight: 1.000000, Var(304).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (315) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(315)->weight: 1.000000, Var(315)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(315).weight: 1.000000, Var(315).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (318) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(318)->weight: 1.000000, Var(318)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(318).weight: 1.000000, Var(318).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (319) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(319)->weight: 1.000000, Var(319)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(319).weight: 1.000000, Var(319).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (322) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(322)->weight: 1.000000, Var(322)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(322).weight: 1.000000, Var(322).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (332) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(332)->weight: 1.000000, Var(332)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(332).weight: 1.000000, Var(332).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (333) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(333)->weight: 1.000000, Var(333)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(333).weight: 1.000000, Var(333).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (334) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(334)->weight: 1.000000, Var(334)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(334).weight: 1.000000, Var(334).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (339) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(339)->weight: 1.000000, Var(339)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(339).weight: 1.000000, Var(339).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (343) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(343)->weight: 1.000000, Var(343)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(343).weight: 1.000000, Var(343).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (344) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(344)->weight: 1.000000, Var(344)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(344).weight: 1.000000, Var(344).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (345) value to 0.011252
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(345)->weight: 1.000000, Var(345)->value: 0.011252 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.011252, Var(345).weight: 1.000000, Var(345).value: 0.011252 
 > [0.000000]: [surf_maxmin/DEBUG] index: 14     cnst_light_num: 99      || usage: 0.000000 remaining: 0.000000 bound: 0.299700  
-> [0.000000]: [surf_maxmin/DEBUG] var=306, var->bound=-1.000000, var->weight=1.000000, min_usage=0.018582, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=310, var->bound=-1.000000, var->weight=1.000000, min_usage=0.018582, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=313, var->bound=-1.000000, var->weight=1.000000, min_usage=0.018582, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=314, var->bound=-1.000000, var->weight=1.000000, min_usage=0.018582, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=342, var->bound=-1.000000, var->weight=1.000000, min_usage=0.018582, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=350, var->bound=-1.000000, var->weight=1.000000, min_usage=0.018582, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=368, var->bound=-1.000000, var->weight=1.000000, min_usage=0.018582, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=306, var.bound=-1.000000, var.weight=1.000000, min_usage=0.018582, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=310, var.bound=-1.000000, var.weight=1.000000, min_usage=0.018582, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=313, var.bound=-1.000000, var.weight=1.000000, min_usage=0.018582, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=314, var.bound=-1.000000, var.weight=1.000000, min_usage=0.018582, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=342, var.bound=-1.000000, var.weight=1.000000, min_usage=0.018582, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=350, var.bound=-1.000000, var.weight=1.000000, min_usage=0.018582, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=368, var.bound=-1.000000, var.weight=1.000000, min_usage=0.018582, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (306) value to 0.018582
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(306)->weight: 1.000000, Var(306)->value: 0.018582 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(306).weight: 1.000000, Var(306).value: 0.018582 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (310) value to 0.018582
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(310)->weight: 1.000000, Var(310)->value: 0.018582 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(310).weight: 1.000000, Var(310).value: 0.018582 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (313) value to 0.018582
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(313)->weight: 1.000000, Var(313)->value: 0.018582 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(313).weight: 1.000000, Var(313).value: 0.018582 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (314) value to 0.018582
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(314)->weight: 1.000000, Var(314)->value: 0.018582 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(314).weight: 1.000000, Var(314).value: 0.018582 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (342) value to 0.018582
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(342)->weight: 1.000000, Var(342)->value: 0.018582 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(342).weight: 1.000000, Var(342).value: 0.018582 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (350) value to 0.018582
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(350)->weight: 1.000000, Var(350)->value: 0.018582 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(350).weight: 1.000000, Var(350).value: 0.018582 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (368) value to 0.018582
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(368)->weight: 1.000000, Var(368)->value: 0.018582 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.018582, Var(368).weight: 1.000000, Var(368).value: 0.018582 
 > [0.000000]: [surf_maxmin/DEBUG] index: 14     cnst_light_num: 98      || usage: 0.000000 remaining: 2.790101 bound: 2.907093  
 > [0.000000]: [surf_maxmin/DEBUG] index: 35     cnst_light_num: 97      || usage: 0.000000 remaining: 0.000000 bound: 0.249750  
 > [0.000000]: [surf_maxmin/DEBUG] index: 80     cnst_light_num: 96      || usage: 0.000000 remaining: 5.032823 bound: 5.104895  
-> [0.000000]: [surf_maxmin/DEBUG] var=326, var->bound=-1.000000, var->weight=1.000000, min_usage=0.028518, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=365, var->bound=-1.000000, var->weight=1.000000, min_usage=0.028518, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=326, var.bound=-1.000000, var.weight=1.000000, min_usage=0.028518, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=365, var.bound=-1.000000, var.weight=1.000000, min_usage=0.028518, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (326) value to 0.028518
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.028518, Var(326)->weight: 1.000000, Var(326)->value: 0.028518 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.028518, Var(326).weight: 1.000000, Var(326).value: 0.028518 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (365) value to 0.028518
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.028518, Var(365)->weight: 1.000000, Var(365)->value: 0.028518 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.028518, Var(365).weight: 1.000000, Var(365).value: 0.028518 
 > [0.000000]: [surf_maxmin/DEBUG] index: 92     cnst_light_num: 95      || usage: 0.000000 remaining: 0.000000 bound: 0.239760  
-> [0.000000]: [surf_maxmin/DEBUG] var=321, var->bound=-1.000000, var->weight=1.000000, min_usage=0.047771, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=346, var->bound=-1.000000, var->weight=1.000000, min_usage=0.047771, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=370, var->bound=-1.000000, var->weight=1.000000, min_usage=0.047771, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=321, var.bound=-1.000000, var.weight=1.000000, min_usage=0.047771, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=346, var.bound=-1.000000, var.weight=1.000000, min_usage=0.047771, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=370, var.bound=-1.000000, var.weight=1.000000, min_usage=0.047771, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (321) value to 0.047771
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.047771, Var(321)->weight: 1.000000, Var(321)->value: 0.047771 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.047771, Var(321).weight: 1.000000, Var(321).value: 0.047771 
 > [0.000000]: [surf_maxmin/DEBUG] index: 23     cnst_light_num: 94      || usage: 0.000000 remaining: 4.018641 bound: 4.205794  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (346) value to 0.047771
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.047771, Var(346)->weight: 1.000000, Var(346)->value: 0.047771 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.047771, Var(346).weight: 1.000000, Var(346).value: 0.047771 
 > [0.000000]: [surf_maxmin/DEBUG] index: 58     cnst_light_num: 93      || usage: 0.000000 remaining: 6.974816 bound: 7.122877  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (370) value to 0.047771
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.047771, Var(370)->weight: 1.000000, Var(370)->value: 0.047771 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.047771, Var(370).weight: 1.000000, Var(370).value: 0.047771 
 > [0.000000]: [surf_maxmin/DEBUG] index: 85     cnst_light_num: 92      || usage: 0.000000 remaining: 4.120057 bound: 4.375624  
 > [0.000000]: [surf_maxmin/DEBUG] index: 63     cnst_light_num: 91      || usage: 0.000000 remaining: 9.066800 bound: 9.350649  
 > [0.000000]: [surf_maxmin/DEBUG] index: 89     cnst_light_num: 90      || usage: 0.000000 remaining: 0.000000 bound: 0.359640  
-> [0.000000]: [surf_maxmin/DEBUG] var=317, var->bound=-1.000000, var->weight=1.000000, min_usage=0.094009, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=324, var->bound=-1.000000, var->weight=1.000000, min_usage=0.094009, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=317, var.bound=-1.000000, var.weight=1.000000, min_usage=0.094009, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=324, var.bound=-1.000000, var.weight=1.000000, min_usage=0.094009, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (317) value to 0.094009
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.094009, Var(317)->weight: 1.000000, Var(317)->value: 0.094009 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.094009, Var(317).weight: 1.000000, Var(317).value: 0.094009 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (324) value to 0.094009
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.094009, Var(324)->weight: 1.000000, Var(324)->value: 0.094009 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.094009, Var(324).weight: 1.000000, Var(324).value: 0.094009 
 > [0.000000]: [surf_maxmin/DEBUG] index: 7      cnst_light_num: 89      || usage: 0.000000 remaining: 4.485784 bound: 4.885115  
 > [0.000000]: [surf_maxmin/DEBUG] index: 4      cnst_light_num: 88      || usage: 0.000000 remaining: 0.000000 bound: 0.399600  
 > [0.000000]: [surf_maxmin/DEBUG] index: 63     cnst_light_num: 87      || usage: 0.000000 remaining: 7.782300 bound: 8.471528  
-> [0.000000]: [surf_maxmin/DEBUG] var=303, var->bound=-1.000000, var->weight=1.000000, min_usage=0.142202, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=305, var->bound=-1.000000, var->weight=1.000000, min_usage=0.142202, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=329, var->bound=-1.000000, var->weight=1.000000, min_usage=0.142202, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=355, var->bound=-1.000000, var->weight=1.000000, min_usage=0.142202, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=303, var.bound=-1.000000, var.weight=1.000000, min_usage=0.142202, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=305, var.bound=-1.000000, var.weight=1.000000, min_usage=0.142202, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=329, var.bound=-1.000000, var.weight=1.000000, min_usage=0.142202, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=355, var.bound=-1.000000, var.weight=1.000000, min_usage=0.142202, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (303) value to 0.142202
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.142202, Var(303)->weight: 1.000000, Var(303)->value: 0.142202 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.142202, Var(303).weight: 1.000000, Var(303).value: 0.142202 
 > [0.000000]: [surf_maxmin/DEBUG] index: 45     cnst_light_num: 86      || usage: 0.000000 remaining: 8.926300 bound: 9.280719  
 > [0.000000]: [surf_maxmin/DEBUG] index: 43     cnst_light_num: 85      || usage: 0.000000 remaining: 2.225982 bound: 2.907093  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (305) value to 0.142202
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.142202, Var(305)->weight: 1.000000, Var(305)->value: 0.142202 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.142202, Var(305).weight: 1.000000, Var(305).value: 0.142202 
 > [0.000000]: [surf_maxmin/DEBUG] index: 34     cnst_light_num: 84      || usage: 0.000000 remaining: 7.001496 bound: 7.732268  
 > [0.000000]: [surf_maxmin/DEBUG] index: 62     cnst_light_num: 83      || usage: 0.000000 remaining: 4.311663 bound: 4.855145  
 > [0.000000]: [surf_maxmin/DEBUG] index: 74     cnst_light_num: 82      || usage: 0.000000 remaining: 1.415789 bound: 1.658342  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (329) value to 0.142202
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.142202, Var(329)->weight: 1.000000, Var(329)->value: 0.142202 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.142202, Var(329).weight: 1.000000, Var(329).value: 0.142202 
 > [0.000000]: [surf_maxmin/DEBUG] index: 58     cnst_light_num: 81      || usage: 0.000000 remaining: 5.694817 bound: 5.954046  
 > [0.000000]: [surf_maxmin/DEBUG] index: 30     cnst_light_num: 80      || usage: 0.000000 remaining: 8.782447 bound: 9.170829  
 > [0.000000]: [surf_maxmin/DEBUG] index: 18     cnst_light_num: 79      || usage: 0.000000 remaining: 4.018510 bound: 4.255744  
@@ -2008,7 +2008,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 18     cnst_light_num: 77      || usage: 0.000000 remaining: 3.346839 bound: 3.656344  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (355) value to 0.142202
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.142202, Var(355)->weight: 1.000000, Var(355)->value: 0.142202 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.142202, Var(355).weight: 1.000000, Var(355).value: 0.142202 
 > [0.000000]: [surf_maxmin/DEBUG] index: 52     cnst_light_num: 76      || usage: 0.000000 remaining: 4.150664 bound: 4.915085  
 > [0.000000]: [surf_maxmin/DEBUG] index: 33     cnst_light_num: 75      || usage: 0.000000 remaining: 4.834649 bound: 5.974026  
 > [0.000000]: [surf_maxmin/DEBUG] index: 31     cnst_light_num: 74      || usage: 0.000000 remaining: 1.696954 bound: 2.277722  
@@ -2020,10 +2020,10 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 19     cnst_light_num: 68      || usage: 0.000000 remaining: 4.722579 bound: 5.504496  
 > [0.000000]: [surf_maxmin/DEBUG] index: 8      cnst_light_num: 67      || usage: 0.000000 remaining: 0.055535 bound: 0.659341  
 > [0.000000]: [surf_maxmin/DEBUG] index: 64     cnst_light_num: 66      || usage: 0.000000 remaining: 3.635989 bound: 4.465534  
-> [0.000000]: [surf_maxmin/DEBUG] var=320, var->bound=-1.000000, var->weight=1.000000, min_usage=0.201077, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=320, var.bound=-1.000000, var.weight=1.000000, min_usage=0.201077, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (320) value to 0.201077
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.201077, Var(320)->weight: 1.000000, Var(320)->value: 0.201077 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.201077, Var(320).weight: 1.000000, Var(320).value: 0.201077 
 > [0.000000]: [surf_maxmin/DEBUG] index: 18     cnst_light_num: 65      || usage: 0.000000 remaining: 0.438337 bound: 0.799201  
 > [0.000000]: [surf_maxmin/DEBUG] index: 30     cnst_light_num: 64      || usage: 0.000000 remaining: 5.921236 bound: 6.273726  
 > [0.000000]: [surf_maxmin/DEBUG] index: 21     cnst_light_num: 63      || usage: 0.000000 remaining: 4.308459 bound: 4.995005  
@@ -2037,11 +2037,11 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 14     cnst_light_num: 55      || usage: 0.000000 remaining: 1.926234 bound: 2.987013  
 > [0.000000]: [surf_maxmin/DEBUG] index: 9      cnst_light_num: 54      || usage: 0.000000 remaining: 6.057243 bound: 6.453546  
 > [0.000000]: [surf_maxmin/DEBUG] index: 45     cnst_light_num: 53      || usage: 0.000000 remaining: 5.985763 bound: 6.363636  
-> [0.000000]: [surf_maxmin/DEBUG] var=316, var->bound=-1.000000, var->weight=1.000000, min_usage=0.288945, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=336, var->bound=-1.000000, var->weight=1.000000, min_usage=0.288945, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=316, var.bound=-1.000000, var.weight=1.000000, min_usage=0.288945, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=336, var.bound=-1.000000, var.weight=1.000000, min_usage=0.288945, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (316) value to 0.288945
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.288945, Var(316)->weight: 1.000000, Var(316)->value: 0.288945 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.288945, Var(316).weight: 1.000000, Var(316).value: 0.288945 
 > [0.000000]: [surf_maxmin/DEBUG] index: 28     cnst_light_num: 52      || usage: 0.000000 remaining: 1.281667 bound: 2.327672  
 > [0.000000]: [surf_maxmin/DEBUG] index: 18     cnst_light_num: 51      || usage: 0.000000 remaining: 6.258337 bound: 7.092907  
 > [0.000000]: [surf_maxmin/DEBUG] index: 10     cnst_light_num: 50      || usage: 0.000000 remaining: 8.679785 bound: 9.950050  
@@ -2058,7 +2058,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 39      || usage: 0.000000 remaining: 3.396353 bound: 4.475524  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (336) value to 0.288945
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.288945, Var(336)->weight: 1.000000, Var(336)->value: 0.288945 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.288945, Var(336).weight: 1.000000, Var(336).value: 0.288945 
 > [0.000000]: [surf_maxmin/DEBUG] index: 22     cnst_light_num: 38      || usage: 0.000000 remaining: 8.886978 bound: 9.790210  
 > [0.000000]: [surf_maxmin/DEBUG] index: 12     cnst_light_num: 37      || usage: 0.000000 remaining: 2.289452 bound: 3.766234  
 > [0.000000]: [surf_maxmin/DEBUG] index: 7      cnst_light_num: 36      || usage: 0.000000 remaining: 6.936049 bound: 7.642358  
@@ -2076,10 +2076,10 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 16     cnst_light_num: 24      || usage: 0.000000 remaining: 7.844363 bound: 9.010989  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 23      || usage: 0.000000 remaining: 5.328389 bound: 6.893107  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 22      || usage: 0.000000 remaining: 6.171176 bound: 7.512488  
-> [0.000000]: [surf_maxmin/DEBUG] var=323, var->bound=-1.000000, var->weight=1.000000, min_usage=0.301983, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=323, var.bound=-1.000000, var.weight=1.000000, min_usage=0.301983, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (323) value to 0.301983
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.301983, Var(323)->weight: 1.000000, Var(323)->value: 0.301983 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.301983, Var(323).weight: 1.000000, Var(323).value: 0.301983 
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 21      || usage: 0.000000 remaining: 3.866850 bound: 4.515485  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 20      || usage: 0.000000 remaining: 8.277577 bound: 9.640360  
 > [0.000000]: [surf_maxmin/DEBUG] index: 12     cnst_light_num: 19      || usage: 0.000000 remaining: 6.671593 bound: 8.811189  
@@ -2406,185 +2406,185 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '434' usage: 13.643856 remaining: 9.670330 concurrency: 7<=8<=9
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '474' usage: 12.365634 remaining: 3.756244 concurrency: 6<=7<=9
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '414' usage: 8.673327 remaining: 3.066933 concurrency: 4<=6<=10
-> [0.000000]: [surf_maxmin/DEBUG] var=405, var->bound=-1.000000, var->weight=1.000000, min_usage=0.013951, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=410, var->bound=-1.000000, var->weight=1.000000, min_usage=0.013951, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=412, var->bound=-1.000000, var->weight=1.000000, min_usage=0.013951, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=413, var->bound=-1.000000, var->weight=1.000000, min_usage=0.013951, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=419, var->bound=-1.000000, var->weight=1.000000, min_usage=0.013951, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=421, var->bound=-1.000000, var->weight=1.000000, min_usage=0.013951, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=423, var->bound=-1.000000, var->weight=1.000000, min_usage=0.013951, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=431, var->bound=-1.000000, var->weight=1.000000, min_usage=0.013951, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=433, var->bound=-1.000000, var->weight=1.000000, min_usage=0.013951, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=462, var->bound=-1.000000, var->weight=1.000000, min_usage=0.013951, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=482, var->bound=-1.000000, var->weight=1.000000, min_usage=0.013951, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=405, var.bound=-1.000000, var.weight=1.000000, min_usage=0.013951, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=410, var.bound=-1.000000, var.weight=1.000000, min_usage=0.013951, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=412, var.bound=-1.000000, var.weight=1.000000, min_usage=0.013951, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=413, var.bound=-1.000000, var.weight=1.000000, min_usage=0.013951, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=419, var.bound=-1.000000, var.weight=1.000000, min_usage=0.013951, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=421, var.bound=-1.000000, var.weight=1.000000, min_usage=0.013951, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=423, var.bound=-1.000000, var.weight=1.000000, min_usage=0.013951, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=431, var.bound=-1.000000, var.weight=1.000000, min_usage=0.013951, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=433, var.bound=-1.000000, var.weight=1.000000, min_usage=0.013951, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=462, var.bound=-1.000000, var.weight=1.000000, min_usage=0.013951, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=482, var.bound=-1.000000, var.weight=1.000000, min_usage=0.013951, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (405) value to 0.013951
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(405)->weight: 1.000000, Var(405)->value: 0.013951 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(405).weight: 1.000000, Var(405).value: 0.013951 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (410) value to 0.013951
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(410)->weight: 1.000000, Var(410)->value: 0.013951 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(410).weight: 1.000000, Var(410).value: 0.013951 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (412) value to 0.013951
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(412)->weight: 1.000000, Var(412)->value: 0.013951 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(412).weight: 1.000000, Var(412).value: 0.013951 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (413) value to 0.013951
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(413)->weight: 1.000000, Var(413)->value: 0.013951 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(413).weight: 1.000000, Var(413).value: 0.013951 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (419) value to 0.013951
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(419)->weight: 1.000000, Var(419)->value: 0.013951 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(419).weight: 1.000000, Var(419).value: 0.013951 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (421) value to 0.013951
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(421)->weight: 1.000000, Var(421)->value: 0.013951 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(421).weight: 1.000000, Var(421).value: 0.013951 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (423) value to 0.013951
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(423)->weight: 1.000000, Var(423)->value: 0.013951 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(423).weight: 1.000000, Var(423).value: 0.013951 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (431) value to 0.013951
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(431)->weight: 1.000000, Var(431)->value: 0.013951 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(431).weight: 1.000000, Var(431).value: 0.013951 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (433) value to 0.013951
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(433)->weight: 1.000000, Var(433)->value: 0.013951 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(433).weight: 1.000000, Var(433).value: 0.013951 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (462) value to 0.013951
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(462)->weight: 1.000000, Var(462)->value: 0.013951 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(462).weight: 1.000000, Var(462).value: 0.013951 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (482) value to 0.013951
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(482)->weight: 1.000000, Var(482)->value: 0.013951 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.013951, Var(482).weight: 1.000000, Var(482).value: 0.013951 
 > [0.000000]: [surf_maxmin/DEBUG] index: 67     cnst_light_num: 100     || usage: 0.000000 remaining: 0.000000 bound: 0.299700  
-> [0.000000]: [surf_maxmin/DEBUG] var=402, var->bound=-1.000000, var->weight=1.000000, min_usage=0.023700, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=406, var->bound=-1.000000, var->weight=1.000000, min_usage=0.023700, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=408, var->bound=-1.000000, var->weight=1.000000, min_usage=0.023700, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=415, var->bound=-1.000000, var->weight=1.000000, min_usage=0.023700, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=418, var->bound=-1.000000, var->weight=1.000000, min_usage=0.023700, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=420, var->bound=-1.000000, var->weight=1.000000, min_usage=0.023700, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=424, var->bound=-1.000000, var->weight=1.000000, min_usage=0.023700, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=402, var.bound=-1.000000, var.weight=1.000000, min_usage=0.023700, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=406, var.bound=-1.000000, var.weight=1.000000, min_usage=0.023700, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=408, var.bound=-1.000000, var.weight=1.000000, min_usage=0.023700, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=415, var.bound=-1.000000, var.weight=1.000000, min_usage=0.023700, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=418, var.bound=-1.000000, var.weight=1.000000, min_usage=0.023700, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=420, var.bound=-1.000000, var.weight=1.000000, min_usage=0.023700, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=424, var.bound=-1.000000, var.weight=1.000000, min_usage=0.023700, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (402) value to 0.023700
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(402)->weight: 1.000000, Var(402)->value: 0.023700 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(402).weight: 1.000000, Var(402).value: 0.023700 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (406) value to 0.023700
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(406)->weight: 1.000000, Var(406)->value: 0.023700 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(406).weight: 1.000000, Var(406).value: 0.023700 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (408) value to 0.023700
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(408)->weight: 1.000000, Var(408)->value: 0.023700 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(408).weight: 1.000000, Var(408).value: 0.023700 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (415) value to 0.023700
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(415)->weight: 1.000000, Var(415)->value: 0.023700 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(415).weight: 1.000000, Var(415).value: 0.023700 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (418) value to 0.023700
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(418)->weight: 1.000000, Var(418)->value: 0.023700 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(418).weight: 1.000000, Var(418).value: 0.023700 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (420) value to 0.023700
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(420)->weight: 1.000000, Var(420)->value: 0.023700 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(420).weight: 1.000000, Var(420).value: 0.023700 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (424) value to 0.023700
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(424)->weight: 1.000000, Var(424)->value: 0.023700 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.023700, Var(424).weight: 1.000000, Var(424).value: 0.023700 
 > [0.000000]: [surf_maxmin/DEBUG] index: 29     cnst_light_num: 99      || usage: 0.000000 remaining: 0.000000 bound: 0.359640  
-> [0.000000]: [surf_maxmin/DEBUG] var=414, var->bound=-1.000000, var->weight=1.000000, min_usage=0.036913, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=425, var->bound=-1.000000, var->weight=1.000000, min_usage=0.036913, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=427, var->bound=-1.000000, var->weight=1.000000, min_usage=0.036913, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=429, var->bound=-1.000000, var->weight=1.000000, min_usage=0.036913, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=435, var->bound=-1.000000, var->weight=1.000000, min_usage=0.036913, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=452, var->bound=-1.000000, var->weight=1.000000, min_usage=0.036913, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=414, var.bound=-1.000000, var.weight=1.000000, min_usage=0.036913, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=425, var.bound=-1.000000, var.weight=1.000000, min_usage=0.036913, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=427, var.bound=-1.000000, var.weight=1.000000, min_usage=0.036913, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=429, var.bound=-1.000000, var.weight=1.000000, min_usage=0.036913, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=435, var.bound=-1.000000, var.weight=1.000000, min_usage=0.036913, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=452, var.bound=-1.000000, var.weight=1.000000, min_usage=0.036913, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (414) value to 0.036913
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036913, Var(414)->weight: 1.000000, Var(414)->value: 0.036913 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036913, Var(414).weight: 1.000000, Var(414).value: 0.036913 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (425) value to 0.036913
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036913, Var(425)->weight: 1.000000, Var(425)->value: 0.036913 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036913, Var(425).weight: 1.000000, Var(425).value: 0.036913 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (427) value to 0.036913
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036913, Var(427)->weight: 1.000000, Var(427)->value: 0.036913 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036913, Var(427).weight: 1.000000, Var(427).value: 0.036913 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (429) value to 0.036913
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036913, Var(429)->weight: 1.000000, Var(429)->value: 0.036913 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036913, Var(429).weight: 1.000000, Var(429).value: 0.036913 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (435) value to 0.036913
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036913, Var(435)->weight: 1.000000, Var(435)->value: 0.036913 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036913, Var(435).weight: 1.000000, Var(435).value: 0.036913 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (452) value to 0.036913
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036913, Var(452)->weight: 1.000000, Var(452)->value: 0.036913 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036913, Var(452).weight: 1.000000, Var(452).value: 0.036913 
 > [0.000000]: [surf_maxmin/DEBUG] index: 84     cnst_light_num: 98      || usage: 0.000000 remaining: 0.000000 bound: 0.459540  
-> [0.000000]: [surf_maxmin/DEBUG] var=403, var->bound=-1.000000, var->weight=1.000000, min_usage=0.046599, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=404, var->bound=-1.000000, var->weight=1.000000, min_usage=0.046599, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=407, var->bound=-1.000000, var->weight=1.000000, min_usage=0.046599, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=416, var->bound=-1.000000, var->weight=1.000000, min_usage=0.046599, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=426, var->bound=-1.000000, var->weight=1.000000, min_usage=0.046599, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=403, var.bound=-1.000000, var.weight=1.000000, min_usage=0.046599, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=404, var.bound=-1.000000, var.weight=1.000000, min_usage=0.046599, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=407, var.bound=-1.000000, var.weight=1.000000, min_usage=0.046599, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=416, var.bound=-1.000000, var.weight=1.000000, min_usage=0.046599, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=426, var.bound=-1.000000, var.weight=1.000000, min_usage=0.046599, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (403) value to 0.046599
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.046599, Var(403)->weight: 1.000000, Var(403)->value: 0.046599 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.046599, Var(403).weight: 1.000000, Var(403).value: 0.046599 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (404) value to 0.046599
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.046599, Var(404)->weight: 1.000000, Var(404)->value: 0.046599 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.046599, Var(404).weight: 1.000000, Var(404).value: 0.046599 
 > [0.000000]: [surf_maxmin/DEBUG] index: 36     cnst_light_num: 97      || usage: 0.000000 remaining: 9.763793 bound: 9.860140  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (407) value to 0.046599
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.046599, Var(407)->weight: 1.000000, Var(407)->value: 0.046599 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.046599, Var(407).weight: 1.000000, Var(407).value: 0.046599 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (416) value to 0.046599
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.046599, Var(416)->weight: 1.000000, Var(416)->value: 0.046599 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.046599, Var(416).weight: 1.000000, Var(416).value: 0.046599 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (426) value to 0.046599
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.046599, Var(426)->weight: 1.000000, Var(426)->value: 0.046599 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.046599, Var(426).weight: 1.000000, Var(426).value: 0.046599 
 > [0.000000]: [surf_maxmin/DEBUG] index: 49     cnst_light_num: 96      || usage: 0.000000 remaining: 1.560732 bound: 2.027972  
 > [0.000000]: [surf_maxmin/DEBUG] index: 57     cnst_light_num: 95      || usage: 0.000000 remaining: 0.000000 bound: 0.399600  
-> [0.000000]: [surf_maxmin/DEBUG] var=409, var->bound=-1.000000, var->weight=1.000000, min_usage=0.068172, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=417, var->bound=-1.000000, var->weight=1.000000, min_usage=0.068172, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=444, var->bound=-1.000000, var->weight=1.000000, min_usage=0.068172, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=455, var->bound=-1.000000, var->weight=1.000000, min_usage=0.068172, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=409, var.bound=-1.000000, var.weight=1.000000, min_usage=0.068172, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=417, var.bound=-1.000000, var.weight=1.000000, min_usage=0.068172, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=444, var.bound=-1.000000, var.weight=1.000000, min_usage=0.068172, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=455, var.bound=-1.000000, var.weight=1.000000, min_usage=0.068172, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (409) value to 0.068172
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.068172, Var(409)->weight: 1.000000, Var(409)->value: 0.068172 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.068172, Var(409).weight: 1.000000, Var(409).value: 0.068172 
 > [0.000000]: [surf_maxmin/DEBUG] index: 90     cnst_light_num: 94      || usage: 0.000000 remaining: 9.436551 bound: 9.690310  
 > [0.000000]: [surf_maxmin/DEBUG] index: 31     cnst_light_num: 93      || usage: 0.000000 remaining: 6.950082 bound: 7.382617  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (417) value to 0.068172
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.068172, Var(417)->weight: 1.000000, Var(417)->value: 0.068172 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.068172, Var(417).weight: 1.000000, Var(417).value: 0.068172 
 > [0.000000]: [surf_maxmin/DEBUG] index: 32     cnst_light_num: 92      || usage: 0.000000 remaining: 0.895015 bound: 1.248751  
 > [0.000000]: [surf_maxmin/DEBUG] index: 41     cnst_light_num: 91      || usage: 0.000000 remaining: 6.666825 bound: 7.132867  
 > [0.000000]: [surf_maxmin/DEBUG] index: 82     cnst_light_num: 90      || usage: 0.000000 remaining: 3.514705 bound: 3.956044  
 > [0.000000]: [surf_maxmin/DEBUG] index: 67     cnst_light_num: 89      || usage: 0.000000 remaining: 2.726842 bound: 3.066933  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (444) value to 0.068172
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.068172, Var(444)->weight: 1.000000, Var(444)->value: 0.068172 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.068172, Var(444).weight: 1.000000, Var(444).value: 0.068172 
 > [0.000000]: [surf_maxmin/DEBUG] index: 71     cnst_light_num: 88      || usage: 0.000000 remaining: 8.404470 bound: 8.981019  
 > [0.000000]: [surf_maxmin/DEBUG] index: 25     cnst_light_num: 87      || usage: 0.000000 remaining: 8.866678 bound: 9.160839  
 > [0.000000]: [surf_maxmin/DEBUG] index: 46     cnst_light_num: 86      || usage: 0.000000 remaining: 7.947211 bound: 8.301698  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (455) value to 0.068172
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.068172, Var(455)->weight: 1.000000, Var(455)->value: 0.068172 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.068172, Var(455).weight: 1.000000, Var(455).value: 0.068172 
 > [0.000000]: [surf_maxmin/DEBUG] index: 47     cnst_light_num: 85      || usage: 0.000000 remaining: 0.000000 bound: 0.599401  
 > [0.000000]: [surf_maxmin/DEBUG] index: 83     cnst_light_num: 84      || usage: 0.000000 remaining: 5.185774 bound: 5.594406  
 > [0.000000]: [surf_maxmin/DEBUG] index: 55     cnst_light_num: 83      || usage: 0.000000 remaining: 1.636352 bound: 1.838162  
-> [0.000000]: [surf_maxmin/DEBUG] var=401, var->bound=-1.000000, var->weight=1.000000, min_usage=0.075245, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=464, var->bound=-1.000000, var->weight=1.000000, min_usage=0.075245, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=401, var.bound=-1.000000, var.weight=1.000000, min_usage=0.075245, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=464, var.bound=-1.000000, var.weight=1.000000, min_usage=0.075245, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (401) value to 0.075245
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.075245, Var(401)->weight: 1.000000, Var(401)->value: 0.075245 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.075245, Var(401).weight: 1.000000, Var(401).value: 0.075245 
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 82      || usage: 0.000000 remaining: 1.943854 bound: 2.417582  
 > [0.000000]: [surf_maxmin/DEBUG] index: 10     cnst_light_num: 81      || usage: 0.000000 remaining: 6.465660 bound: 6.663337  
 > [0.000000]: [surf_maxmin/DEBUG] index: 15     cnst_light_num: 80      || usage: 0.000000 remaining: 6.454602 bound: 6.843157  
 > [0.000000]: [surf_maxmin/DEBUG] index: 21     cnst_light_num: 79      || usage: 0.000000 remaining: 0.613333 bound: 0.969031  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (464) value to 0.075245
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.075245, Var(464)->weight: 1.000000, Var(464)->value: 0.075245 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.075245, Var(464).weight: 1.000000, Var(464).value: 0.075245 
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 78      || usage: 0.000000 remaining: 5.604611 bound: 6.223776  
 > [0.000000]: [surf_maxmin/DEBUG] index: 6      cnst_light_num: 77      || usage: 0.000000 remaining: 0.000000 bound: 0.439560  
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 76      || usage: 0.000000 remaining: 8.337354 bound: 8.961039  
-> [0.000000]: [surf_maxmin/DEBUG] var=422, var->bound=-1.000000, var->weight=1.000000, min_usage=0.209953, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=422, var.bound=-1.000000, var.weight=1.000000, min_usage=0.209953, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (422) value to 0.209953
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.209953, Var(422)->weight: 1.000000, Var(422)->value: 0.209953 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.209953, Var(422).weight: 1.000000, Var(422).value: 0.209953 
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 75      || usage: 0.000000 remaining: 0.000000 bound: 0.739261  
 > [0.000000]: [surf_maxmin/DEBUG] index: 43     cnst_light_num: 74      || usage: 0.000000 remaining: 3.910501 bound: 4.485514  
 > [0.000000]: [surf_maxmin/DEBUG] index: 13     cnst_light_num: 73      || usage: 0.000000 remaining: 0.637351 bound: 1.218781  
 > [0.000000]: [surf_maxmin/DEBUG] index: 67     cnst_light_num: 72      || usage: 0.000000 remaining: 8.292394 bound: 8.981019  
-> [0.000000]: [surf_maxmin/DEBUG] var=443, var->bound=-1.000000, var->weight=1.000000, min_usage=0.248078, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=460, var->bound=-1.000000, var->weight=1.000000, min_usage=0.248078, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=470, var->bound=-1.000000, var->weight=1.000000, min_usage=0.248078, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=443, var.bound=-1.000000, var.weight=1.000000, min_usage=0.248078, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=460, var.bound=-1.000000, var.weight=1.000000, min_usage=0.248078, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=470, var.bound=-1.000000, var.weight=1.000000, min_usage=0.248078, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (443) value to 0.248078
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.248078, Var(443)->weight: 1.000000, Var(443)->value: 0.248078 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.248078, Var(443).weight: 1.000000, Var(443).value: 0.248078 
 > [0.000000]: [surf_maxmin/DEBUG] index: 46     cnst_light_num: 71      || usage: 0.000000 remaining: 4.903913 bound: 6.603397  
 > [0.000000]: [surf_maxmin/DEBUG] index: 56     cnst_light_num: 70      || usage: 0.000000 remaining: 5.661916 bound: 6.923077  
 > [0.000000]: [surf_maxmin/DEBUG] index: 10     cnst_light_num: 69      || usage: 0.000000 remaining: 6.671691 bound: 7.712288  
@@ -2594,7 +2594,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 59     cnst_light_num: 65      || usage: 0.000000 remaining: 6.079014 bound: 7.212787  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (460) value to 0.248078
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.248078, Var(460)->weight: 1.000000, Var(460)->value: 0.248078 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.248078, Var(460).weight: 1.000000, Var(460).value: 0.248078 
 > [0.000000]: [surf_maxmin/DEBUG] index: 19     cnst_light_num: 64      || usage: 0.000000 remaining: 1.852859 bound: 2.937063  
 > [0.000000]: [surf_maxmin/DEBUG] index: 6      cnst_light_num: 63      || usage: 0.000000 remaining: 1.517831 bound: 2.447552  
 > [0.000000]: [surf_maxmin/DEBUG] index: 51     cnst_light_num: 62      || usage: 0.000000 remaining: 2.711337 bound: 4.165834  
@@ -2607,7 +2607,7 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 21     cnst_light_num: 55      || usage: 0.000000 remaining: 3.908501 bound: 5.144855  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (470) value to 0.248078
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.248078, Var(470)->weight: 1.000000, Var(470)->value: 0.248078 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.248078, Var(470).weight: 1.000000, Var(470).value: 0.248078 
 > [0.000000]: [surf_maxmin/DEBUG] index: 10     cnst_light_num: 54      || usage: 0.000000 remaining: 9.086266 bound: 9.800200  
 > [0.000000]: [surf_maxmin/DEBUG] index: 25     cnst_light_num: 53      || usage: 0.000000 remaining: 4.317833 bound: 5.174825  
 > [0.000000]: [surf_maxmin/DEBUG] index: 47     cnst_light_num: 52      || usage: 0.000000 remaining: 0.574793 bound: 2.097902  
@@ -2619,10 +2619,10 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 31     cnst_light_num: 46      || usage: 0.000000 remaining: 6.113568 bound: 6.903097  
 > [0.000000]: [surf_maxmin/DEBUG] index: 40     cnst_light_num: 45      || usage: 0.000000 remaining: 0.000000 bound: 1.958042  
 > [0.000000]: [surf_maxmin/DEBUG] index: 29     cnst_light_num: 44      || usage: 0.000000 remaining: 2.366551 bound: 3.756244  
-> [0.000000]: [surf_maxmin/DEBUG] var=499, var->bound=-1.000000, var->weight=1.000000, min_usage=0.371099, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=499, var.bound=-1.000000, var.weight=1.000000, min_usage=0.371099, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (499) value to 0.371099
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.371099, Var(499)->weight: 1.000000, Var(499)->value: 0.371099 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.371099, Var(499).weight: 1.000000, Var(499).value: 0.371099 
 > [0.000000]: [surf_maxmin/DEBUG] index: 38     cnst_light_num: 43      || usage: 0.000000 remaining: 4.195116 bound: 5.504496  
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 42      || usage: 0.000000 remaining: 3.396551 bound: 4.695305  
 > [0.000000]: [surf_maxmin/DEBUG] index: 18     cnst_light_num: 41      || usage: 0.000000 remaining: 4.348232 bound: 5.834166  
@@ -2644,10 +2644,10 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench medium 5 test
 > [0.000000]: [surf_maxmin/DEBUG] index: 18     cnst_light_num: 25      || usage: 0.000000 remaining: 0.897299 bound: 1.988012  
 > [0.000000]: [surf_maxmin/DEBUG] index: 9      cnst_light_num: 24      || usage: 0.000000 remaining: 0.066581 bound: 1.008991  
 > [0.000000]: [surf_maxmin/DEBUG] index: 9      cnst_light_num: 23      || usage: 0.000000 remaining: 3.392560 bound: 4.405594  
-> [0.000000]: [surf_maxmin/DEBUG] var=411, var->bound=-1.000000, var->weight=1.000000, min_usage=1.157925, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=411, var.bound=-1.000000, var.weight=1.000000, min_usage=1.157925, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (411) value to 1.157925
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.157925, Var(411)->weight: 1.000000, Var(411)->value: 1.157925 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.157925, Var(411).weight: 1.000000, Var(411).value: 1.157925 
 > [0.000000]: [surf_maxmin/DEBUG] index: 9      cnst_light_num: 22      || usage: 0.000000 remaining: 4.884981 bound: 7.072927  
 > [0.000000]: [surf_maxmin/DEBUG] index: 19     cnst_light_num: 21      || usage: 0.000000 remaining: 2.075096 bound: 4.745255  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 20      || usage: 0.000000 remaining: 3.819295 bound: 5.634366  
index 2ecb950..9a08f2c 100644 (file)
@@ -16,36 +16,36 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench small  10 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '4' usage: 1.014486 remaining: 7.082917 concurrency: 1<=1<=3
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '8' usage: 2.985015 remaining: 3.026973 concurrency: 1<=1<=-1
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '3' usage: 2.495005 remaining: 5.434565 concurrency: 1<=1<=4
-> [0.000000]: [surf_maxmin/DEBUG] var=9, var->bound=-1.000000, var->weight=1.000000, min_usage=1.014056, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=9, var.bound=-1.000000, var.weight=1.000000, min_usage=1.014056, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (9) value to 1.014056
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.014056, Var(9)->weight: 1.000000, Var(9)->value: 1.014056 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.014056, Var(9).weight: 1.000000, Var(9).value: 1.014056 
 > [0.000000]: [surf_maxmin/DEBUG] index: 8      cnst_light_num: 10      || usage: 0.000000 remaining: 0.000000 bound: 3.026973  
-> [0.000000]: [surf_maxmin/DEBUG] var=2, var->bound=-1.000000, var->weight=1.000000, min_usage=1.024059, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=10, var->bound=-1.000000, var->weight=1.000000, min_usage=1.024059, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=2, var.bound=-1.000000, var.weight=1.000000, min_usage=1.024059, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=10, var.bound=-1.000000, var.weight=1.000000, min_usage=1.024059, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (2) value to 1.024059
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.024059, Var(2)->weight: 1.000000, Var(2)->value: 1.024059 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.024059, Var(2).weight: 1.000000, Var(2).value: 1.024059 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (10) value to 1.024059
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.024059, Var(10)->weight: 1.000000, Var(10)->value: 1.024059 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.024059, Var(10).weight: 1.000000, Var(10).value: 1.024059 
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 9       || usage: 0.000000 remaining: 0.000000 bound: 2.487512  
 > [0.000000]: [surf_maxmin/DEBUG] index: 7      cnst_light_num: 8       || usage: 0.000000 remaining: 6.044024 bound: 7.082917  
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 7       || usage: 0.000000 remaining: 2.879533 bound: 5.434565  
-> [0.000000]: [surf_maxmin/DEBUG] var=1, var->bound=-1.000000, var->weight=1.000000, min_usage=1.338213, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=4, var->bound=-1.000000, var->weight=1.000000, min_usage=1.338213, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=1, var.bound=-1.000000, var.weight=1.000000, min_usage=1.338213, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=4, var.bound=-1.000000, var.weight=1.000000, min_usage=1.338213, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (1) value to 1.338213
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.338213, Var(1)->weight: 1.000000, Var(1)->value: 1.338213 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.338213, Var(1).weight: 1.000000, Var(1).value: 1.338213 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (4) value to 1.338213
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.338213, Var(4)->weight: 1.000000, Var(4)->value: 1.338213 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.338213, Var(4).weight: 1.000000, Var(4).value: 1.338213 
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 6       || usage: 0.000000 remaining: 0.000000 bound: 5.594406  
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 5       || usage: 0.000000 remaining: 1.623266 bound: 6.573427  
-> [0.000000]: [surf_maxmin/DEBUG] var=3, var->bound=-1.000000, var->weight=1.000000, min_usage=1.625653, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=3, var.bound=-1.000000, var.weight=1.000000, min_usage=1.625653, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (3) value to 1.625653
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.625653, Var(3)->weight: 1.000000, Var(3)->value: 1.625653 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.625653, Var(3).weight: 1.000000, Var(3).value: 1.625653 
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 4       || usage: 0.000000 remaining: 1.548031 bound: 9.860140  
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 3       || usage: 0.000000 remaining: 0.581095 bound: 7.282717  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 2       || usage: 0.000000 remaining: 0.000000 bound: 7.082917  
@@ -85,44 +85,44 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench small  10 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '11' usage: 4.858142 remaining: 4.975025 concurrency: 3<=3<=3
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '13' usage: 5.908591 remaining: 1.088911 concurrency: 3<=3<=-1
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '14' usage: 1.957043 remaining: 7.702298 concurrency: 1<=1<=4
-> [0.000000]: [surf_maxmin/DEBUG] var=14, var->bound=-1.000000, var->weight=1.000000, min_usage=0.184293, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=15, var->bound=-1.000000, var->weight=1.000000, min_usage=0.184293, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=17, var->bound=-1.000000, var->weight=1.000000, min_usage=0.184293, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=14, var.bound=-1.000000, var.weight=1.000000, min_usage=0.184293, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=15, var.bound=-1.000000, var.weight=1.000000, min_usage=0.184293, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=17, var.bound=-1.000000, var.weight=1.000000, min_usage=0.184293, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (14) value to 0.184293
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.184293, Var(14)->weight: 1.000000, Var(14)->value: 0.184293 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.184293, Var(14).weight: 1.000000, Var(14).value: 0.184293 
 > [0.000000]: [surf_maxmin/DEBUG] index: 9      cnst_light_num: 10      || usage: 0.000000 remaining: 7.341629 bound: 7.702298  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (15) value to 0.184293
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.184293, Var(15)->weight: 1.000000, Var(15)->value: 0.184293 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.184293, Var(15).weight: 1.000000, Var(15).value: 0.184293 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (17) value to 0.184293
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.184293, Var(17)->weight: 1.000000, Var(17)->value: 0.184293 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.184293, Var(17).weight: 1.000000, Var(17).value: 0.184293 
 > [0.000000]: [surf_maxmin/DEBUG] index: 8      cnst_light_num: 9       || usage: 0.000000 remaining: 0.000000 bound: 1.088911  
-> [0.000000]: [surf_maxmin/DEBUG] var=11, var->bound=-1.000000, var->weight=1.000000, min_usage=0.316463, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=12, var->bound=-1.000000, var->weight=1.000000, min_usage=0.316463, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=13, var->bound=-1.000000, var->weight=1.000000, min_usage=0.316463, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=19, var->bound=-1.000000, var->weight=1.000000, min_usage=0.316463, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=11, var.bound=-1.000000, var.weight=1.000000, min_usage=0.316463, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=12, var.bound=-1.000000, var.weight=1.000000, min_usage=0.316463, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=13, var.bound=-1.000000, var.weight=1.000000, min_usage=0.316463, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=19, var.bound=-1.000000, var.weight=1.000000, min_usage=0.316463, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (11) value to 0.316463
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.316463, Var(11)->weight: 1.000000, Var(11)->value: 0.316463 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.316463, Var(11).weight: 1.000000, Var(11).value: 0.316463 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (12) value to 0.316463
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.316463, Var(12)->weight: 1.000000, Var(12)->value: 0.316463 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.316463, Var(12).weight: 1.000000, Var(12).value: 0.316463 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (13) value to 0.316463
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.316463, Var(13)->weight: 1.000000, Var(13)->value: 0.316463 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.316463, Var(13).weight: 1.000000, Var(13).value: 0.316463 
 > [0.000000]: [surf_maxmin/DEBUG] index: 4      cnst_light_num: 8       || usage: 0.000000 remaining: 5.345264 bound: 6.663337  
 > [0.000000]: [surf_maxmin/DEBUG] index: 6      cnst_light_num: 7       || usage: 0.000000 remaining: 2.183786 bound: 3.366633  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (19) value to 0.316463
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.316463, Var(19)->weight: 1.000000, Var(19)->value: 0.316463 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.316463, Var(19).weight: 1.000000, Var(19).value: 0.316463 
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 6       || usage: 0.000000 remaining: 4.337989 bound: 6.053946  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 5       || usage: 0.000000 remaining: 0.000000 bound: 1.978022  
-> [0.000000]: [surf_maxmin/DEBUG] var=18, var->bound=-1.000000, var->weight=1.000000, min_usage=1.961597, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=18, var.bound=-1.000000, var.weight=1.000000, min_usage=1.961597, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (18) value to 1.961597
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.961597, Var(18)->weight: 1.000000, Var(18)->value: 1.961597 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.961597, Var(18).weight: 1.000000, Var(18).value: 1.961597 
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 4       || usage: 0.000000 remaining: 0.987622 bound: 4.975025  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 3       || usage: 0.000000 remaining: 0.000000 bound: 2.127872  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 2       || usage: 0.000000 remaining: 0.826438 bound: 4.575425  
@@ -162,36 +162,36 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench small  10 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '30' usage: 3.939560 remaining: 2.967033 concurrency: 2<=2<=-1
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '27' usage: 3.490010 remaining: 8.721279 concurrency: 1<=1<=3
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '21' usage: 3.869131 remaining: 7.462537 concurrency: 2<=2<=3
-> [0.000000]: [surf_maxmin/DEBUG] var=21, var->bound=-1.000000, var->weight=1.000000, min_usage=0.258940, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=23, var->bound=-1.000000, var->weight=1.000000, min_usage=0.258940, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=28, var->bound=-1.000000, var->weight=1.000000, min_usage=0.258940, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=21, var.bound=-1.000000, var.weight=1.000000, min_usage=0.258940, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=23, var.bound=-1.000000, var.weight=1.000000, min_usage=0.258940, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=28, var.bound=-1.000000, var.weight=1.000000, min_usage=0.258940, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (21) value to 0.258940
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.258940, Var(21)->weight: 1.000000, Var(21)->value: 0.258940 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.258940, Var(21).weight: 1.000000, Var(21).value: 0.258940 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (23) value to 0.258940
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.258940, Var(23)->weight: 1.000000, Var(23)->value: 0.258940 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.258940, Var(23).weight: 1.000000, Var(23).value: 0.258940 
 > [0.000000]: [surf_maxmin/DEBUG] index: 6      cnst_light_num: 10      || usage: 0.000000 remaining: 0.713448 bound: 1.428571  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (28) value to 0.258940
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.258940, Var(28)->weight: 1.000000, Var(28)->value: 0.258940 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.258940, Var(28).weight: 1.000000, Var(28).value: 0.258940 
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 9       || usage: 0.000000 remaining: 1.451551 bound: 2.127872  
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 8       || usage: 0.000000 remaining: 0.000000 bound: 1.258741  
-> [0.000000]: [surf_maxmin/DEBUG] var=22, var->bound=-1.000000, var->weight=1.000000, min_usage=0.493696, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=24, var->bound=-1.000000, var->weight=1.000000, min_usage=0.493696, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=25, var->bound=-1.000000, var->weight=1.000000, min_usage=0.493696, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=22, var.bound=-1.000000, var.weight=1.000000, min_usage=0.493696, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=24, var.bound=-1.000000, var.weight=1.000000, min_usage=0.493696, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=25, var.bound=-1.000000, var.weight=1.000000, min_usage=0.493696, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (22) value to 0.493696
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.493696, Var(22)->weight: 1.000000, Var(22)->value: 0.493696 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.493696, Var(22).weight: 1.000000, Var(22).value: 0.493696 
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 7       || usage: 0.000000 remaining: 5.661363 bound: 6.863137  
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 6       || usage: 0.000000 remaining: 1.851017 bound: 3.856144  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (24) value to 0.493696
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.493696, Var(24)->weight: 1.000000, Var(24)->value: 0.493696 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.493696, Var(24).weight: 1.000000, Var(24).value: 0.493696 
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 5       || usage: 0.000000 remaining: 7.221658 bound: 8.721279  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (25) value to 0.493696
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.493696, Var(25)->weight: 1.000000, Var(25)->value: 0.493696 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.493696, Var(25).weight: 1.000000, Var(25).value: 0.493696 
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 4       || usage: 0.000000 remaining: 0.000000 bound: 3.396603  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 3       || usage: 0.000000 remaining: 1.022089 bound: 2.967033  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 2       || usage: 0.000000 remaining: 6.051192 bound: 7.462537  
@@ -231,44 +231,44 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench small  10 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '38' usage: 3.966533 remaining: 4.475524 concurrency: 2<=2<=3
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '36' usage: 4.104396 remaining: 1.678322 concurrency: 3<=3<=4
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '37' usage: 0.000000 remaining: 0.139860 concurrency: 0<=1<=4
-> [0.000000]: [surf_maxmin/DEBUG] var=36, var->bound=-1.000000, var->weight=1.000000, min_usage=0.408908, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=38, var->bound=-1.000000, var->weight=1.000000, min_usage=0.408908, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=39, var->bound=-1.000000, var->weight=1.000000, min_usage=0.408908, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=36, var.bound=-1.000000, var.weight=1.000000, min_usage=0.408908, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=38, var.bound=-1.000000, var.weight=1.000000, min_usage=0.408908, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=39, var.bound=-1.000000, var.weight=1.000000, min_usage=0.408908, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (36) value to 0.408908
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.408908, Var(36)->weight: 1.000000, Var(36)->value: 0.408908 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.408908, Var(36).weight: 1.000000, Var(36).value: 0.408908 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (38) value to 0.408908
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.408908, Var(38)->weight: 1.000000, Var(38)->value: 0.408908 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.408908, Var(38).weight: 1.000000, Var(38).value: 0.408908 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (39) value to 0.408908
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.408908, Var(39)->weight: 1.000000, Var(39)->value: 0.408908 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.408908, Var(39).weight: 1.000000, Var(39).value: 0.408908 
 > [0.000000]: [surf_maxmin/DEBUG] index: 8      cnst_light_num: 9       || usage: 0.000000 remaining: 0.000000 bound: 1.678322  
-> [0.000000]: [surf_maxmin/DEBUG] var=32, var->bound=-1.000000, var->weight=1.000000, min_usage=0.565462, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=33, var->bound=-1.000000, var->weight=1.000000, min_usage=0.565462, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=32, var.bound=-1.000000, var.weight=1.000000, min_usage=0.565462, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=33, var.bound=-1.000000, var.weight=1.000000, min_usage=0.565462, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (32) value to 0.565462
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.565462, Var(32)->weight: 1.000000, Var(32)->value: 0.565462 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.565462, Var(32).weight: 1.000000, Var(32).value: 0.565462 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (33) value to 0.565462
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.565462, Var(33)->weight: 1.000000, Var(33)->value: 0.565462 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.565462, Var(33).weight: 1.000000, Var(33).value: 0.565462 
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 8       || usage: 0.000000 remaining: 0.541481 bound: 4.375624  
 > [0.000000]: [surf_maxmin/DEBUG] index: 4      cnst_light_num: 7       || usage: 0.000000 remaining: 0.000000 bound: 1.758242  
-> [0.000000]: [surf_maxmin/DEBUG] var=31, var->bound=-1.000000, var->weight=1.000000, min_usage=0.757364, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=40, var->bound=-1.000000, var->weight=1.000000, min_usage=0.757364, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=31, var.bound=-1.000000, var.weight=1.000000, min_usage=0.757364, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=40, var.bound=-1.000000, var.weight=1.000000, min_usage=0.757364, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (31) value to 0.757364
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.757364, Var(31)->weight: 1.000000, Var(31)->value: 0.757364 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.757364, Var(31).weight: 1.000000, Var(31).value: 0.757364 
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 6       || usage: 0.000000 remaining: 9.030772 bound: 9.950050  
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 5       || usage: 0.000000 remaining: 3.662606 bound: 5.414585  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (40) value to 0.757364
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.757364, Var(40)->weight: 1.000000, Var(40)->value: 0.757364 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.757364, Var(40).weight: 1.000000, Var(40).value: 0.757364 
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 4       || usage: 0.000000 remaining: 0.000000 bound: 3.656344  
-> [0.000000]: [surf_maxmin/DEBUG] var=35, var->bound=-1.000000, var->weight=1.000000, min_usage=1.232357, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=35, var.bound=-1.000000, var.weight=1.000000, min_usage=1.232357, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (35) value to 1.232357
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.232357, Var(35)->weight: 1.000000, Var(35)->value: 1.232357 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.232357, Var(35).weight: 1.000000, Var(35).value: 1.232357 
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 3       || usage: 0.000000 remaining: 0.095809 bound: 4.255744  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 2       || usage: 0.000000 remaining: 0.000000 bound: 8.941059  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 1       || usage: 0.000000 remaining: 0.886438 bound: 4.475524  
@@ -307,40 +307,40 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench small  10 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '50' usage: 5.187812 remaining: 4.485514 concurrency: 2<=2<=4
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '46' usage: 3.005994 remaining: 6.933067 concurrency: 1<=2<=4
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '43' usage: 1.075924 remaining: 4.485514 concurrency: 1<=1<=4
-> [0.000000]: [surf_maxmin/DEBUG] var=42, var->bound=-1.000000, var->weight=1.000000, min_usage=0.182815, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=46, var->bound=-1.000000, var->weight=1.000000, min_usage=0.182815, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=50, var->bound=-1.000000, var->weight=1.000000, min_usage=0.182815, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=42, var.bound=-1.000000, var.weight=1.000000, min_usage=0.182815, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=46, var.bound=-1.000000, var.weight=1.000000, min_usage=0.182815, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=50, var.bound=-1.000000, var.weight=1.000000, min_usage=0.182815, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (42) value to 0.182815
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.182815, Var(42)->weight: 1.000000, Var(42)->value: 0.182815 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.182815, Var(42).weight: 1.000000, Var(42).value: 0.182815 
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 10      || usage: 0.000000 remaining: 5.372434 bound: 5.524476  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (46) value to 0.182815
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.182815, Var(46)->weight: 1.000000, Var(46)->value: 0.182815 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.182815, Var(46).weight: 1.000000, Var(46).value: 0.182815 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (50) value to 0.182815
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.182815, Var(50)->weight: 1.000000, Var(50)->value: 0.182815 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.182815, Var(50).weight: 1.000000, Var(50).value: 0.182815 
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 9       || usage: 0.000000 remaining: 0.000000 bound: 0.599401  
-> [0.000000]: [surf_maxmin/DEBUG] var=41, var->bound=-1.000000, var->weight=1.000000, min_usage=0.380694, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=44, var->bound=-1.000000, var->weight=1.000000, min_usage=0.380694, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=47, var->bound=-1.000000, var->weight=1.000000, min_usage=0.380694, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=41, var.bound=-1.000000, var.weight=1.000000, min_usage=0.380694, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=44, var.bound=-1.000000, var.weight=1.000000, min_usage=0.380694, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=47, var.bound=-1.000000, var.weight=1.000000, min_usage=0.380694, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (41) value to 0.380694
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.380694, Var(41)->weight: 1.000000, Var(41)->value: 0.380694 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.380694, Var(41).weight: 1.000000, Var(41).value: 0.380694 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (44) value to 0.380694
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.380694, Var(44)->weight: 1.000000, Var(44)->value: 0.380694 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.380694, Var(44).weight: 1.000000, Var(44).value: 0.380694 
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 8       || usage: 0.000000 remaining: 0.977541 bound: 2.507493  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (47) value to 0.380694
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.380694, Var(47)->weight: 1.000000, Var(47)->value: 0.380694 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.380694, Var(47).weight: 1.000000, Var(47).value: 0.380694 
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 7       || usage: 0.000000 remaining: 4.075916 bound: 4.485514  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 6       || usage: 0.000000 remaining: 1.304610 bound: 2.117882  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 5       || usage: 0.000000 remaining: 0.000000 bound: 3.556444  
-> [0.000000]: [surf_maxmin/DEBUG] var=43, var->bound=-1.000000, var->weight=1.000000, min_usage=1.071335, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=43, var.bound=-1.000000, var.weight=1.000000, min_usage=1.071335, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (43) value to 1.071335
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.071335, Var(43)->weight: 1.000000, Var(43)->value: 1.071335 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.071335, Var(43).weight: 1.000000, Var(43).value: 1.071335 
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 4       || usage: 0.000000 remaining: 1.585454 bound: 2.447552  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 3       || usage: 0.000000 remaining: 0.000000 bound: 2.097902  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 2       || usage: 0.000000 remaining: 2.853240 bound: 4.485514  
@@ -380,44 +380,44 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench small  10 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '52' usage: 5.824675 remaining: 6.383616 concurrency: 3<=3<=3
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '56' usage: 2.324176 remaining: 0.769231 concurrency: 2<=2<=3
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '51' usage: 1.348651 remaining: 4.935065 concurrency: 1<=1<=4
-> [0.000000]: [surf_maxmin/DEBUG] var=52, var->bound=-1.000000, var->weight=1.000000, min_usage=0.194386, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=53, var->bound=-1.000000, var->weight=1.000000, min_usage=0.194386, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=56, var->bound=-1.000000, var->weight=1.000000, min_usage=0.194386, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=57, var->bound=-1.000000, var->weight=1.000000, min_usage=0.194386, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=59, var->bound=-1.000000, var->weight=1.000000, min_usage=0.194386, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=52, var.bound=-1.000000, var.weight=1.000000, min_usage=0.194386, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=53, var.bound=-1.000000, var.weight=1.000000, min_usage=0.194386, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=56, var.bound=-1.000000, var.weight=1.000000, min_usage=0.194386, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=57, var.bound=-1.000000, var.weight=1.000000, min_usage=0.194386, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=59, var.bound=-1.000000, var.weight=1.000000, min_usage=0.194386, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (52) value to 0.194386
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.194386, Var(52)->weight: 1.000000, Var(52)->value: 0.194386 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.194386, Var(52).weight: 1.000000, Var(52).value: 0.194386 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (53) value to 0.194386
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.194386, Var(53)->weight: 1.000000, Var(53)->value: 0.194386 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.194386, Var(53).weight: 1.000000, Var(53).value: 0.194386 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (56) value to 0.194386
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.194386, Var(56)->weight: 1.000000, Var(56)->value: 0.194386 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.194386, Var(56).weight: 1.000000, Var(56).value: 0.194386 
 > [0.000000]: [surf_maxmin/DEBUG] index: 9      cnst_light_num: 10      || usage: 0.000000 remaining: 4.672906 bound: 4.935065  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (57) value to 0.194386
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.194386, Var(57)->weight: 1.000000, Var(57)->value: 0.194386 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.194386, Var(57).weight: 1.000000, Var(57).value: 0.194386 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (59) value to 0.194386
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.194386, Var(59)->weight: 1.000000, Var(59)->value: 0.194386 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.194386, Var(59).weight: 1.000000, Var(59).value: 0.194386 
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 9       || usage: 0.000000 remaining: 0.000000 bound: 1.248751  
-> [0.000000]: [surf_maxmin/DEBUG] var=54, var->bound=-1.000000, var->weight=1.000000, min_usage=0.330969, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=54, var.bound=-1.000000, var.weight=1.000000, min_usage=0.330969, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (54) value to 0.330969
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.330969, Var(54)->weight: 1.000000, Var(54)->value: 0.330969 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.330969, Var(54).weight: 1.000000, Var(54).value: 0.330969 
 > [0.000000]: [surf_maxmin/DEBUG] index: 7      cnst_light_num: 8       || usage: 0.000000 remaining: 5.027881 bound: 6.383616  
 > [0.000000]: [surf_maxmin/DEBUG] index: 6      cnst_light_num: 7       || usage: 0.000000 remaining: 6.410722 bound: 7.262737  
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 6       || usage: 0.000000 remaining: 0.000000 bound: 0.769231  
-> [0.000000]: [surf_maxmin/DEBUG] var=51, var->bound=-1.000000, var->weight=1.000000, min_usage=1.219766, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=58, var->bound=-1.000000, var->weight=1.000000, min_usage=1.219766, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=51, var.bound=-1.000000, var.weight=1.000000, min_usage=1.219766, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=58, var.bound=-1.000000, var.weight=1.000000, min_usage=1.219766, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (51) value to 1.219766
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.219766, Var(51)->weight: 1.000000, Var(51)->value: 1.219766 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.219766, Var(51).weight: 1.000000, Var(51).value: 1.219766 
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 5       || usage: 0.000000 remaining: 1.051250 bound: 4.255744  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (58) value to 1.219766
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.219766, Var(58)->weight: 1.000000, Var(58)->value: 1.219766 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.219766, Var(58).weight: 1.000000, Var(58).value: 1.219766 
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 4       || usage: 0.000000 remaining: 2.727287 bound: 6.793207  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 3       || usage: 0.000000 remaining: 0.000000 bound: 3.456543  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 2       || usage: 0.000000 remaining: 1.596251 bound: 3.636364  
@@ -457,35 +457,35 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench small  10 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '63' usage: 3.103397 remaining: 5.574426 concurrency: 2<=2<=3
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '70' usage: 1.173327 remaining: 3.576424 concurrency: 1<=2<=4
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '67' usage: 0.000000 remaining: 5.854146 concurrency: 0<=0<=4
-> [0.000000]: [surf_maxmin/DEBUG] var=61, var->bound=-1.000000, var->weight=1.000000, min_usage=0.596470, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=64, var->bound=-1.000000, var->weight=1.000000, min_usage=0.596470, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=61, var.bound=-1.000000, var.weight=1.000000, min_usage=0.596470, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=64, var.bound=-1.000000, var.weight=1.000000, min_usage=0.596470, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (61) value to 0.596470
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.596470, Var(61)->weight: 1.000000, Var(61)->value: 0.596470 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.596470, Var(61).weight: 1.000000, Var(61).value: 0.596470 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (64) value to 0.596470
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.596470, Var(64)->weight: 1.000000, Var(64)->value: 0.596470 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.596470, Var(64).weight: 1.000000, Var(64).value: 0.596470 
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 9       || usage: 0.000000 remaining: 0.000000 bound: 2.937063  
-> [0.000000]: [surf_maxmin/DEBUG] var=62, var->bound=-1.000000, var->weight=1.000000, min_usage=0.840184, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=66, var->bound=-1.000000, var->weight=1.000000, min_usage=0.840184, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=67, var->bound=-1.000000, var->weight=1.000000, min_usage=0.840184, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=62, var.bound=-1.000000, var.weight=1.000000, min_usage=0.840184, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=66, var.bound=-1.000000, var.weight=1.000000, min_usage=0.840184, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=67, var.bound=-1.000000, var.weight=1.000000, min_usage=0.840184, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (62) value to 0.840184
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.840184, Var(62)->weight: 1.000000, Var(62)->value: 0.840184 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.840184, Var(62).weight: 1.000000, Var(62).value: 0.840184 
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 8       || usage: 0.000000 remaining: 5.699228 bound: 7.852148  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (66) value to 0.840184
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.840184, Var(66)->weight: 1.000000, Var(66)->value: 0.840184 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.840184, Var(66).weight: 1.000000, Var(66).value: 0.840184 
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 7       || usage: 0.000000 remaining: 2.590613 bound: 3.576424  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (67) value to 0.840184
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.840184, Var(67)->weight: 1.000000, Var(67)->value: 0.840184 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.840184, Var(67).weight: 1.000000, Var(67).value: 0.840184 
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 6       || usage: 0.000000 remaining: 3.285095 bound: 5.574426  
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 5       || usage: 0.000000 remaining: 0.000000 bound: 5.684316  
-> [0.000000]: [surf_maxmin/DEBUG] var=63, var->bound=-1.000000, var->weight=1.000000, min_usage=1.205488, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=63, var.bound=-1.000000, var.weight=1.000000, min_usage=1.205488, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (63) value to 1.205488
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.205488, Var(63)->weight: 1.000000, Var(63)->value: 1.205488 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.205488, Var(63).weight: 1.000000, Var(63).value: 1.205488 
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 4       || usage: 0.000000 remaining: 3.912988 bound: 6.843157  
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 3       || usage: 0.000000 remaining: 0.000000 bound: 5.944056  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 2       || usage: 0.000000 remaining: 5.529444 bound: 7.422577  
@@ -525,44 +525,44 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench small  10 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '80' usage: 3.623377 remaining: 7.912088 concurrency: 3<=3<=4
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '75' usage: 4.765235 remaining: 0.539461 concurrency: 3<=3<=4
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '74' usage: 1.476024 remaining: 1.428571 concurrency: 1<=1<=4
-> [0.000000]: [surf_maxmin/DEBUG] var=74, var->bound=-1.000000, var->weight=1.000000, min_usage=0.113208, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=75, var->bound=-1.000000, var->weight=1.000000, min_usage=0.113208, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=76, var->bound=-1.000000, var->weight=1.000000, min_usage=0.113208, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=77, var->bound=-1.000000, var->weight=1.000000, min_usage=0.113208, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=74, var.bound=-1.000000, var.weight=1.000000, min_usage=0.113208, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=75, var.bound=-1.000000, var.weight=1.000000, min_usage=0.113208, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=76, var.bound=-1.000000, var.weight=1.000000, min_usage=0.113208, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=77, var.bound=-1.000000, var.weight=1.000000, min_usage=0.113208, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (74) value to 0.113208
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.113208, Var(74)->weight: 1.000000, Var(74)->value: 0.113208 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.113208, Var(74).weight: 1.000000, Var(74).value: 0.113208 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (75) value to 0.113208
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.113208, Var(75)->weight: 1.000000, Var(75)->value: 0.113208 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.113208, Var(75).weight: 1.000000, Var(75).value: 0.113208 
 > [0.000000]: [surf_maxmin/DEBUG] index: 6      cnst_light_num: 10      || usage: 0.000000 remaining: 0.783405 bound: 1.168831  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (76) value to 0.113208
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.113208, Var(76)->weight: 1.000000, Var(76)->value: 0.113208 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.113208, Var(76).weight: 1.000000, Var(76).value: 0.113208 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (77) value to 0.113208
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.113208, Var(77)->weight: 1.000000, Var(77)->value: 0.113208 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.113208, Var(77).weight: 1.000000, Var(77).value: 0.113208 
 > [0.000000]: [surf_maxmin/DEBUG] index: 6      cnst_light_num: 9       || usage: 0.000000 remaining: 1.261474 bound: 1.428571  
 > [0.000000]: [surf_maxmin/DEBUG] index: 6      cnst_light_num: 8       || usage: 0.000000 remaining: 0.000000 bound: 0.539461  
-> [0.000000]: [surf_maxmin/DEBUG] var=71, var->bound=-1.000000, var->weight=1.000000, min_usage=0.854701, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=73, var->bound=-1.000000, var->weight=1.000000, min_usage=0.854701, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=71, var.bound=-1.000000, var.weight=1.000000, min_usage=0.854701, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=73, var.bound=-1.000000, var.weight=1.000000, min_usage=0.854701, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (71) value to 0.854701
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.854701, Var(71)->weight: 1.000000, Var(71)->value: 0.854701 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.854701, Var(71).weight: 1.000000, Var(71).value: 0.854701 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (73) value to 0.854701
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.854701, Var(73)->weight: 1.000000, Var(73)->value: 0.854701 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.854701, Var(73).weight: 1.000000, Var(73).value: 0.854701 
 > [0.000000]: [surf_maxmin/DEBUG] index: 3      cnst_light_num: 7       || usage: 0.000000 remaining: 0.000000 bound: 3.446553  
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 6       || usage: 0.000000 remaining: 2.798086 bound: 4.355644  
-> [0.000000]: [surf_maxmin/DEBUG] var=72, var->bound=-1.000000, var->weight=1.000000, min_usage=1.655984, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=80, var->bound=-1.000000, var->weight=1.000000, min_usage=1.655984, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=72, var.bound=-1.000000, var.weight=1.000000, min_usage=1.655984, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=80, var.bound=-1.000000, var.weight=1.000000, min_usage=1.655984, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (72) value to 1.655984
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.655984, Var(72)->weight: 1.000000, Var(72)->value: 1.655984 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.655984, Var(72).weight: 1.000000, Var(72).value: 1.655984 
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 5       || usage: 0.000000 remaining: 3.146068 bound: 7.882118  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (80) value to 1.655984
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.655984, Var(80)->weight: 1.000000, Var(80)->value: 1.655984 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.655984, Var(80).weight: 1.000000, Var(80).value: 1.655984 
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 4       || usage: 0.000000 remaining: 3.590351 bound: 7.262737  
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 3       || usage: 0.000000 remaining: 5.451282 bound: 7.912088  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 2       || usage: 0.000000 remaining: 0.000000 bound: 7.782218  
@@ -602,40 +602,40 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench small  10 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '82' usage: 3.173826 remaining: 7.812188 concurrency: 2<=2<=4
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '87' usage: 2.877123 remaining: 5.074925 concurrency: 1<=2<=4
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '83' usage: 1.522478 remaining: 0.199800 concurrency: 1<=1<=3
-> [0.000000]: [surf_maxmin/DEBUG] var=83, var->bound=-1.000000, var->weight=1.000000, min_usage=0.036726, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=85, var->bound=-1.000000, var->weight=1.000000, min_usage=0.036726, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=89, var->bound=-1.000000, var->weight=1.000000, min_usage=0.036726, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=83, var.bound=-1.000000, var.weight=1.000000, min_usage=0.036726, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=85, var.bound=-1.000000, var.weight=1.000000, min_usage=0.036726, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=89, var.bound=-1.000000, var.weight=1.000000, min_usage=0.036726, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (83) value to 0.036726
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036726, Var(83)->weight: 1.000000, Var(83)->value: 0.036726 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036726, Var(83).weight: 1.000000, Var(83).value: 0.036726 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (85) value to 0.036726
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036726, Var(85)->weight: 1.000000, Var(85)->value: 0.036726 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036726, Var(85).weight: 1.000000, Var(85).value: 0.036726 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (89) value to 0.036726
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036726, Var(89)->weight: 1.000000, Var(89)->value: 0.036726 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.036726, Var(89).weight: 1.000000, Var(89).value: 0.036726 
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 10      || usage: 0.000000 remaining: 0.000000 bound: 0.189810  
 > [0.000000]: [surf_maxmin/DEBUG] index: 5      cnst_light_num: 9       || usage: 0.000000 remaining: 0.143886 bound: 0.199800  
-> [0.000000]: [surf_maxmin/DEBUG] var=81, var->bound=-1.000000, var->weight=1.000000, min_usage=0.133180, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=82, var->bound=-1.000000, var->weight=1.000000, min_usage=0.133180, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=84, var->bound=-1.000000, var->weight=1.000000, min_usage=0.133180, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=81, var.bound=-1.000000, var.weight=1.000000, min_usage=0.133180, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=82, var.bound=-1.000000, var.weight=1.000000, min_usage=0.133180, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=84, var.bound=-1.000000, var.weight=1.000000, min_usage=0.133180, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (81) value to 0.133180
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.133180, Var(81)->weight: 1.000000, Var(81)->value: 0.133180 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.133180, Var(81).weight: 1.000000, Var(81).value: 0.133180 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (82) value to 0.133180
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.133180, Var(82)->weight: 1.000000, Var(82)->value: 0.133180 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.133180, Var(82).weight: 1.000000, Var(82).value: 0.133180 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (84) value to 0.133180
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.133180, Var(84)->weight: 1.000000, Var(84)->value: 0.133180 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.133180, Var(84).weight: 1.000000, Var(84).value: 0.133180 
 > [0.000000]: [surf_maxmin/DEBUG] index: 7      cnst_light_num: 8       || usage: 0.000000 remaining: 7.532445 bound: 7.812188  
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 7       || usage: 0.000000 remaining: 7.706925 bound: 8.081918  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 6       || usage: 0.000000 remaining: 0.000000 bound: 0.609391  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 5       || usage: 0.000000 remaining: 4.876179 bound: 5.074925  
-> [0.000000]: [surf_maxmin/DEBUG] var=88, var->bound=-1.000000, var->weight=1.000000, min_usage=0.552648, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=88, var.bound=-1.000000, var.weight=1.000000, min_usage=0.552648, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (88) value to 0.552648
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.552648, Var(88)->weight: 1.000000, Var(88)->value: 0.552648 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.552648, Var(88).weight: 1.000000, Var(88).value: 0.552648 
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 4       || usage: 0.000000 remaining: 2.232278 bound: 3.776224  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 3       || usage: 0.000000 remaining: 5.081262 bound: 5.934066  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 2       || usage: 0.000000 remaining: 3.095879 bound: 4.025974  
@@ -675,36 +675,36 @@ $ $SG_TEST_EXENV ${bindir:=.}/maxmin_bench small  10 test
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '91' usage: 1.179321 remaining: 8.421578 concurrency: 1<=1<=4
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '96' usage: 2.234266 remaining: 3.876124 concurrency: 1<=1<=3
 > [0.000000]: [surf_maxmin/DEBUG] Constraint '93' usage: 4.747253 remaining: 8.971029 concurrency: 3<=3<=3
-> [0.000000]: [surf_maxmin/DEBUG] var=91, var->bound=-1.000000, var->weight=1.000000, min_usage=0.147116, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=94, var->bound=-1.000000, var->weight=1.000000, min_usage=0.147116, var->bound*var->weight=-1.000000
-> [0.000000]: [surf_maxmin/DEBUG] var=97, var->bound=-1.000000, var->weight=1.000000, min_usage=0.147116, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=91, var.bound=-1.000000, var.weight=1.000000, min_usage=0.147116, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=94, var.bound=-1.000000, var.weight=1.000000, min_usage=0.147116, var.bound*var.weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=97, var.bound=-1.000000, var.weight=1.000000, min_usage=0.147116, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (91) value to 0.147116
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.147116, Var(91)->weight: 1.000000, Var(91)->value: 0.147116 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.147116, Var(91).weight: 1.000000, Var(91).value: 0.147116 
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (94) value to 0.147116
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.147116, Var(94)->weight: 1.000000, Var(94)->value: 0.147116 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.147116, Var(94).weight: 1.000000, Var(94).value: 0.147116 
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 10      || usage: 0.000000 remaining: 3.978948 bound: 4.585415  
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (97) value to 0.147116
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.147116, Var(97)->weight: 1.000000, Var(97)->value: 0.147116 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.147116, Var(97).weight: 1.000000, Var(97).value: 0.147116 
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 9       || usage: 0.000000 remaining: 0.000000 bound: 0.949051  
-> [0.000000]: [surf_maxmin/DEBUG] var=93, var->bound=-1.000000, var->weight=1.000000, min_usage=0.194272, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=93, var.bound=-1.000000, var.weight=1.000000, min_usage=0.194272, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (93) value to 0.194272
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.194272, Var(93)->weight: 1.000000, Var(93)->value: 0.194272 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.194272, Var(93).weight: 1.000000, Var(93).value: 0.194272 
 > [0.000000]: [surf_maxmin/DEBUG] index: 6      cnst_light_num: 8       || usage: 0.000000 remaining: 0.000000 bound: 0.649351  
 > [0.000000]: [surf_maxmin/DEBUG] index: 6      cnst_light_num: 7       || usage: 0.000000 remaining: 8.192469 bound: 8.421578  
-> [0.000000]: [surf_maxmin/DEBUG] var=92, var->bound=-1.000000, var->weight=1.000000, min_usage=0.546822, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=92, var.bound=-1.000000, var.weight=1.000000, min_usage=0.546822, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (92) value to 0.546822
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.546822, Var(92)->weight: 1.000000, Var(92)->value: 0.546822 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 0.546822, Var(92).weight: 1.000000, Var(92).value: 0.546822 
 > [0.000000]: [surf_maxmin/DEBUG] index: 4      cnst_light_num: 6       || usage: 0.000000 remaining: 0.000000 bound: 1.198801  
 > [0.000000]: [surf_maxmin/DEBUG] index: 4      cnst_light_num: 5       || usage: 0.000000 remaining: 7.799890 bound: 8.541459  
-> [0.000000]: [surf_maxmin/DEBUG] var=95, var->bound=-1.000000, var->weight=1.000000, min_usage=1.734854, var->bound*var->weight=-1.000000
+> [0.000000]: [surf_maxmin/DEBUG] var=95, var.bound=-1.000000, var.weight=1.000000, min_usage=1.734854, var.bound*var.weight=-1.000000
 > [0.000000]: [surf_maxmin/DEBUG] Setting var (95) value to 1.734854
 > 
-> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.734854, Var(95)->weight: 1.000000, Var(95)->value: 1.734854 
+> [0.000000]: [surf_maxmin/DEBUG] Min usage: 1.734854, Var(95).weight: 1.000000, Var(95).value: 1.734854 
 > [0.000000]: [surf_maxmin/DEBUG] index: 2      cnst_light_num: 4       || usage: 0.000000 remaining: 3.148664 bound: 5.714286  
 > [0.000000]: [surf_maxmin/DEBUG] index: 0      cnst_light_num: 3       || usage: 0.000000 remaining: 0.000000 bound: 3.876124  
 > [0.000000]: [surf_maxmin/DEBUG] index: 1      cnst_light_num: 2       || usage: 0.000000 remaining: 6.621449 bound: 8.971029