from dream.simulation.Globals import runSimulation # define the objects of the model S=BatchSource('S','Source',interArrivalTime={'Fixed':{'mean':1.5}}, entity='Dream.Batch', batchNumberOfUnits=100) Q=Queue('Q','StartQueue',capacity=100000) BD=BatchDecomposition('BC', 'BatchDecomposition', numberOfSubBatches=4, processingTime={'Fixed':{'mean':1}}) M1=Machine('M1','Machine1',processingTime={'Fixed':{'mean':0.5}}) Q1=LineClearance('Q1','Queue1',capacity=2) M2=Machine('M2','Machine2',processingTime={'Fixed':{'mean':4}}) BRA=BatchReassembly('BRA', 'BatchReassembly', numberOfSubBatches=4, processingTime={'Fixed':{'mean':0}}) M3=Machine('M3','Machine3',processingTime={'Fixed':{'mean':1}}) E=Exit('E','Exit') # define the predecessors and successors for the objects S.defineRouting([Q]) Q.defineRouting([S],[BD]) BD.defineRouting([Q],[M1]) M1.defineRouting([BD],[Q1]) Q1.defineRouting([M1],[M2]) M2.defineRouting([Q1],[BRA]) BRA.defineRouting([M2],[M3]) M3.defineRouting([BRA],[E]) E.defineRouting([M3]) def main(test=0): # add all the objects in a list objectList=[S,Q,BD,M1,Q1,M2,BRA,M3,E] # set the length of the experiment maxSimTime=1440.0 # call the runSimulation giving the objects and the length of the experiment
M2=Machine('M2','Machine2', processingTime={'distributionType':'Fixed','mean':1.5}) E=Exit('E1','Exit') #create failures F1=Failure(victim=M1, distribution={'distributionType':'Fixed','MTTF':60,'MTTR':5}, repairman=R) F2=Failure(victim=M2, distribution={'distributionType':'Fixed','MTTF':40,'MTTR':10}, repairman=R) G.ObjList=[S,M1,M2,E,Q] #add all the objects in G.ObjList so that they can be easier accessed later G.MachineList=[M1,M2] G.ObjectInterruptionList=[F1,F2] #add all the objects in G.ObjList so that they can be easier accessed later #define predecessors and successors for the objects S.defineRouting([M1]) M1.defineRouting([S],[Q]) Q.defineRouting([M1],[M2]) M2.defineRouting([Q],[E]) E.defineRouting([M2]) def main(): initialize() #initialize the simulation (SimPy method) #initialize all the objects R.initialize() for object in G.ObjList: object.initialize() for objectInterruption in G.ObjectInterruptionList: objectInterruption.initialize()
for object in G.InternalProcessList+G.InternalQueueList: totalParts+=len(object.getActiveObjectQueue()) return totalParts QB=Queue('QB','QueueBefore', capacity=float("inf")) Q1=InternalQueue('Q1','Q1', capacity=1) M1=InternalProcess('M1','M1',processingTime={'Exp':{'mean':1}}) Q2=InternalQueue('Q2','Q2', capacity=1) M2=InternalProcess('M2','M2',processingTime={'Exp':{'mean':1}}) Q3=InternalQueue('Q3','Q3', capacity=1) M3=InternalProcess('M3','M3',processingTime={'Exp':{'mean':1}}) QA=Queue('QA','QueueAfter', capacity=float("inf")) MA=Machine('MA','MachineAfter',processingTime={'Exp':{'mean':1}}) E=Exit('E','Exit') QB.defineRouting(successorList=[Q1,Q2,Q3]) Q1.defineRouting(predecessorList=[QB],successorList=[M1]) Q2.defineRouting(predecessorList=[QB],successorList=[M2]) Q3.defineRouting(predecessorList=[QB],successorList=[M3]) M1.defineRouting(predecessorList=[Q1],successorList=[QA]) M2.defineRouting(predecessorList=[Q2],successorList=[QA]) M3.defineRouting(predecessorList=[Q3],successorList=[QA]) QA.defineRouting(predecessorList=[M1,M2,M3],successorList=[MA]) MA.defineRouting(predecessorList=[QA],successorList=[E]) E.defineRouting(predecessorList=[MA]) P1=Part('P1','P1',currentStation=QB) P2=Part('P2','P2',currentStation=QB) P3=Part('P3','P3',currentStation=QB) P4=Part('P4','P4',currentStation=QB) P5=Part('P5','P5',currentStation=QB)
'Fixed': { 'mean': 40.0 } }, 'TTR': { 'Fixed': { 'mean': 10.0 } } }, repairman=R) #define predecessors and successors for the objects S.defineRouting([M1]) M1.defineRouting([S], [Q]) Q.defineRouting([M1], [M2]) M2.defineRouting([Q], [E]) E.defineRouting([M2]) def main(test=0): # add all the objects in a list objectList = [S, M1, M2, E, Q, R, F1, F2] # set the length of the experiment maxSimTime = 1440.0 # call the runSimulation giving the objects and the length of the experiment runSimulation(objectList, maxSimTime) # calculate metrics blockage_ratio = (M1.totalBlockageTime / maxSimTime) * 100
}}) M1 = Machine('M1', 'Machine1', processingTime={'Fixed': {'mean': 0.5}}) Q1 = LineClearance('Q1', 'Queue1', capacity=2) M2 = Machine('M2', 'Machine2', processingTime={'Fixed': {'mean': 4}}) BRA = BatchReassembly('BRA', 'BatchReassembly', numberOfSubBatches=4, processingTime={'Fixed': { 'mean': 0 }}) M3 = Machine('M3', 'Machine3', processingTime={'Fixed': {'mean': 1}}) E = Exit('E', 'Exit') # define the predecessors and successors for the objects S.defineRouting([Q]) Q.defineRouting([S], [BD]) BD.defineRouting([Q], [M1]) M1.defineRouting([BD], [Q1]) Q1.defineRouting([M1], [M2]) M2.defineRouting([Q1], [BRA]) BRA.defineRouting([M2], [M3]) M3.defineRouting([BRA], [E]) E.defineRouting([M3]) def main(test=0): # add all the objects in a list objectList = [S, Q, BD, M1, Q1, M2, BRA, M3, E] # set the length of the experiment maxSimTime = 1440.0
from dream.simulation.imports import Machine, Source, Exit, Part, Queue, NonStarvingEntry from dream.simulation.Globals import runSimulation #define the objects of the model NS = NonStarvingEntry('NS1', 'Entry', entityData={'_class': 'Dream.Part'}) M1 = Machine('M1', 'Machine1', processingTime={'Exp': {'mean': 1}}) Q2 = Queue('Q2', 'Queue2') M2 = Machine('M2', 'Machine2', processingTime={'Exp': {'mean': 3}}) Q3 = Queue('Q3', 'Queue3') M3 = Machine('M3', 'Machine3', processingTime={'Exp': {'mean': 5}}) E = Exit('E1', 'Exit') #define predecessors and successors for the objects NS.defineRouting(successorList=[M1]) M1.defineRouting(predecessorList=[NS], successorList=[Q2]) Q2.defineRouting(predecessorList=[M1], successorList=[M2]) M2.defineRouting(predecessorList=[Q2], successorList=[Q3]) Q3.defineRouting(predecessorList=[M2], successorList=[M3]) M3.defineRouting(predecessorList=[Q3], successorList=[E]) E.defineRouting(predecessorList=[M3]) def main(test=0): # add all the objects in a list objectList = [NS, M1, M2, M3, Q2, Q3, E] # set the length of the experiment maxSimTime = 480 solutionList = [] for i in range(1, 10):
from dream.simulation.Globals import runSimulation #define the objects of the model NS=NonStarvingEntry('NS1','Entry',entityData={'_class':'Dream.Part'}) M1=Machine('M1','Machine1', processingTime={'Exp':{'mean':1}}) Q2=Queue('Q2','Queue2') M2=Machine('M2','Machine2', processingTime={'Exp':{'mean':3}}) Q3=Queue('Q3','Queue3') M3=Machine('M3','Machine3', processingTime={'Exp':{'mean':5}}) E=Exit('E1','Exit') #define predecessors and successors for the objects NS.defineRouting(successorList=[M1]) M1.defineRouting(predecessorList=[NS],successorList=[Q2]) Q2.defineRouting(predecessorList=[M1],successorList=[M2]) M2.defineRouting(predecessorList=[Q2],successorList=[Q3]) Q3.defineRouting(predecessorList=[M2],successorList=[M3]) M3.defineRouting(predecessorList=[Q3],successorList=[E]) E.defineRouting(predecessorList=[M3]) def main(test=0): # add all the objects in a list objectList=[NS,M1,M2,M3,Q2,Q3,E] # set the length of the experiment maxSimTime=480 solutionList=[] for i in range(1,10): Q2.capacity=i
}}) M1 = Machine('M1', 'Machine1', processingTime={'Fixed': {'mean': 0.5}}) Q1 = Queue('Q1', 'Queue1', capacity=2) M2 = Machine('M2', 'Machine2', processingTime={'Fixed': {'mean': 1}}) BRA = BatchReassembly('BRA', 'BatchReassembly', numberOfSubBatches=4, processingTime={'Fixed': { 'mean': 0 }}) M3 = Machine('M3', 'Machine3', processingTime={'Fixed': {'mean': 1}}) E = Exit('E', 'Exit') # define the predecessors and successors for the objects S.defineRouting([Q]) Q.defineRouting([S], [BD]) BD.defineRouting([Q], [M1]) M1.defineRouting([BD], [Q1]) Q1.defineRouting([M1], [M2]) M2.defineRouting([Q1], [BRA]) BRA.defineRouting([M2], [M3]) M3.defineRouting([BRA], [E]) E.defineRouting([M3]) def main(test=0): # add all the objects in a list objectList = [S, Q, BD, M1, Q1, M2, BRA, M3, E] # set the length of the experiment maxSimTime = 1440.0 # call the runSimulation giving the objects and the length of the experiment
# The baby step includes: # A source to generate students # A Queue for students to wait for a flight # A machine (aircraft) to give students time # An exit for graduated students # The source is API for Aviation Preflight Indocrination API = Source('API', 'Source', interArrivalTime={'Fixed': {'mean': 0.5}}, entity='Dream.Part') RR = Queue('ReadyRoom', 'Queue', capacity=1) AC = Machine('AC1', 'Machine', processingTime={'Fixed': {'mean': 0.25}}) E = Exit('The Fleet', 'The Fleet') # The predecessors and successors for the objects API.defineRouting(successorList=[RR]) RR.defineRouting(predecessorList=[API], successorList=[AC]) AC.defineRouting(predecessorList=[RR], successorList=[E]) E.defineRouting(predecessorList=[AC]) def main(test=0): # add all the objects in a list objectList=[API, RR, AC, E] # set the length of the experiment maxSimTime = 1440.0 # call the runSimulation giving the objects and the length of the # experiment runSimulation(objectList, maxSimTime) # calculate metrics working_ratio = (AC.totalWorkingTime/maxSimTime) * 100
S=Source('S','Source', interarrivalTime={'distributionType':'Fixed','mean':0.5}, entity='Dream.Part') Q=Queue('Q','Queue', capacity=infinity) M1=Machine('M1','Milling1', processingTime={'distributionType':'Fixed','mean':0.25}) M2=Machine('M2','Milling2', processingTime={'distributionType':'Fixed','mean':0.25}) E=Exit('E1','Exit') F=Failure(victim=M1, distribution={'distributionType':'Fixed','MTTF':60,'MTTR':5}) G.ObjList=[S,Q,M1,M2,E] #add all the objects in G.ObjList so that they can be easier accessed later G.ObjectInterruptionList=[F] #add all the objects in G.ObjList so that they can be easier accessed later #define predecessors and successors for the objects S.defineRouting([Q]) Q.defineRouting([S],[M1,M2]) M1.defineRouting([Q],[E]) M2.defineRouting([Q],[E]) E.defineRouting([M1,M2]) def main(): initialize() #initialize the simulation (SimPy method) for object in G.ObjList: object.initialize() for objectInterruption in G.ObjectInterruptionList: objectInterruption.initialize() #activate all the objects for object in G.ObjList:
totalParts += len(object.getActiveObjectQueue()) return totalParts QB = Queue('QB', 'QueueBefore', capacity=float("inf")) Q1 = InternalQueue('Q1', 'Q1', capacity=1) M1 = InternalProcess('M1', 'M1', processingTime={'Exp': {'mean': 1}}) Q2 = InternalQueue('Q2', 'Q2', capacity=1) M2 = InternalProcess('M2', 'M2', processingTime={'Exp': {'mean': 1}}) Q3 = InternalQueue('Q3', 'Q3', capacity=1) M3 = InternalProcess('M3', 'M3', processingTime={'Exp': {'mean': 1}}) QA = Queue('QA', 'QueueAfter', capacity=float("inf")) MA = Machine('MA', 'MachineAfter', processingTime={'Exp': {'mean': 1}}) E = Exit('E', 'Exit') QB.defineRouting(successorList=[Q1, Q2, Q3]) Q1.defineRouting(predecessorList=[QB], successorList=[M1]) Q2.defineRouting(predecessorList=[QB], successorList=[M2]) Q3.defineRouting(predecessorList=[QB], successorList=[M3]) M1.defineRouting(predecessorList=[Q1], successorList=[QA]) M2.defineRouting(predecessorList=[Q2], successorList=[QA]) M3.defineRouting(predecessorList=[Q3], successorList=[QA]) QA.defineRouting(predecessorList=[M1, M2, M3], successorList=[MA]) MA.defineRouting(predecessorList=[QA], successorList=[E]) E.defineRouting(predecessorList=[MA]) P1 = Part('P1', 'P1', currentStation=QB) P2 = Part('P2', 'P2', currentStation=QB) P3 = Part('P3', 'P3', currentStation=QB) P4 = Part('P4', 'P4', currentStation=QB) P5 = Part('P5', 'P5', currentStation=QB)
distribution={ 'TTF': { 'Fixed': { 'mean': 60.0 } }, 'TTR': { 'Fixed': { 'mean': 5.0 } } }) #define predecessors and successors for the objects S.defineRouting([Q]) Q.defineRouting([S], [M1, M2]) M1.defineRouting([Q], [E]) M2.defineRouting([Q], [E]) E.defineRouting([M1, M2]) def main(test=0): # add all the objects in a list objectList = [S, Q, M1, M2, E, F] # set the length of the experiment maxSimTime = 1440.0 # call the runSimulation giving the objects and the length of the experiment runSimulation(objectList, maxSimTime) # calculate metrics
from dream.simulation.Globals import runSimulation # define the objects of the model S=BatchSource('S','Source',interarrivalTime={'distributionType':'Fixed','mean':1.5}, entity='Dream.Batch', batchNumberOfUnits=100) Q=Queue('Q','StartQueue',capacity=100000) BD=BatchDecomposition('BC', 'BatchDecomposition', numberOfSubBatches=4, processingTime={'distributionType':'Fixed','mean':1}) M1=Machine('M1','Machine1',processingTime={'distributionType':'Fixed','mean':0.5}) Q1=Queue('Q1','Queue1',capacity=2) M2=Machine('M2','Machine2',processingTime={'distributionType':'Fixed','mean':1}) BRA=BatchReassembly('BRA', 'BatchReassembly', numberOfSubBatches=4, processingTime={'distributionType':'Fixed','mean':0}) M3=Machine('M3','Machine3',processingTime={'distributionType':'Fixed','mean':1}) E=Exit('E','Exit') # define the predecessors and successors for the objects S.defineRouting([Q]) Q.defineRouting([S],[BD]) BD.defineRouting([Q],[M1]) M1.defineRouting([BD],[Q1]) Q1.defineRouting([M1],[M2]) M2.defineRouting([Q1],[BRA]) BRA.defineRouting([M2],[M3]) M3.defineRouting([BRA],[E]) E.defineRouting([M3]) def main(test=0): # add all the objects in a list objectList=[S,Q,BD,M1,Q1,M2,BRA,M3,E] # set the length of the experiment maxSimTime=1440.0 # call the runSimulation giving the objects and the length of the experiment runSimulation(objectList, maxSimTime)
from dream.simulation.imports import Machine, Queue, Exit, Part, ExcelHandler from dream.simulation.Globals import runSimulation, G #define the objects of the model Q=Queue('Q1','Queue', capacity=1) M=Machine('M1','Machine', processingTime={'Fixed':{'mean':0.25}}) E=Exit('E1','Exit') P1=Part('P1', 'Part1', currentStation=Q) #define predecessors and successors for the objects Q.defineRouting(successorList=[M]) M.defineRouting(predecessorList=[Q],successorList=[E]) E.defineRouting(predecessorList=[M]) def main(test=0): # add all the objects in a list objectList=[Q,M,E,P1] # set the length of the experiment maxSimTime=float('inf') # call the runSimulation giving the objects and the length of the experiment runSimulation(objectList, maxSimTime, trace='Yes') # calculate metrics working_ratio = (M.totalWorkingTime/G.maxSimTime)*100 # return results for the test if test: return {"parts": E.numOfExits, "simulationTime":E.timeLastEntityLeft, "working_ratio": working_ratio}
from dream.simulation.imports import Source, Queue, Machine, Exit from dream.simulation.Globals import runSimulation #define the objects of the model S=Source('S1','Source',interArrivalTime={'Fixed':{'mean':0.5}}, entity='Dream.Part') Q=Queue('Q1','Queue', capacity=1) M=Machine('M1','Machine', processingTime={'Fixed':{'mean':0.25}}) E=Exit('E1','Exit') #define predecessors and successors for the objects S.defineRouting(successorList=[Q]) Q.defineRouting(predecessorList=[S],successorList=[M]) M.defineRouting(predecessorList=[Q],successorList=[E]) E.defineRouting(predecessorList=[M]) def main(test=0): # add all the objects in a list objectList=[S,Q,M,E] # set the length of the experiment maxSimTime=1440.0 # call the runSimulation giving the objects and the length of the experiment runSimulation(objectList, maxSimTime) # calculate metrics working_ratio = (M.totalWorkingTime/maxSimTime)*100 # return results for the test if test: return {"parts": E.numOfExits, "working_ratio": working_ratio}
M=Machine('M1','Machine', processingTime={'Fixed':{'mean':3}}) E=Exit('E1','Exit') P1=Part('P1', 'Part1', currentStation=Q1) entityList=[] for i in range(5): # create the WIP in a loop Q1PartId='Q1_P'+str(i) Q1PartName='Q1_Part'+str(i) PQ1=Part(Q1PartId, Q1PartName, currentStation=Q1) entityList.append(PQ1) Q2PartId='Q2_P'+str(i) Q2PartName='Q2_Part'+str(i) PQ2=Part(Q2PartId, Q2PartName, currentStation=Q2) entityList.append(PQ2) #define predecessors and successors for the objects Q1.defineRouting(successorList=[M]) Q2.defineRouting(successorList=[M]) M.defineRouting(successorList=[E]) E.defineRouting(predecessorList=[M]) EV=EventGenerator('EV', 'PredecessorChanger', start=0, stop=50, interval=10,method=changeMachinePredecessor, argumentDict={'machine':M, 'possiblePredecessors':[Q1,Q2]}) def main(test=0): # add all the objects in a list objectList=[Q1,Q2,M,E,EV]+entityList # set the length of the experiment maxSimTime=float('inf') # call the runSimulation giving the objects and the length of the experiment runSimulation(objectList, maxSimTime, trace='Yes')
# An exit for graduated students # The source is API for Aviation Preflight Indocrination API = Source('API', 'Source', interArrivalTime={'Fixed': { 'mean': 0.5 }}, entity='Dream.Part') RR = Queue('ReadyRoom', 'Queue', capacity=1) AC = Machine('AC1', 'Machine', processingTime={'Fixed': {'mean': 0.25}}) E = Exit('The Fleet', 'The Fleet') # The predecessors and successors for the objects API.defineRouting(successorList=[RR]) RR.defineRouting(predecessorList=[API], successorList=[AC]) AC.defineRouting(predecessorList=[RR], successorList=[E]) E.defineRouting(predecessorList=[AC]) def main(test=0): # add all the objects in a list objectList = [API, RR, AC, E] # set the length of the experiment maxSimTime = 1440.0 # call the runSimulation giving the objects and the length of the # experiment runSimulation(objectList, maxSimTime) # calculate metrics working_ratio = (AC.totalWorkingTime / maxSimTime) * 100