#include "distribute_file_server2.hpp" #include #include #include #include #include #include #include namespace xios { using namespace std ; void distributeFileOverServer2(int nbServers, int nGrids, SDistGrid* grids, int nFiles, SDistFile* files) { double maxBandwith=0 ; for(int i=0; i servers(nbServers) ; for(int i=0;i listFile(nFiles); for(int i=0; ij nf1=rand()%nFiles ; si=files[nf1].assignedServer_ ; sj=rand()%nbServers ; servers[si].removeFile(nf1) ; servers[sj].addFile(nf1) ; newEnergy=0; for(int i=0;i0) { p=rand()*1./RAND_MAX ; if ( p > exp(-deltaE/T)) // don't accept configuration { servers[sj].removeFile(nf1) ; servers[si].addFile(nf1) ; } else energy=newEnergy ; } else energy=newEnergy ; // metropolis step i<->j nf1=rand()%nFiles ; nf2=rand()%nFiles ; si=files[nf1].assignedServer_ ; sj=files[nf2].assignedServer_ ; servers[si].removeFile(nf1) ; servers[sj].removeFile(nf2) ; servers[si].addFile(nf2) ; servers[sj].addFile(nf1) ; newEnergy=0; for(int i=0;i0) { p=rand()*1./RAND_MAX ; if ( p > exp(-deltaE/T)) // don't accept configuration { servers[si].removeFile(nf2) ; servers[sj].removeFile(nf1) ; servers[si].addFile(nf1) ; servers[sj].addFile(nf2) ; } else energy=newEnergy ; } else energy=newEnergy ; // metropolis switch grid if (it%10==0) { int sum=0 ; while(sum==0) { si=rand()%nbServers ; for(int i=0;i0) { p=rand()*1./RAND_MAX ; if ( p > exp(-deltaE/T)) // don't accept configuration { for(int i=0;i