45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
from pypdevs.simulator import Simulator
|
|
import random
|
|
|
|
# Import the model we experiment with
|
|
from system import QueueSystem
|
|
|
|
# Configuration:
|
|
# 1) number of customers to simulate
|
|
num = 500
|
|
# 2) average time between two customers
|
|
time = 30.0
|
|
# 3) average size of customer
|
|
size = 20.0
|
|
# 4) efficiency of processors (products/second)
|
|
speed = 0.5
|
|
# 5) maximum number of processors used
|
|
max_processors = 10
|
|
# End of configuration
|
|
|
|
# Store all results for output to file
|
|
values = []
|
|
# Loop over different configurations
|
|
for i in range(1, max_processors):
|
|
# Make sure each of them simulates exactly the same workload
|
|
random.seed(1)
|
|
# Set up the system
|
|
procs = [speed] * i
|
|
m = QueueSystem(mu=1.0/time, size=size, num=num, procs=procs)
|
|
|
|
# PythonPDEVS specific setup and configuration
|
|
sim = Simulator(m)
|
|
sim.setClassicDEVS()
|
|
sim.simulate()
|
|
|
|
# Gather information for output
|
|
evt_list = m.collector.state.events
|
|
values.append([e.queueing_time for e in evt_list])
|
|
|
|
# Write data to file
|
|
with open('output.csv', 'w') as f:
|
|
for i in range(num):
|
|
f.write("%s" % i)
|
|
for j in range(len(values)):
|
|
f.write(", %5f" % (values[j][i]))
|
|
f.write("\n")
|