X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2e70818053960b18853a529d21d8151f8b2f3783..a7b730f954add6f47db2cae39946e333114fbe82:/src/kernel/lmm/maxmin.hpp?ds=sidebyside diff --git a/src/kernel/lmm/maxmin.hpp b/src/kernel/lmm/maxmin.hpp index caa2d0dae8..fa5332d7e1 100644 --- a/src/kernel/lmm/maxmin.hpp +++ b/src/kernel/lmm/maxmin.hpp @@ -131,20 +131,6 @@ namespace lmm { /** @{ @ingroup SURF_lmm */ -/** Default functions associated to the chosen protocol. When using the lagrangian approach. */ - -XBT_PUBLIC double func_reno_f(const Variable& var, double x); -XBT_PUBLIC double func_reno_fp(const Variable& var, double x); -XBT_PUBLIC double func_reno_fpi(const Variable& var, double x); - -XBT_PUBLIC double func_reno2_f(const Variable& var, double x); -XBT_PUBLIC double func_reno2_fp(const Variable& var, double x); -XBT_PUBLIC double func_reno2_fpi(const Variable& var, double x); - -XBT_PUBLIC double func_vegas_f(const Variable& var, double x); -XBT_PUBLIC double func_vegas_fp(const Variable& var, double x); -XBT_PUBLIC double func_vegas_fpi(const Variable& var, double x); - /** * @brief LMM element * Elements can be seen as glue between constraint objects and variable objects. @@ -298,13 +284,13 @@ public: * any given time (essentially for tracing)*/ s4u::Link::SharingPolicy sharing_policy_; - int id_int_; + int rank_; // Only used in debug messages to identify the constraint double lambda_; double new_lambda_; ConstraintLight* cnst_light_; private: - static int Global_debug_id_; + static int next_rank_; // To give a separate rank_ to each contraint int concurrency_limit_; /* The maximum number of variables that may be enabled at any time (stage variables if * necessary) */ void* id_; @@ -400,7 +386,7 @@ public: double value_; short int concurrency_share_; /* The maximum number of elements that variable will add to a constraint */ resource::Action* id_; - int id_int_; + int rank_; // Only used in debug messages to identify the variable unsigned visited_; /* used by System::update_modified_set() */ /* \begin{For Lagrange only} */ double mu_; @@ -408,7 +394,7 @@ public: /* \end{For Lagrange only} */ private: - static int Global_debug_id_; + static int next_rank_; // To give a separate rank_ to each variable }; inline void Element::make_active() @@ -613,40 +599,8 @@ private: void bottleneck_solve(); }; -class XBT_PUBLIC Lagrange : public System { -public: - explicit Lagrange(bool selective_update) : System(selective_update) {} - void solve() final { lagrange_solve(); } - - static 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)); - -private: - void lagrange_solve(); - - bool check_feasible(bool warn); - double dual_objective(); - - static double (*func_f)(const Variable& var, double x); /* (f) */ - static double (*func_fp)(const Variable& var, double x); /* (f') */ - static double (*func_fpi)(const Variable& var, double x); /* (f')^{-1} */ - - /* - * Local prototypes to implement the Lagrangian optimization with optimal step, also called dichotomy. - */ - // computes the value of the dichotomy using a initial values, init, with a specific variable or constraint - static double dichotomy(double init, const Constraint& cnst, double min_error); - // computes the value of the differential of constraint cnst applied to lambda - static double partial_diff_lambda(double lambda, const Constraint& cnst); - - static double new_value(const Variable& var); - static double new_mu(const Variable& var); -}; - XBT_PUBLIC System* make_new_maxmin_system(bool selective_update); XBT_PUBLIC System* make_new_fair_bottleneck_system(bool selective_update); -XBT_PUBLIC System* make_new_lagrange_system(bool selective_update); /** @} */ }