}
xbt_swag_foreach(var, var_list) {
- if (var->bound < 0 || var->weight <= 0)
+ if(!var->weight) break;
+ if (var->bound < 0)
continue;
DEBUG3("Checking feasability for variable (%p): sat = %f mu = %f", var,
var->value - var->bound, var->mu);
double sigma_i=0.0;
int j;
+ if(!var->weight) break;
+
for (j = 0; j < var->cnsts_number; j++)
sigma_i += (var->cnsts[j].constraint)->lambda;
DEBUG1("#### Minimum error tolerated (dichotomy) : %e",
dichotomy_min_error);
+ if (XBT_LOG_ISENABLED(surf_lagrange, xbt_log_priority_debug)) {
+ lmm_print(sys);
+ }
+
if (!(sys->modified))
return;
var_list = &(sys->variable_set);
i = 0;
xbt_swag_foreach(var, var_list) {
- if ((var->bound < 0.0) || (var->weight <= 0.0)) {
- DEBUG1("#### NOTE var(%d) is a boundless (or inactive) variable", i);
- var->mu = -1.0;
- if(var->weight>0.0)
+ if(!var->weight)
+ var->value = 0.0;
+ else {
+ if (var->bound < 0.0) {
+ DEBUG1("#### NOTE var(%d) is a boundless variable", i);
+ var->mu = -1.0;
var->value = new_value(var);
- else
- var->value = 0;
- } else {
- var->mu = 1.0;
- var->new_mu = 2.0;
- var->value = new_value(var);
+ } else {
+ var->mu = 1.0;
+ var->new_mu = 2.0;
+ var->value = new_value(var);
+ }
+ DEBUG3("#### var(%d) %p ->df : %e", i, var, var->df);
+ DEBUG3("#### var(%d) %p ->mu : %e", i, var, var->mu);
+ DEBUG3("#### var(%d) %p ->weight: %e", i, var, var->weight);
+ DEBUG3("#### var(%d) %p ->bound: %e", i, var, var->bound);
+ i++;
}
- DEBUG3("#### var(%d) %p ->mu : %e", i, var, var->mu);
- DEBUG3("#### var(%d) %p ->weight: %e", i, var, var->weight);
- DEBUG3("#### var(%d) %p ->bound: %e", i, var, var->bound);
- i++;
}
/*
* Improve the value of mu_i
*/
xbt_swag_foreach(var, var_list) {
- if ((var->bound >= 0) && (var->weight > 0)) {
+ if(!var->weight) break;
+ if (var->bound >= 0) {
DEBUG1("Working on var (%p)", var);
var->new_mu = new_mu(var);
/* dual_updated += (fabs(var->new_mu-var->mu)>dichotomy_min_error); */
#define VEGAS_SCALING 1000.0
double func_vegas_f(lmm_variable_t var, double x){
- xbt_assert0(x>0.0,"Don't call me with stupid values!");
+ xbt_assert1(x>0.0,"Don't call me with stupid values! (%1.20f)",x);
return VEGAS_SCALING*var->df*log(x);
}
double func_vegas_fp(lmm_variable_t var, double x){
- xbt_assert0(x>0.0,"Don't call me with stupid values!");
+ xbt_assert1(x>0.0,"Don't call me with stupid values! (%1.20f)",x);
return VEGAS_SCALING*var->df/x;
}
double func_vegas_fpi(lmm_variable_t var, double x){
- xbt_assert0(x>0.0,"Don't call me with stupid values!");
+ xbt_assert1(x>0.0,"Don't call me with stupid values! (%1.20f)",x);
return var->df/(x/VEGAS_SCALING);
}