- for (varIt=varList->begin(); varIt!=varList->end();){
- var = *varIt;
- double minInc =
- var->m_cnsts.front()->p_constraint->m_usage / var->m_cnsts.front()->m_value;
- for (elemIt=++var->m_cnsts.begin(); elemIt!=var->m_cnsts.end(); ++elemIt) {
- elem = (*elemIt);
- minInc = MIN(minInc, elem->p_constraint->m_usage / elem->m_value);
+ xbt_swag_foreach_safe(_var, _var_next, var_list) {
+ var = (lmm_variable_t)_var;
+ double min_inc =
+ var->cnsts[0].constraint->usage / var->cnsts[0].value;
+ for (i = 1; i < var->cnsts_number; i++) {
+ lmm_element_t elm = &var->cnsts[i];
+ min_inc = MIN(min_inc, elm->constraint->usage / elm->value);
+ }
+ if (var->bound > 0)
+ min_inc = 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);