ParetoChurn.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00026 #ifndef __PARETOCHURN_H_
00027 #define __PARETOCHURN_H_
00028
00029 #include <ChurnGenerator.h>
00030
00031 class TransportAddress;
00032 class GlobalStatistics;
00033
00046 class ParetoChurn : public ChurnGenerator
00047 {
00048 public:
00049 void handleMessage(cMessage* msg);
00050 void initializeChurn();
00051 ParetoChurn() { initFinishedTimer = NULL; };
00052 ~ParetoChurn();
00053
00054 protected:
00055 struct node_stat {
00056 double l;
00057 double d;
00058 bool alive;
00059 };
00060 void updateDisplayString();
00061 void createNode(double lifetime, double meanLifetime, double meanDeadtime, bool initialize);
00062 void deleteNode(TransportAddress& addr, double meanLifetime, double meanDeadtime);
00063
00066 double shiftedPareto(double a, double b, int rng=0);
00067
00074 double betaByMean(double mean, double alpha=3);
00075
00081 double individualMeanTime(double mean);
00082
00088 double individualLifetime(double mean);
00089
00095 double residualLifetime(double mean);
00096
00097 void scheduleCreateNodeAt(double creationTime, double lifetime, double meanLifetime, double meanDeadtime);
00098
00099
00100
00101 private:
00102 GlobalStatistics* globalStatistics;
00103
00104 double initialMean;
00105 double initialDeviation;
00106 double lifetimeMean;
00107 double deadtimeMean;
00108
00109 simtime_t lastCreatetime;
00110 simtime_t lastDeletetime;
00111
00112 cMessage* initFinishedTimer;
00113 };
00114
00115 #endif