def __init__(self, graph, s): self._distTo = dict() self._edgeTo = dict() queue = Queue() queue.enqueue(s) self._distTo[s] = 0 self._edgeTo[s] = None while not queue.isEmpty(): v = queue.dequeue() for w in graph.adjacentTo(v): if w not in self._distTo: queue.enqueue(w) self._distTo[w] = 1 + self._distTo[v] self._edgeTo[w] = v
def __init__(self, numAgents, numMinutes, betweenTime, serviceTime): # Parameters supplied by the user. self._arriveProb = 1.0 / betweenTime self._serviceTime = serviceTime self._numMinutes = numMinutes # Simulation components. self._passengerQ = Queue() self._theAgents = Array(numAgents) for i in range(numAgents): self._theAgents[i] = TicketAgent(i + 1) # Computed during the simulation. self._totalWaitTime = 0 self._numPassengers = 0
#----------------------------------------------------------------------- import sys import stddraw import stdrandom from linkedqueue import Queue from histogram import Histogram # Accept float command-line arguments lamb and mu. Simulate an # M/M/1 queue with arrival rate lamb and service rate mu. lamb = float(sys.argv[1]) # Arrival rate mu = float(sys.argv[2]) # Service rate histogram = Histogram(60 + 1) queue = Queue() stddraw.setCanvasSize(700, 500) # Compute time of next arrival. nextArrival = stdrandom.exp(lamb) # Compute time of next completed service. nextService = nextArrival + stdrandom.exp(mu) # Simulate the M/M/1 queue. while True: # Next event is an arrival. while nextArrival < nextService: # Simulate an arrival queue.enqueue(nextArrival)
Example: C:\>python mm1_sim.py .1 .4 1000 ''' import sys import stdrandom from linkedqueue import Queue from statistics import mean import matplotlib.pyplot as plt # Pobieranie danych arrv_rate = float(sys.argv[1]) srv_time = float(sys.argv[2]) limit = int(sys.argv[3]) queue = Queue() empty_system_time = 0 empty_system_prob_dict = {} system_time = 0 system_time_list = [] service_list = [] clients_in_system_list = [] clients_in_queue_list = [] clients_in_system = 0 clients_in_queue = 0 system_usage = arrv_rate / srv_time # generowanie czasu pierwszego zgłoszenia i czasu obsługi next_client = stdrandom.exp(arrv_rate)
from linkedqueue import Queue from randomqueue import RandomQueue # Accept integers serverCount, itemCount, and sampleSize as # command-line arguments. Simulate the process of assigning # itemCount items to a set of serverCount servers. Put requests # on the shortest of a sample of sampleSize queues chosen at random. serverCount = int(sys.argv[1]) itemCount = int(sys.argv[2]) sampleSize = int(sys.argv[3]) # Create a RandomQueue object containing Queue objects. servers = RandomQueue() for i in range(serverCount): servers.enqueue(Queue()) for j in range(itemCount): # Assign an item to a server. best = servers.sample() for k in range(1, sampleSize): # Pick a random server, update if new best. queue = servers.sample() if len(queue) < len(best): best = queue # best is the shortest server queue. best.enqueue(j) lengths = [] while not servers.isEmpty(): lengths += [len(servers.dequeue())]
def __init__(self, numLevels): self.qsize = 0 self.qlevels = array(numLevels) for i in range(numLevels): self.qlevels[i] = Queue()