X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/e101542b2694675251352f799e903d171a17b1a5..1d498e972be5597e0f902a1bb8e6ec8d87d51002:/loba_2besteffort.cpp?ds=sidebyside diff --git a/loba_2besteffort.cpp b/loba_2besteffort.cpp index 967476e..5573714 100644 --- a/loba_2besteffort.cpp +++ b/loba_2besteffort.cpp @@ -1,5 +1,4 @@ #include // std::isfinite -#include #include #include @@ -9,16 +8,14 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(loba); void loba_2besteffort::load_balance() { - using std::placeholders::_1; - using std::placeholders::_2; - pneigh_sort_by_load(std::less()); print_loads_p(false, xbt_log_priority_debug); double sum = get_load() + std::accumulate(pneigh.begin(), pneigh.end(), 0.0, - std::bind(std::plus(), _1, - std::bind(&neighbor::get_load, _2))); + [](double x, const neighbor* n) { + return x + n->get_load(); + }); double mean = sum / (pneigh.size() + 1); XBT_DEBUG("sum = %g ; mean = %g", sum, mean); @@ -31,6 +28,8 @@ void loba_2besteffort::load_balance() // don't continue if get_load() <= mean, or pneigh[i]->get_load >= mean if (transfer <= 0.0) break; + if (opt::loba_best_divisor) + transfer /= opt::loba_best_divisor; send(pneigh[i], transfer); XBT_DEBUG("sent %g to %s", transfer, pneigh[i]->get_name()); }