Download - Power
![Page 1: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/1.jpg)
Power
Tool Development
Simulators.
Languages
. .Petri Nets
Turing Machine
Event Graphs(Sigma)
Queueing.
Usability
![Page 2: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/2.jpg)
A B
Complete Edge Definition
( j )k
t (i)~
After executing event A, a vector of expressions, k, is evaluated. If condition (i) is then true, event B will be scheduled to occur after a delay of t with variable vector, j, equal to those values of k.
![Page 3: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/3.jpg)
Figure 2.2: Main Event Scheduling Algorithm
Cancel Events
Initialize
Advance Clock to Time of Next Event
Execute Event
Remove Event From List
State
Event List
Change State
Schedule Events
Summary StatisticsStop YesNo
![Page 4: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/4.jpg)
The values of k become the attributes of scheduled events…
PENDING EVENTS LIST (“Future” Events list is not necessarily in future)
Time Event Priority Attributes
3.32 Breakdown 2 3,4,6
4.47 Finish 3 3,4,6
5.64 Arrival 4 7 Part number 7 5.64 Finish 3 2,5,1
Tool 3, worker 4, part 6
The “attributes” for the edge that scheduled the Breakdown event are expressions for the values for the “parameters”, (Tool,Worker,Part)
![Page 5: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/5.jpg)
Simulated Call Center (3 classes of caller and agent skill levels)
Policy: Highest priority calls answered first with the lowest skilled agents that can handle the call.
Exercise: Find the error… ( should be )C,0 C,C
RUNN,S[N]‘s
{S[A]=S[A]-1,Q[C]=Q[C]-1}
{S[A]=S[A]+1}
LEAVESTART
(Q[C]>0)
ts(C,A)(S[A]>0)
ARRIVE
tc
{R=RND,C=(R>.4)+(R>.8),
Q[C]=Q[C]+1}
C,0 C,A(C,A) (A)
CHECK(C,A)
(S[A]<=0&A<N-1)
~
~~
A
CHKQs(C,A)
Q[C]==0&C>0)
~
C,A+1A,A
C,A
C-1,A
![Page 6: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/6.jpg)
State for BANK2.MOD
Customers Waiting In Line
16 14 13 1215 11
8
10
6
Customers In Service
NEXT=11ID=15
Pending Events ListTime Type Parameters3.243 Leave 84.210 Enter5.593 Leave 66.478 Leave 10
![Page 7: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/7.jpg)
Do EVENT FOR I = 2 to 7 and J = 0 to I
I+1 , 0
EVENT (I,J)
~ ( I < 7 & J = = I )
~
I , J+1
~
( I 7 & J < I )
2 , 0
( I 7 & J I )
![Page 8: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/8.jpg)
BANK2.MOD
RUN
{Q=Q-1, S=S-1, NEXT=NEXT+1}
{S=S+1,W[IN]=CLK-W[IN]}
LEAVE
(Q>0)
tsSTART
(S>0)ENTER
ta
{ID=ID+1, Q=Q+1, W[ID]=CLK}
(S) (IN)
NEXT
(IN)ID IN
~
~
![Page 9: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/9.jpg)
BANK2.MOD – can you simplfy? (IN not used in START)
RUN
{Q=Q-1, S=S-1, NEXT=NEXT+1}
{S=S+1,W[IN]=CLK-W[IN]}
LEAVE
(Q>0)
tsSTART
(S>0)ENTER
ta
{ID=ID+1, Q=Q+1, W[ID]=CLK}
(S) (IN)
NEXT
(IN)ID IN
~
~
![Page 10: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/10.jpg)
BANK2.MOD (modifiedWhat about collecting wait in line only?)
RUN
{Q=Q-1, S=S-1, NEXT=NEXT+1}
{S=S+1,W[IN]=CLK-W[IN]}
LEAVE
(Q>0)
tsSTART
(S>0)ENTER
ta
{ID=ID+1, Q=Q+1, W[ID]=CLK}
(S) (IN)
~
~ NEXT
![Page 11: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/11.jpg)
BANK2.MOD (modified – wait in queue only)
RUN
{Q=Q-1, S=S-1, W[IN]=CLK-W[IN],NEXT=NEXT+1}
{S=S+1}
LEAVE
(Q>0)
tsSTART(IN)
(S>0)ENTER
ta
{ID=ID+1, Q=Q+1, W[ID]=CLK}
(S)
~
~
NEXT
ID
![Page 12: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/12.jpg)
BANK2.MOD – LIFO? Error – why?
RUN
{Q=Q-1, S=S-1}
{S=S+1,W[IN]=CLK-W[IN]}
LEAVE
(Q>0)
tsSTART
(S>0)ENTER
ta
{Q=Q+1, W[ID]=CLK}
(S) (IN)(IN)Q+1
~
~
![Page 13: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/13.jpg)
DISK Function
Reads input from files during a run.
DISK{F;R} reads record R from file F.
Record can be:Numerical Data......or
EXPRESSIONS (e.g. Q+5*BET{.5;.3})Program can change itself during execution.
![Page 14: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/14.jpg)
DISK FunctionExamples:
1. The file QUE.DAT is: 11 12 13 14 15
Q=DISK{QUE.DAT;4} = 14
Q=DISK{QUE.DAT;9} = 14 (wraps around at EOF)
Q=DISK{QUE.DAT;0} (reads file in sequence, wrap at EOF)
Q=DISK{QUE.DAT;1+5*RND}= Uniform{11,12,...15}
![Page 15: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/15.jpg)
Read(I)
3. Tabled Data in TOOL.DAT
//JID IST BIN MTTF MTTR
1 3.5 4 14.4 15.2
2 3.7 3 10.0 18.7
3 2.5 2 15.4 16.6
4 0.5 5 8.4 12.4
{ JID[I]=DISK{TOOL.DAT;1+5*I}, IST[I] =DISK{TOOL.DAT;2+5*I}, BIN[I]=DISK{TOOL.DAT;3+5*I}, MTTF[I] = DISK{TOOL.DAT;4+5*I}, MTTR[I] = DISK{TOOL.DAT;5+5*I}}
... is Read by...0
I+1~ (I<3)
~(I= =3)
Think of I as the “row” in the data table (starting with 0)!
0
![Page 16: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/16.jpg)
3.5
5.5
7.5
9.5
11.5
13.5
15.5
17.5
40% 50% 60% 70% 80% 90% 100% 110% 120%
Traffic Intensity
Execution Time of Queuing System in Series
70.0
120.0
170.0
220.0
270.0
320.0
370.0
420.0
470.0
520.0
570.0
RD Simulation
JD Simulation
JD Simulation(Network)ASAP (Minutes)
Execution time in seconds of the JDS and RDS at different traffic intensities for “minifab lite”.
From Jesus Jimenez report on John Fowler’s SRC Project at Arizona State
![Page 17: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/17.jpg)
Enter StartRun(R,M)
Leave
ta
ts(S)
(Q)
~
~
{S=R} {Q=Q+1)} {Q=Q-1,S=S-1}
{S=S+1}
Can get average Q from this model – say, wantAverage W? (use Little’s Law).
![Page 18: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/18.jpg)
Enter StartRun(R,M)
Leave(IN)
NEXT
ta
ts(S)
(Q)
~
~
{NEXT=0,S=R}
{Q=Q+(Q<(M-R)), ID=MOD{ID+1;M},W[ID]=CLK}
{Q=Q-1,S=S-1,NEXT=MOD{NEXT+1;M}}
{S=S+1,W[IN]=CLK-W[IN]}
Could use MOD function to recycle elements ofThe W[ ] array. (Assume that Max Q << M-R)
![Page 19: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/19.jpg)
Enter StartRun(R,M)
Leave(IN)
NEXT
ta
ts(S)
(Q)
~
~
{NEXT=1,S=R}
{Q=Q+(Q<(M-R)), ID=MOD{ID+1;M},W[ID]=CLK}
{Q=Q-1,S=S-1,NEXT=MOD{NEXT+1;M}}
{S=S+1,W[IN]=CLK-W[IN]}
Or...Can use (Much Faster and Easier) Resident Entity Model to get Average Delay (Eliminate W[.]!)
![Page 20: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/20.jpg)
Estimates PROB = Prob{Wait<X} as average number of Delays (D) after Starts (S) Homework: Check Priorities between Delay and Start? Is it O.K. for R>1 resources? Why NOT?
Enter StartRun(R,x)
ta
ts(R)
(Q)
~
~
{Q=Q+1}
{D=D+1,W=W+(S>=D),PROB = W/D }
{R=R+1}
Delay
X{Q=Q-1,R=R-1,S=S+1}
Delay.mod
Leave
![Page 21: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/21.jpg)
Records of Transient Entity Attributes
The Array,
ENT[0], ... ,ENT[N],
Acts as a Temporary Buffer for Transferring Data Between theModel and Ranked Lists (Queues).
Queue M will be Ranked by Attribute ENT[ RNK [M] ].
![Page 22: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/22.jpg)
Priority Queues
• PUT{C;L} will add ENT[ ] to list L according to ranking criterion C.– Returns a value of 1– e.g. Q = Q + 1
• GET{C;L} will move a record from list L into ENT[ ] according to criterion C– e.g. Q = Q - 1
![Page 23: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/23.jpg)
Queue Ranking Options• PUT{Option;List}
• 1 or FIF: First is First • 2 or LIF: Last is First • 3 or INC: Increasing values of a rank attribute• 4 or DEC: Decreasing values of rank attribute• 5 or EVN: Breaking Ties between rank
• Get{Option;List}• 1 or FST: First in line• 2 or LST: Last in line• 3 or Key: Specific entity
![Page 24: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/24.jpg)
The ENT[ ] Array
ENT [ ]
ENT [ ]
PUT
GET
LIST
LIST
SIGMA Memory File
Transient Entity Attributes using the ENT[ ] Array
![Page 25: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/25.jpg)
SORTING N Random Numbers
{ LINE=4,
RNK[LINE]=6 }
{ X=RND,
ENT[6]=X }
{ X=ENT[6] }~
~
~
1 1(I==N)
I+1
(I) (I)
I+1
(I<N&PUT{DEC;LINE}) (GET{FST;LINE})
SORTRUN SHOW
![Page 26: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/26.jpg)
A Priority Queue State Changes
{R=R+1}{R=1,RNK[5]=3}
{ID=ID+1,
ENT[1]=ID, ENT[2]=CLK, ENT[3]=1+(RND>.5), Q=Q+PUT{INC;5}}
{Q=Q-GET{FST;5}, W[ENT[1]]=CLK-ENT[2],
R=R-1}
RUN ENTER STARTLEAVE
![Page 27: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/27.jpg)
Time Constrained Process SequenceExample: stamping mill in heavy mfg.
Heat Press
Maximum Cooling Time = tc
ta
thtp
QF = queue for furnacesQP = queue for pressesF = number idle furnacesP = number idle presses
![Page 28: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/28.jpg)
Run(tc,F,P)
Enter Heat
Ready
Press Done
Cold(ENT[0])
Redo
{QF=QF+1}
{F=F+1,QP=QP+1}
{P=P-1,QP=QP-1} {P=P+1}
{QP=QP-1,QF=QF+1}{F=F-1,
QF=QF-1}
ta
th
tc
tp
(F>0)
(QF>0)
(P>0)
(F>0)
(QP>0)
~
~ ~~
~
Straight-Forward Approach to TBS
Problems: non-FIFO or Random tc
![Page 29: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/29.jpg)
Run(tc)
Enter Heat
Ready
Press Done
Cold(ENT[0])
Redo
{F=1,P=1} {QF=QF+1}
{F=F+1,ID=ID+1,ENT[0]=ID,QP=QP+PUT{FIF;1}}
{P=P-1,QP=QP-GET{FST;1}}
{P=P+1}
{QP=QP-1,QF=QF+1}
{F=F-1,QF=QF-1}
ta
th
tc
tp
(F>0)
(QF>0)(GET{KEY;1})
(P>0)
(F>0)
(QP>0)
ID
~~
~ ~~
~
![Page 30: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/30.jpg)
![Page 31: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/31.jpg)
Conditional Get• CGET{Condition;List}• Example: Want to start the first job line 8, if any, with
ENT[3]=2 or ENT[4]>.5, if the Buffer B is not full, and a Worker of skill W is Idle.
Check Start~
CGET{(ENT[3]==2 ENT[4]>.5) & B & W ; 8}
Will Develop a conceptual job shop with 2 Events
![Page 32: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/32.jpg)
~
FINISHENTER
ta
ts
{Q = Q+1}
~(Q = = 1)
Start with Single Resource Queue
ts
(Q1)
{Q = Q-1}
Q = total number of jobs in the systemta = time between job arrivals
ts = processing times
![Page 33: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/33.jpg)
~
FINISHENTER
ta
ts
~(QM)
ts
(QM)
{Q = Q+1} {Q = Q-1}
M Resource Queue
![Page 34: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/34.jpg)
~ FINISH(i)
ENTER(i)
ta
ts(i)
{Qi = Qi+1}
~(QiMi)
N Step Process
Mi = number of resources for ith step Qi = total number of jobs in the ith step
ta = time between job arrivals
ts(i) = processing times at ith step
ts(i)
i+1
~(i= =1)
~(i<N)
(QiMi)
{Qi = Qi-1}
i
i1
![Page 35: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/35.jpg)
General “Job Shop”
Mk = number of resources of type k
Qk = total number of jobs in queue k,
rank increasing priority (RNK[k]=2) .
Dj,k = priority for job type j at resource k
ta(j) = time between type j job arrivals
ts(i,j) = processing times at ith step of job j
Ri,j = The resource type needed by the
jth job type at the ith step of Nj steps.
1. K processing resources2. J job types, each with a different routingSubscript “everything” with the ith step for the jth job using the kth resource.
![Page 36: Power](https://reader035.vdocuments.mx/reader035/viewer/2022062718/56812e01550346895d936059/html5/thumbnails/36.jpg)
~ FINISH(I,J,K)
ENTER(I,J,K)
ta(j)
ts(i,j)
{ENT[0]=I, ENT[1]=J, ENT[2]=D[J;K],
Q[K] = Q[K] + PUT{ INC ; K } }
~
( CGET { Q[K] M[K] ; K } )
I+1, J, R[I+1;J]
~(I = =1)
~
(I<N[J])
ENT[0], ENT[1], K
1, J, R[1;J]
{Q[K] = Q[K] -1}
( CGET { Q[K] M[K] ; K } )
Note: RNK[K] = 2 for all queues
ts(i,j)
ENT[0], ENT[1], K