-/* Copyright (c) 2007-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2007-2018. 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. */
double (*func_fp_def)(const Variable&, double);
double (*func_fpi_def)(const Variable&, double);
+System* make_new_lagrange_system(bool selective_update)
+{
+ return new Lagrange(selective_update);
+}
+
/*
* Local prototypes to implement the Lagrangian optimization with optimal step, also called dichotomy.
*/
-// 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, const Constraint&), const Constraint& cnst, double min_error);
// computes the value of the differential of constraint cnst applied to lambda
for (Constraint const& cnst : cnst_list) {
double tmp = 0;
for (Element const& elem : cnst.enabled_element_set) {
- lmm_variable_t var = elem.variable;
+ Variable* var = elem.variable;
xbt_assert(var->sharing_weight > 0);
tmp += var->value;
}
return obj;
}
-void lagrange_solve(lmm_system_t sys)
+// solves the proportional fairness using a Lagrangian optimization with dichotomy step
+void Lagrange::lagrange_solve()
{
/* Lagrange Variables. */
int max_iterations = 100;
XBT_DEBUG("#### Minimum error tolerated (dichotomy) : %e", dichotomy_min_error);
if (XBT_LOG_ISENABLED(surf_lagrange, xbt_log_priority_debug)) {
- sys->print();
+ print();
}
- if (not sys->modified)
+ if (not modified)
return;
/* Initialize lambda. */
- auto& cnst_list = sys->active_constraint_set;
+ auto& cnst_list = active_constraint_set;
for (Constraint& cnst : cnst_list) {
cnst.lambda = 1.0;
cnst.new_lambda = 2.0;
/*
* Initialize the var_list variable with only the active variables. Initialize mu.
*/
- auto& var_list = sys->variable_set;
+ auto& var_list = variable_set;
for (Variable& var : var_list) {
if (not var.sharing_weight)
var.value = 0.0;
}
if (XBT_LOG_ISENABLED(surf_lagrange, xbt_log_priority_debug)) {
- sys->print();
+ print();
}
}
* programming.
*
*/
-void lmm_set_default_protocol_function(double (*func_f)(const Variable& var, double x),
- double (*func_fp)(const Variable& var, double x),
- double (*func_fpi)(const Variable& var, double x))
+void set_default_protocol_function(double (*func_f)(const Variable& var, double x),
+ double (*func_fp)(const Variable& var, double x),
+ double (*func_fpi)(const Variable& var, double x))
{
func_f_def = func_f;
func_fp_def = func_fp;