#include "xbt/sysdep.h"
#include "maxmin_private.hpp"
+#include <algorithm>
#include <cstdlib>
#ifndef MATH
#include <cmath>
{
double tmp = 0;
- for (int i = 0; i < var->cnsts_number; i++) {
- tmp += (var->cnsts[i].constraint)->lambda;
+ for (s_lmm_element_t const& elem : var->cnsts) {
+ tmp += elem.constraint->lambda;
}
if (var->bound > 0)
tmp += var->mu;
double mu_i = 0.0;
double sigma_i = 0.0;
- for (int j = 0; j < var->cnsts_number; j++) {
- sigma_i += (var->cnsts[j].constraint)->lambda;
+ for (s_lmm_element_t const& elem : var->cnsts) {
+ sigma_i += elem.constraint->lambda;
}
mu_i = var->func_fp(var, var->bound) - sigma_i;
if (mu_i < 0.0)
if (not var->sharing_weight)
break;
- for (int j = 0; j < var->cnsts_number; j++)
- sigma_i += (var->cnsts[j].constraint)->lambda;
+ for (s_lmm_element_t const& elem : var->cnsts)
+ sigma_i += elem.constraint->lambda;
if (var->bound > 0)
sigma_i += var->mu;
var_list = &(sys->variable_set);
i = 0;
xbt_swag_foreach(_var, var_list) {
- var = static_cast<lmm_variable_t>(_var);
- if (not var->sharing_weight)
- var->value = 0.0;
- else {
- int nb = 0;
- if (var->bound < 0.0) {
- XBT_DEBUG("#### NOTE var(%d) is a boundless variable", i);
- var->mu = -1.0;
- var->value = new_value(var);
- } else {
- 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);
- for (i = 0; i < var->cnsts_number; i++) {
- if (var->cnsts[i].consumption_weight == 0.0)
- nb++;
- }
- if (nb == var->cnsts_number)
- var->value = 1.0;
+ var = static_cast<lmm_variable_t>(_var);
+ if (not var->sharing_weight)
+ var->value = 0.0;
+ else {
+ if (var->bound < 0.0) {
+ XBT_DEBUG("#### NOTE var(%d) is a boundless variable", i);
+ var->mu = -1.0;
+ var->value = new_value(var);
+ } else {
+ 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),
+ [](s_lmm_element_t const& x) { return x.consumption_weight != 0.0; });
+ if (weighted == end(var->cnsts))
+ var->value = 1.0;
}
}
double sigma_i = 0.0;
// Compute sigma_i
- for (int j = 0; j < var->cnsts_number; j++) {
- sigma_i += (var->cnsts[j].constraint)->lambda;
+ for (s_lmm_element_t const& elem : var->cnsts) {
+ sigma_i += elem.constraint->lambda;
}
//add mu_i if this flow has a RTT constraint associated