-/* Copyright (c) 2007-2014. The SimGrid Team.
- * All rights reserved. */
+/* Copyright (c) 2007-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. */
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
+//computes the value of the differential of constraint param_cnst applied to lambda
static double partial_diff_lambda(double lambda, void *param_cnst);
static int __check_feasible(xbt_swag_t cnst_list, xbt_swag_t var_list, int warn)
lmm_constraint_t cnst = nullptr;
lmm_variable_t var = nullptr;
- double tmp;
-
xbt_swag_foreach(_cnst, cnst_list) {
- cnst = static_cast<lmm_constraint_t>(_cnst);
- tmp = 0;
+ cnst = static_cast<lmm_constraint_t>(_cnst);
+ double tmp = 0;
elem_list = &(cnst->enabled_element_set);
xbt_swag_foreach(_elem, elem_list) {
elem = static_cast<lmm_element_t>(_elem);
XBT_DEBUG("#### cnst(%p)->lambda : %e", cnst, cnst->lambda);
}
- /*
- * Initialize the var list variable with only the active variables.
+ /*
+ * Initialize the var list variable with only the active variables.
* Associate an index in the swag variables. Initialize mu.
*/
var_list = &(sys->variable_set);
*
* @param init initial value for \mu or \lambda
* @param diff a function that computes the differential of with respect a \mu or \lambda
- * @param var_cnst a pointer to a variable or constraint
+ * @param var_cnst a pointer to a variable or constraint
* @param min_erro a minimum error tolerated
*
* @return a double corresponding to the result of the dichotomy process
static double partial_diff_lambda(double lambda, void *param_cnst)
{
- int j;
- void *_elem;
- xbt_swag_t elem_list = nullptr;
- lmm_element_t elem = nullptr;
- lmm_variable_t var = nullptr;
lmm_constraint_t cnst = static_cast<lmm_constraint_t>(param_cnst);
double diff = 0.0;
- double sigma_i = 0.0;
XBT_IN();
- elem_list = &(cnst->enabled_element_set);
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) {
- elem = static_cast<lmm_element_t>(_elem);
- var = elem->variable;
+ lmm_element_t elem = static_cast<lmm_element_t>(_elem);
+ lmm_variable_t var = elem->variable;
xbt_assert(var->weight > 0);
XBT_CDEBUG(surf_lagrange_dichotomy, "Computing sigma_i for var (%p)", var);
// Initialize the summation variable
- sigma_i = 0.0;
+ double sigma_i = 0.0;
- // Compute sigma_i
- for (j = 0; j < var->cnsts_number; j++) {
+ // Compute sigma_i
+ for (int j = 0; j < var->cnsts_number; j++) {
sigma_i += (var->cnsts[j].constraint)->lambda;
}
}
/** \brief Attribute the value bound to var->bound.
- *
+ *
* \param func_fpi inverse of the partial differential of f (f prime inverse, (f')^{-1})
- *
+ *
* Set default functions to the ones passed as parameters. This is a polymorphism in C pure, enjoy the roots of
* programming.
*