/
testAlgs.py
119 lines (87 loc) · 3.22 KB
/
testAlgs.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import sys
import common
import fcfs
import fcfs_AC
import edf
import edf_AC_Basic
import edf_AC_Pro
import llfSimple
import llfSimple_AC_Basic
import llfSimple_AC_Pro
import llfSmart
import llfSmart_AC_Basic
import dsac
import poissonGen
import csvGen
import gc
if len( sys.argv ) != 2:
print 'Wrong Number of Arguments you sent', sys.argv , " .. just interval"
sys.exit()
interval = int( sys.argv[ 1 ] )
common.setInterval(interval)
simulationData = []
arrivalRate = 5
poissonGen.setArrivalRate( arrivalRate )
simulationInterval = poissonGen.simulateInterval()
# <---- FCFS ---->
#print fcfs.simulateFCFS( simulationInterval )
print fcfs_AC.simulate( simulationInterval )
# <---- EDF ---->
#print edf.simulateEDF( simulationInterval )
#print edf_AC_Basic.simulateEDFACB( simulationInterval )
#print edf_AC_Pro.simulateEDFPro( simulationInterval )
# <---- LLFSimple ---->
# print llfSimple.simulateLLFSimple( simulationInterval )
# print llfSimple_AC_Basic.simulateLLFSimpleACB( simulationInterval )
# print llfSimple_AC_Pro.simulateLLFSimpleACPro( simulationInterval )
# <----- LLFSmart ---->
# print llfSmart.simulateLLF( simulationInterval )
# print llfSmart_AC_Basic.simulateLLF( simulationInterval )
# <----- DSAC ----->
# dsac.simulateDSAC( simulationInterval )
sys.exit()
# ------------------ real simulations -------------------------
# # do tons and tons of simulations
numIterations = 100
maxArrivalRate = 2.0
numRunsPerIteration = 10
for i in range( numIterations ):
# gc.collect()
averageRates = [ 0 ] * 7 # a spot for every algo
for k in range( numRunsPerIteration ):
gc.collect()
individualRates = []
poissonGen.setArrivalRate( arrivalRate )
simulationInterval = poissonGen.simulateInterval()
# don't want a simulation with no cars
while common.numberOfVehiclesInSimulation == 0:
simulationInterval = poissonGen.simulateInterval()
#fcfs
fcfsRate = fcfs.simulateFCFS( simulationInterval )
individualRates.append( fcfsRate )
#edf
edfRate = edf.simulateEDF( simulationInterval )
individualRates.append( edfRate )
#llfSmart
llfSmartRate = llfSmart.simulateLLF( simulationInterval )
individualRates.append( llfSmartRate )
llfSmartACRate = llfSmartAC.simulateLLF( simulationInterval )
individualRates.append( llfSmartACRate )
#llfSimple
llfSimpleRate = llfSimple.simulateLLFSimple( simulationInterval )
individualRates.append( llfSimpleRate )
llfSimpleACRate = llfSimpleAC.simulateLLFSimpleAC( simulationInterval )
individualRates.append( llfSimpleACRate )
#dsac
dsacRate = dsac.simulateDSAC( simulationInterval )
individualRates.append( dsacRate )
for index, rate in enumerate(individualRates):
averageRates[index] += rate
for n in range( len(averageRates) ):
averageRates[n] /= ( numRunsPerIteration * 1.0 )
simulationData.append( [arrivalRate] + averageRates)
arrivalRate += (maxArrivalRate / numIterations)
if i % 10 == 0:
print "iteration: " , i, " arrival rate: ", arrivalRate
print averageRates
csvGen.exportSimulationDataToCSV( simulationData )