def Schedule(calendar, EventType, EventTime): #Schedule future events of EventType to occur at time SimClasses.Clock + EventTime addedEvent = SimClasses.EventNotice() addedEvent.EventType = EventType addedEvent.EventTime = SimClasses.Clock + EventTime # print("SimClasses.Clock is %f" % SimClasses.Clock) # print(EventTime) calendar.Schedule(addedEvent)
def Arrival(): SimFunctions.Schedule(Calendar, "Arrival", SimRNG.Expon(MeanTBA, 1)) Customer = SimClasses.Entity() Queue.Add(Customer) if Server.Busy == 0: Server.Seize(1) SimFunctions.Schedule(Calendar, "EndOfService", SimRNG.Erlang(Phases, MeanST, 2))
def SchedulePlus(calendar, EventType, EventTime, TheObject): #Schedule future events of EventType to occur at time SimClasses.Clock + EventTime #and pass with the event notice TheObject addedEvent = SimClasses.EventNotice() addedEvent.EventType = EventType addedEvent.EventTime = SimClasses.Clock + EventTime addedEvent.WhichObject = TheObject calendar.Schedule(addedEvent)
def SANInit(): global Destination global Inbound global Outbound global Nodes global ThisActivity Destination = [] Destination.append(b) Destination.append(c) Destination.append(c) Destination.append(d) Destination.append(d) Inbound = [] Outbound = [] Outbound.append(1) Outbound.append(2) Nodes = {} # node a Nodes[InTo, a] = Inbound Nodes[OutOf, a] = Outbound Inbound = [] Outbound = [] # node b Inbound.append(1) Outbound.append(3) Outbound.append(4) Nodes[InTo, b] = Inbound Nodes[OutOf, b] = Outbound Inbound = [] Outbound = [] # node c Inbound.append(2) Inbound.append(3) Outbound.append(5) Nodes[InTo, c] = Inbound Nodes[OutOf, c] = Outbound Inbound = [] Outbound = [] # node 5 Inbound.append(4) Inbound.append(5) Nodes[InTo, d] = Inbound Nodes[OutOf, d] = Outbound Inbound = [] Outbound = [] ThisActivity = SimClasses.Activity()
def Arrival2(): SimFunctions.Schedule(Calendar, "Arrival2", SimRNG.Expon(MeanTBA2, 2)) Class2Customer = SimClasses.Entity() Class2Customer.ClassNum = 2 if Server2.Busy == 0: Server2.Seize(1) SimFunctions.SchedulePlus(Calendar, "EndOfService2", SimRNG.Expon(MeanPT2, 5), Class2Customer) else: Queue2.Add(Class2Customer)
def Arrival(): if SimClasses.Clock < RunLength: SimFunctions.Schedule(Calendar, "Arrival", NSPP(1)) else: return Fax = SimClasses.Entity() if Agents.Busy < Agents.NumberOfUnits: Agents.Seize(1) SimFunctions.SchedulePlus(Calendar, "EndOfEntry", SimRNG.Normal(MeanRegular, VarRegular, 2), Fax) else: RegularQ.Add(Fax)
def Arrival1(): SimFunctions.Schedule(Calendar, "Arrival1", SimRNG.Expon(MeanTBA1, 1)) Class1Customer = SimClasses.Entity() Class1Customer.ClassNum = 1 if Server1.Busy == 0: Server1.Seize(1) SimFunctions.SchedulePlus(Calendar, "EndOfService1", SimRNG.Expon(MeanPT1_1, 3), Class1Customer) elif Server2.Busy == 0: Server2.Seize(1) SimFunctions.SchedulePlus(Calendar, "EndOfService2", SimRNG.Expon(MeanPT1_2, 4), Class1Customer) else: Queue1.Add(Class1Customer)
def Milestone(ActIn, Node): global ThisActivity global Inbound global Outbound global Nodes global Destination Inbound = Nodes[InTo, Node] Outbound = Nodes[OutOf, Node] m = len(Inbound) for Incoming in range(0, m, 1): if Inbound[Incoming] == ActIn: Inbound.remove(Inbound[Incoming]) break Nodes[InTo, Node] = Inbound if len(Inbound) == 0: m = len(Outbound) for ActOut in range(0, m, 1): ThisActivity = SimClasses.Activity() ThisActivity.WhichActivity = Outbound[0] ThisActivity.WhichNode = Destination[Outbound[0] - 1] SimFunctions.SchedulePlus(Calendar, "Milestone", SimRNG.Expon(1, 1), ThisActivity) Outbound.remove(Outbound[0])
import pandas import numpy as np import math from Regression import regression as reg np.random.seed(seed=1) InoTime = {"a": 24.0, "b": 12.0, "clean": 1.5} MedTime = {"a": 1.0, "b": 0.5, "clean": 0.6} FerTime = {"a": 72.0, "b": 48.0, "clean": 6.0} CenTime = {"a": 2.5, "b": 2.0, "clean": 0.2} ChrTime = {"a": 8.0, "b": 7.0, "clean": 1.5} FilTime = {"a": 2.0, "b": 2.0, "clean": 0.5} QCTime = {"a": 2.0, "b": 2.0} PreCulOrders = SimClasses.FIFOQueue() # buffer for preculture InoPreCul_b = SimClasses.FIFOQueue() # buffer for "b" preculture already start Inomedia prep (Priority to Orders queue) InoMedia = SimClasses.FIFOQueue() # buffer for media use for inoculum FerQueue = SimClasses.FIFOQueue() # buffer for main fermenation MainMedia = SimClasses.FIFOQueue() # buffer for media use for main fermentation MediaToPrepare = SimClasses.FIFOQueue() # record media preparation signals haven't been processed DSPBuffer = SimClasses.FIFOQueue() # buffer before downstream releasing InoEqp = SimClasses.Resource() MedEqp = SimClasses.Resource() FerEqp = SimClasses.Resource() CenEqp = SimClasses.Resource() ChrEqp = SimClasses.Resource() FilEqp = SimClasses.Resource() InoEqp.SetUnits(5)
""" Converted from VBASim by Yujing Lin, Linda Pei & Barry L Nelson Last update 8/15/2018 """ import SimClasses import SimFunctions import SimRNG import math import pandas import numpy as np SimClasses.Clock = 0 MeanParkingTime = 2.0 QueueLength = SimClasses.CTStat() N = 0 MaxQueue = 0 ZSimRNG = SimRNG.InitializeRNSeed() Calendar = SimClasses.EventCalendar() TheCTStats = [] TheDTStats = [] TheQueues = [] TheResources = [] TheCTStats.append(QueueLength) AllQueueLength = [] AllMaxQueue = []
# -*- coding: utf-8 -*- """ Converted from VBASim by Yujing Lin, Linda Pei & Barry L Nelson Last update 8/15/2018 """ import SimFunctions import SimRNG import SimClasses import math import pandas ZRNG = SimRNG.InitializeRNSeed() Calendar = SimClasses.EventCalendar() RegularQ = SimClasses.FIFOQueue() SpecialQ = SimClasses.FIFOQueue() RegularWait = SimClasses.DTStat() SpecialWait = SimClasses.DTStat() Regular10 = SimClasses.DTStat() Special10 = SimClasses.DTStat() Agents = SimClasses.Resource() Specialists = SimClasses.Resource() ARate = [] TheCTStats = [] TheDTStats = [] TheQueues = [] TheResources = []
# -*- coding: utf-8 -*- """ Converted from VBASim by Yujing Lin, Linda Pei & Barry L Nelson Last update 8/15/2018 """ import SimFunctions import SimRNG import SimClasses import pandas import numpy as np ZSimRNG = SimRNG.InitializeRNSeed() Queue = SimClasses.FIFOQueue() Wait = SimClasses.DTStat() Server = SimClasses.Resource() Calendar = SimClasses.EventCalendar() TheCTStats = [] TheDTStats = [] TheQueues = [] TheResources = [] TheDTStats.append(Wait) TheQueues.append(Queue) TheResources.append(Server) Server.SetUnits(1) MeanTBA = 1.0
import SimFunctions import SimRNG import SimClasses import numpy as np ZSimRNG = SimRNG.InitializeRNSeed() Queue1 = SimClasses.FIFOQueue() Queue2 = SimClasses.FIFOQueue() Server1 = SimClasses.Resource() Server2 = SimClasses.Resource() TotalTime1 = SimClasses.DTStat() TotalTime2 = SimClasses.DTStat() Calendar = SimClasses.EventCalendar() TheCTStats = [] TheDTStats = [] TheQueues = [] TheResources = [] TheDTStats.append(TotalTime1) TheDTStats.append(TotalTime2) TheQueues.append(Queue1) TheQueues.append(Queue2) TheResources.append(Server1) TheResources.append(Server2) # lists to collect across replication outputs AllQueue1 = [] AllQueue2 = [] AllTotalTime1 = []
import sys sys.path.insert(0, '/home/ry87/SimPy') import SimClasses as PP import sys VAL = 0 ARR_NUM = int(sys.argv[1].split(' ')[VAL]) # python simulation ppModel = PP.OneSim(ARR_NUM) ppModel.simulate(n_steps=1000) print(ARR_NUM) print(ppModel.sum) # ppModel.export_results(directory='ResultsCluster') VAL = VAL + 1
# -*- coding: utf-8 -*- """ Converted from VBASim by Yujing Lin, Linda Pei & Barry L Nelson Last update 8/15/2018 """ import SimClasses import SimFunctions import SimRNG import pandas SimClasses.Clock = 0.0 ZSimRNG = SimRNG.InitializeRNSeed() Calendar = SimClasses.EventCalendar() Destination = [] a = 1 b = 2 c = 3 d = 4 InTo = 1 OutOf = 2 Inbound = [] Outbound = [] Nodes = {} # LP Edits Week 7 Friday 08102018 # These are not defined so I defined them