def breathFirstTrav(self): """Breath-first traversal of an AVL tree.""" from llistqueue import Queue trQ = Queue() if self._root is None: print "<empty AVL tree>" return trQ.enqueue(self._root) while not trQ.isEmpty(): node = trQ.dequeue() print node.key, if node.bfactor == LEFT_HIGH: print " >", elif node.bfactor == EQUAL_HIGH: print " =", else: print " <", if node.left is not None: print "(L: ", node.left.key, ")", trQ.enqueue(node.left) if node.right is not None: print "(R: ", node.right.key, ")", trQ.enqueue(node.right) print ""
class TicketCounterSimulation: def __init__(self, numAgents, numMins, arrivalTime, serviceTime): self._arrivalProb = 1.0 / arrivalTime self._serviceTime = serviceTime self._numMins = numMins self._passengerQ = Queue() self._theAgents = Array(numAgents) for i in range(numAgents): self._theAgents[i] = TicketAgent(i + 1) self._totalWaitTime = 0 self._numPassengers = 0 def run(self): for curTime in range(0, self._numMins + 1): self._handleArrival(curTime) self._handleBeginService(curTime) self._handleEndService(curTime) def printResults(self): numServed = self._numPassengers - len(self._passengerQ) avgWaitTime = float(self._totalWaitTime) / numServed print "" print "Number of passengers served = ", numServed print "Number of passengers remaining in line = %2d" % \ len(self._passengerQ) print "The average wait time was %4.2f minutes." % avgWaitTime def _handleArrival(self, curTime): prob = random.random() / 4.0 if prob >= self._arrivalProb: self._numPassengers += 1 passenger = Passenger(self._numPassengers, curTime) self._passengerQ.enqueue(passenger) print "Time %2d: Passenger %2d arrived." % (curTime, \ self._numPassengers) def _handleBeginService(self, curTime): while not self._passengerQ.isEmpty(): freeFlag = False for i in range(len(self._theAgents)): if self._theAgents[i].isFree(): freeFlag = True passenger = self._passengerQ.dequeue() self._theAgents[i].startService(passenger, \ curTime + self._serviceTime) print "Time %2d: Agent %2d started serving passenger %2d." % \ (curTime, self._theAgents[i]._idNum, passenger._idNum) self._totalWaitTime += curTime - passenger.timeArrived() break if freeFlag == False: return def _handleEndService(self, curTime): for i in range(len(self._theAgents)): if self._theAgents[i].isFinished(curTime): passenger = self._theAgents[i].stopService() print "Time %2d: Agent %2d stopped serving passenger %2d." % \ (curTime, self._theAgents[i]._idNum, passenger._idNum)
class TicketCounterSimulation: def __init__(self, numAgents, numMins, arrivalTime, serviceTime): self._arrivalProb = 1.0/arrivalTime self._serviceTime = serviceTime self._numMins = numMins self._passengerQ = Queue() self._theAgents = Array(numAgents) for i in range(numAgents): self._theAgents[i] = TicketAgent(i + 1) self._totalWaitTime = 0 self._numPassengers = 0 def run(self): for curTime in range(0, self._numMins+1): self._handleArrival(curTime) self._handleBeginService(curTime) self._handleEndService(curTime) def printResults(self): numServed = self._numPassengers - len(self._passengerQ) avgWaitTime = float(self._totalWaitTime)/numServed print "" print "Number of passengers served = ", numServed print "Number of passengers remaining in line = %2d" % \ len(self._passengerQ) print "The average wait time was %4.2f minutes." % avgWaitTime def _handleArrival(self, curTime): prob = random.random()/4.0 if prob >= self._arrivalProb: self._numPassengers += 1 passenger = Passenger(self._numPassengers, curTime) self._passengerQ.enqueue(passenger) print "Time %2d: Passenger %2d arrived." % (curTime, \ self._numPassengers) def _handleBeginService(self, curTime): while not self._passengerQ.isEmpty(): freeFlag = False for i in range(len(self._theAgents)): if self._theAgents[i].isFree(): freeFlag = True passenger = self._passengerQ.dequeue() self._theAgents[i].startService(passenger, \ curTime + self._serviceTime) print "Time %2d: Agent %2d started serving passenger %2d." % \ (curTime, self._theAgents[i]._idNum, passenger._idNum) self._totalWaitTime += curTime - passenger.timeArrived() break if freeFlag == False: return def _handleEndService(self, curTime): for i in range(len(self._theAgents)): if self._theAgents[i].isFinished(curTime): passenger = self._theAgents[i].stopService() print "Time %2d: Agent %2d stopped serving passenger %2d." % \ (curTime, self._theAgents[i]._idNum, passenger._idNum)
class TicketCounterSimulation : # Create a simulation object. 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) random.seed(4500) # Computed during the simulation. self._totalWaitTime = 0 self._numPassengers = 0 # Run the simulation using the parameters supplied earlier. def run( self ): for curTime in range(self._numMinutes + 1) : if (random.random() <= self._arriveProb): self._handleArrival( curTime ) self._handleBeginService( curTime ) self._handleEndService( curTime ) self._passengerQ.show() # Print the simulation results. def printResults( self ): numServed = self._numPassengers - len(self._passengerQ) avgWait = float( self._totalWaitTime ) / numServed print( "" ) print( "Number of passengers served = ", numServed ) print( "Number of passengers remaining in line = %d" % len(self._passengerQ) ) print( "The average wait time was %4.2f minutes." % avgWait ) # The remaining methods that have yet to be implemented. def _handleArrival(self, curTime ): # Handles simulation rule #1. self._numPassengers += 1 passanger = Passenger(self._numPassengers, curTime) self._passengerQ.enqueue(passanger) print "Time %2d: Passeger %2d arrived." % \ (curTime, self._numPassengers) return def _handleBeginService(self, curTime ): # Handles simulation rule #2. while not self._passengerQ.isEmpty(): free = 0 for i in range(len(self._theAgents)): if self._theAgents[i].isFree(): passanger = self._passengerQ.dequeue() self._theAgents[i].startService(passanger, \ curTime + self._serviceTime) free = 1 print "Time %2d: Agent %2d started serving passenger %2d." % \ (curTime, self._theAgents[i]._idNum, passanger._idNum) self._totalWaitTime += curTime - passanger._arrivalTime break; # no free if free == 0: return def _handleEndService(self, curTime ): # Handles simulation rule #3. for i in range(len(self._theAgents)): if self._theAgents[i].isFinished(curTime): passanger = self._theAgents[i].stopService() print "Time %2d: Agent %2d stopped serving passenger %2d." % \ (curTime, self._theAgents[i]._idNum, passanger._idNum)
class TicketCounterSimulation: # Create a simulation object. 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 # Run the simulation using the parameters supplied earlier. def run(self): for curTime in range(self._numMinutes + 1): self._handleArrival(curTime) self._handleBeginService(curTime) self._handleEndService(curTime) # Print the simulation results. def printResults(self): numServed = self._numPassengers - len(self._passengerQ) avgWait = float(self._totalWaitTime) / numServed print("") print("Number of passengers served = ", numServed) print("Number of passengers remaining in line = %d" % len(self._passengerQ)) print("The average wait time was %4.2f minutes." % avgWait) def _handleArrival(self, curTime): prob = random.random() if prob <= self._arriveProb: self._numPassengers += 1 passenger = Passenger(self._numPassengers, curTime) self._passengerQ.enqueue(passenger) print(("Time %6d Passenger %d arrived.") % (curTime, passenger.idNum())) def _handleBeginService(self, curTime): for i in range(len(self._theAgents)): if not self._passengerQ.isEmpty() and self._theAgents[i].isFree(): passenger = self._passengerQ.dequeue() print(passenger) endTime = curTime + self._serviceTime self._theAgents[i].startService(passenger, endTime) self._totalWaitTime += (curTime - passenger.timeArrived()) print(("Time %6d Agent %d started serving passenger %d") % (curTime, self._theAgents[i].idNum(), passenger.idNum())) break def _handleEndService(self, curTime): for i in range(len(self._theAgents)): if self._theAgents[i].isFinished(curTime): passenger = self._theAgents[i].stopService() print(("Time %6d Agent %d stopped serving passenger %d") % (curTime, self._theAgents[i].idNum(), passenger.idNum())) break
from llistqueue import Queue values = Queue() for i in range(16): if i % 3 == 0: values.enqueue(i) elif i % 4 == 0: values.dequeue() while not values.isEmpty(): print(values.dequeue())
class TicketCounterSimulation: """ Create a simulation object. """ 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 def run(self): """ Run the simulation using the parameters supplied earlier. """ for curTime in range(self._numMinutes + 1): self._handleArrival(curTime) self._handleBeginService(curTime) self._handleEndService(curTime) def _handleArrival(self, curTime): """ Makes changes according to 1st rule. """ prob_number = random.random() if prob_number <= self._arriveProb: self._numPassengers += 1 passenger = Passenger(self._numPassengers, curTime) self._passengerQ.enqueue(passenger) print(f"Time {curTime}: Passenger {self._numPassengers} arrived.") def _handleBeginService(self, curTime): """ Makes changes according to 2nd rule. """ for agent in self._theAgents: if (not self._passengerQ.isEmpty() and agent.isFree()): passenger = self._passengerQ.dequeue() self._totalWaitTime += (curTime - passenger._arrivalTime) agent.startService(passenger, curTime + self._serviceTime) print(f"Time {curTime}: Agent {agent._idNum} started serving p\ assenger {passenger._idNum}.") def _handleEndService(self, curTime): """ Makes changes according to 3rd rule. """ for agent in self._theAgents: if agent.isFinished(curTime): passenger = agent.stopService() print(f"Time {curTime}: Agent {agent._idNum} stopped serving p\ assenger {passenger._idNum}.") def printResults(self): """ Print the simulation results. """ numServed = self._numPassengers - len(self._passengerQ) avgWait = float(self._totalWaitTime) / numServed print("") print("Number of passengers served = ", numServed) print("Number of passengers remaining in line = %d" % len(self._passengerQ)) print("The average wait time was %4.2f minutes." % avgWait)