* the corresponding action will enable it (at least this is the idea).
* \li Enabled elements which variable's weight is non-zero. They are utilized in some LMM functions.
* \li Active elements which variable's weight is non-zero (i.e. it is enabled) AND its element value is non-zero.
- * LMM_solve iterates over active elements during resolution, dynamically making them active or unactive.
+ * LMM_solve iterates over active elements during resolution, dynamically making them active or inactive.
*/
class XBT_PUBLIC Constraint {
public:
ConstraintLight* cnst_light_;
private:
- static int next_rank_; // To give a separate rank_ to each contraint
+ static int next_rank_; // To give a separate rank_ to each constraint
int concurrency_limit_; /* The maximum number of variables that may be enabled at any time (stage variables if
* necessary) */
resource::Resource* id_;
inline void Element::make_inactive()
{
if (active_element_set_hook.is_linked())
- simgrid::xbt::intrusive_erase(constraint->active_element_set_, *this);
+ xbt::intrusive_erase(constraint->active_element_set_, *this);
}
/**
void remove_variable(Variable * var)
{
if (var->variable_set_hook_.is_linked())
- simgrid::xbt::intrusive_erase(variable_set, *var);
+ xbt::intrusive_erase(variable_set, *var);
if (var->saturated_variable_set_hook_.is_linked())
- simgrid::xbt::intrusive_erase(saturated_variable_set, *var);
+ xbt::intrusive_erase(saturated_variable_set, *var);
}
void make_constraint_active(Constraint * cnst)
{
void make_constraint_inactive(Constraint * cnst)
{
if (cnst->active_constraint_set_hook_.is_linked())
- simgrid::xbt::intrusive_erase(active_constraint_set, *cnst);
+ xbt::intrusive_erase(active_constraint_set, *cnst);
if (cnst->modified_constraint_set_hook_.is_linked())
- simgrid::xbt::intrusive_erase(modified_constraint_set, *cnst);
+ xbt::intrusive_erase(modified_constraint_set, *cnst);
}
void enable_var(Variable * var);
resource::Action::ModifiedSet* modified_set_ = nullptr;
private:
+ typedef std::vector<int> dyn_light_t;
+
+ //Data used in lmm::solve
+ std::vector<ConstraintLight> cnst_light_vec;
+ dyn_light_t saturated_constraints;
+
bool selective_update_active; /* flag to update partially the system only selecting changed portions */
unsigned visited_counter_ = 1; /* used by System::update_modified_set() and System::remove_all_modified_set() to
* cleverly (un-)flag the constraints (more details in these functions) */
XBT_PUBLIC System* make_new_fair_bottleneck_system(bool selective_update);
/** @} */
-}
-}
-}
+} // namespace lmm
+} // namespace kernel
+} // namespace simgrid
#endif