Commit 5f163f16 authored by Ulysse Beaugnon's avatar Ulysse Beaugnon

Added distance plots

parent 8bc989a6
...@@ -172,17 +172,14 @@ int Graph::UpdateLowRoutes(double& avgDistance, double unreachable, double* arit ...@@ -172,17 +172,14 @@ int Graph::UpdateLowRoutes(double& avgDistance, double unreachable, double* arit
for(int i = 0; i<size; i++) for(int i = 0; i<size; i++)
{ {
routesResult r = results[i]; routesResult r = results[i];
if((adjacency[i].size() > 16 && adjacency[i].size() < 26) || round % 4 == 0)
while(!r.toDelete.empty())
{ {
nUpdated++; RemoveEdge(i, r.toDelete.top());
while(!r.toDelete.empty()) r.toDelete.pop();
{
RemoveEdge(i, r.toDelete.top());
r.toDelete.pop();
}
} }
SaturateNode(i); SaturateNode(i);
nUpdated++;
avgDistance += r.avgDistance*(size-r.unreachable); avgDistance += r.avgDistance*(size-r.unreachable);
avgDistanceWeight += size-r.unreachable; avgDistanceWeight += size-r.unreachable;
...@@ -258,3 +255,18 @@ void Graph::KillMachines(float proportion) ...@@ -258,3 +255,18 @@ void Graph::KillMachines(float proportion)
} }
} }
} }
void Graph::Reboot(double proba)
{
uniform_real_distribution<double> d(0.0, 1.0);
for(int i=0; i<size; i++)
if(d(generator) <= proba)
{
for(int j : generated[i])
RemoveEdge(i, j);
for(int j : adjacency[i])
RemoveEdge(j, i);
SaturateNode(i);
}
}
\ No newline at end of file
...@@ -16,12 +16,10 @@ void simulate(int size, int k, int maxPeer, int seed, const Latency& latency, co ...@@ -16,12 +16,10 @@ void simulate(int size, int k, int maxPeer, int seed, const Latency& latency, co
Graph graph(size, k, maxPeer, rng, latency); Graph graph(size, k, maxPeer, rng, latency);
cout << "\r" << 0 << "/" << 300; cout << "\r" << 0 << "/" << 3000;
cout.flush(); cout.flush();
long long int nUpdates = 0; for(int i=0; i<3000; i++)
for(int i=0; i<300; i++)
{ {
/*for(float a=0.05; a<1; a+=0.05) /*for(float a=0.05; a<1; a+=0.05)
{ {
...@@ -35,9 +33,10 @@ void simulate(int size, int k, int maxPeer, int seed, const Latency& latency, co ...@@ -35,9 +33,10 @@ void simulate(int size, int k, int maxPeer, int seed, const Latency& latency, co
double avgDistance, unreachable; double avgDistance, unreachable;
double arityDistrib[31], bcArity[31]; double arityDistrib[31], bcArity[31];
nUpdates += graph.UpdateLowRoutes(avgDistance, unreachable, arityDistrib, bcArity, 1, i); graph.Reboot(1.0/(1036.8 + 1.0));
graph.UpdateLowRoutes(avgDistance, unreachable, arityDistrib, bcArity, 1, i);
fprintf(output, "%d,%f, %lld", i, avgDistance, nUpdates); fprintf(output, "%d,%f", i, avgDistance);
for(int j=0; j<=30; j++) for(int j=0; j<=30; j++)
fprintf(output, ",%f", arityDistrib[j]); fprintf(output, ",%f", arityDistrib[j]);
for(int j=0; j<=30; j++) for(int j=0; j<=30; j++)
...@@ -46,7 +45,7 @@ void simulate(int size, int k, int maxPeer, int seed, const Latency& latency, co ...@@ -46,7 +45,7 @@ void simulate(int size, int k, int maxPeer, int seed, const Latency& latency, co
fflush(output); fflush(output);
fsync(fno); fsync(fno);
cout << "\r" << i+1 << "/" << 300; cout << "\r" << i+1 << "/" << 3000;
cout.flush(); cout.flush();
} }
...@@ -78,4 +77,4 @@ int main(int argc, char** argv) ...@@ -78,4 +77,4 @@ int main(int argc, char** argv)
threads[i].get(); threads[i].get();
return 0; return 0;
} }
\ No newline at end of file
...@@ -34,6 +34,7 @@ public: ...@@ -34,6 +34,7 @@ public:
~Graph() { delete[] adjacency; delete[] generated; }; ~Graph() { delete[] adjacency; delete[] generated; };
int UpdateLowRoutes(double& avgDistance, double unreachable, double* arityDistrib, double* bcArity, int nRefresh, int round); int UpdateLowRoutes(double& avgDistance, double unreachable, double* arityDistrib, double* bcArity, int nRefresh, int round);
double GetUnAvalaibility(); double GetUnAvalaibility();
void Reboot(double proba);
void KillMachines(float proportion); void KillMachines(float proportion);
private: private:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment