X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/97a4b4dbf628a627e3c2d5689be89265f56074df..cd6b2539af2f8564684f287983ffb05bb0f7b285:/loba_fairstrategy.cpp?ds=inline diff --git a/loba_fairstrategy.cpp b/loba_fairstrategy.cpp index eb05b49..4ad0bff 100644 --- a/loba_fairstrategy.cpp +++ b/loba_fairstrategy.cpp @@ -11,47 +11,30 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(loba); */ class compare { -public : - bool operator()(const neighbor*a, const neighbor*b) { - return a->get_load()>b->get_load(); - } +public: + bool operator()(const neighbor*a, const neighbor*b) { + return a->get_load() > b->get_load(); + } }; -double loba_fairstrategy::load_balance(double my_load) +void loba_fairstrategy::load_balance() { - int imin = -1; - int imax = -1; - double min = my_load; - double max = -1.0; - - std::sort(pneigh.begin(),pneigh.end(),compare()); - - print_loads_p(); - - double sum_sent=0; - bool found=true; - - while(found) { - found=false; - for (unsigned i = 0 ; i < pneigh.size() ; ++i) { - double l = pneigh[i]->get_load(); - if (l >= my_load) - continue; - if(lset_load(l+1); - pneigh[i]->add_to_send(1); - INFO1("sent to %s",pneigh[i]->get_name()); - my_load--; - sum_sent++; - } - } - } - - - - return sum_sent; - + std::sort(pneigh.begin(), pneigh.end(), compare()); + + print_loads_p(false, xbt_log_priority_debug); + + bool found = true; + + while (found) { + found = false; + for (unsigned i = 0 ; i < pneigh.size() ; ++i) { + if (pneigh[i]->get_load() <= get_load() - 2) { + found = true; + send(pneigh[i], 1); + DEBUG1("sent to %s", pneigh[i]->get_name()); + } + } + } } // Local variables: