X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f89671e0bd7450461d70d5ced6079123e73c2a63..0af9fb9273bace6930214d00b1000a58ec55742d:/src/kernel/lmm/maxmin.cpp diff --git a/src/kernel/lmm/maxmin.cpp b/src/kernel/lmm/maxmin.cpp index 10499a0de4..96cc184dac 100644 --- a/src/kernel/lmm/maxmin.cpp +++ b/src/kernel/lmm/maxmin.cpp @@ -505,17 +505,9 @@ template void System::lmm_solve(CnstList& cnst_list) double min_bound = -1; XBT_DEBUG("Active constraints : %zu", cnst_list.size()); - /* Init: Only modified code portions: reset the value of active variables */ - for (Constraint const& cnst : cnst_list) { - for (Element const& elem : cnst.enabled_element_set_) { - xbt_assert(elem.variable->sharing_penalty_ > 0.0); - elem.variable->value_ = 0.0; - } - } - - ConstraintLight* cnst_light_tab = new ConstraintLight[cnst_list.size()](); + cnst_light_vec.reserve(cnst_list.size()); + ConstraintLight* cnst_light_tab = cnst_light_vec.data(); int cnst_light_num = 0; - dyn_light_t saturated_constraints; for (Constraint& cnst : cnst_list) { /* INIT: Collect constraints that actually need to be saturated (i.e remaining and usage are strictly positive) @@ -525,7 +517,8 @@ template void System::lmm_solve(CnstList& cnst_list) continue; cnst.usage_ = 0; for (Element& elem : cnst.enabled_element_set_) { - xbt_assert(elem.variable->sharing_penalty_ > 0); + xbt_assert(elem.variable->sharing_penalty_ > 0.0); + elem.variable->value_ = 0.0; if (elem.consumption_weight > 0) { if (cnst.sharing_policy_ != s4u::Link::SharingPolicy::FATPIPE) cnst.usage_ += elem.consumption_weight / elem.variable->sharing_penalty_; @@ -676,7 +669,6 @@ template void System::lmm_solve(CnstList& cnst_list) } saturated_variable_set_update(cnst_light_tab, saturated_constraints, this); - } while (cnst_light_num > 0); modified_ = false; @@ -688,8 +680,6 @@ template void System::lmm_solve(CnstList& cnst_list) } check_concurrency(); - - delete[] cnst_light_tab; } /** @brief Attribute the value bound to var->bound. @@ -814,7 +804,6 @@ void System::on_disabled_var(Constraint* cnstr) // Cannot use foreach loop, because System::enable_var() will modify disabled_element_set.. within the loop while (numelem-- && elem) { - Element* nextelem; if (elem->disabled_element_set_hook.is_linked()) { auto iter = std::next(cnstr->disabled_element_set_.iterator_to(*elem)); @@ -965,6 +954,7 @@ int Constraint::get_variable_amount() const return std::count_if(std::begin(enabled_element_set_), std::end(enabled_element_set_), [](const Element& elem) { return elem.consumption_weight > 0; }); } -} -} -} + +} // namespace lmm +} // namespace kernel +} // namespace simgrid