X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/e77b88227729cc003cb8e74b5657886ed61a270f..7725e3d7f34e70c0ba01ddc4e1055e096e72c2c3:/loba_fairstrategy.cpp?ds=sidebyside diff --git a/loba_fairstrategy.cpp b/loba_fairstrategy.cpp index 81de9e1..4573776 100644 --- a/loba_fairstrategy.cpp +++ b/loba_fairstrategy.cpp @@ -1,9 +1,10 @@ -#include "loba_fairstrategy.h" #include #include XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(loba); +#include "loba_fairstrategy.h" + /* simple version: * load balance with a least-loaded neighbor, * without breaking the ping-pong condition @@ -11,51 +12,38 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(loba); class compare { public : - bool operator()(const neighbor*a, const neighbor*b) { - return a->get_load()>b->get_load(); - } + bool operator()(const neighbor*a, const neighbor*b) { + return a->get_load()>b->get_load(); + } }; double loba_fairstrategy::load_balance(double my_load) { - int imin = -1; - int imax = -1; - double min = my_load; - double max = -1.0; - - std::sort(pneigh.begin(),pneigh.end(),compare()); - - //print_loads(); - - INFO0("list voisins"); - for(unsigned i=0;i< pneigh.size() ; ++i) { - INFO2("%s %f ", pneigh[i]->get_name(), pneigh[i]->get_load()); - } - - 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(); + + 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 (l < my_load+2) { + found=true; + pneigh[i]->add_load(1); + pneigh[i]->add_to_send(1); + INFO1("sent to %s",pneigh[i]->get_name()); + my_load--; + sum_sent++; + } + } + } + + return sum_sent; } // Local variables: