/*** CONSTANTS AND PARAMETER PART ***/ CONST K := 30; // increase to improve accuracy; decrease to speed up evaluation CONST lambda := 1; CONST mu_1 := 1; CONST mu_2 := 1; CONST mu_3 := 1; CONST mu_4 := 2; CONST mu_5 := 1; CONST p_12 := 0.5; CONST p_13 := 0.5; CONST p_24 := 0.9; CONST p_25 := 0.1; CONST p_34 := 0.9; CONST p_35 := 0.1; CONST p_40 := 0.1; CONST p_46 := 0.9; CONST p_60 := 1/3; CONST p_61 := 2/3; PARAMETER m_1 := 3..10 STEP 1; PARAMETER m_2 := 2,3,4; CONST m_3 := m_2; CONST m_4 := 2; CONST m_5 := 1; /*** NODE PART ***/ @<1..5>{NODE Buffer_#[K] := 0;} @<1..5>{NODE Active_#[m_#] := 0;} NODE Station_6[K] := 0; NODE num[K] := 0; /*** RULES PART ***/ FROM EXTERN TO Buffer_1, num RATE lambda; @<1..5>{FROM Buffer_# TO Active_#;} FROM Active_1 RATE (mu_1 * Active_1) THEN {TO Buffer_2 WEIGHT p_12; TO Buffer_3 WEIGHT p_13; } FROM Active_2 RATE (mu_2 * Active_2) THEN {TO Buffer_4 WEIGHT p_24; TO Buffer_5 WEIGHT p_25; } FROM Active_3 RATE (mu_3 * Active_3) THEN {TO Buffer_4 WEIGHT p_34; TO Buffer_5 WEIGHT p_35; } FROM Active_4, num RATE (mu_4 * Active_4) THEN {TO EXTERN WEIGHT p_40; TO Station_6, num WEIGHT p_46; } FROM Active_5 TO Buffer_1 RATE (mu_5 * Active_5); FROM Station_6, num THEN {TO EXTERN WEIGHT p_60; TO Buffer_1, num WEIGHT p_61;} /*** RESULT PART ***/ // textual // Mean number of active machines @<1..5>{PRINT A_# := MEAN(Active_#);} // Utilization of the machines @<1..5>{PRINT rho_# := A_#/m_#;} // Mean buffer length @<1..5>{PRINT Q_# := MEAN(Buffer_#);} // Mean number of wafers (WIP) PRINT WIP := MEAN(num); // Mean system time PRINT T := WIP / lambda; // graphical PICTURE "Results for different number of machines" PARAMETER m_1 CURVE T XLABEL "Number of machines at Station 1" YLABEL "Mean system time";