pickaisle.induct1/2/3是个什么东东?
% | o! ^) c7 W4 O: n- W% W/ H- Omove into后面,应该是一个station或control point,或者Queue/Container/Vehicle/Segment之类的东西。看你的报错信息,这个induct是个path么?+ l9 k2 {1 V. A: b) F V. [
6 V9 V, j3 \6 E0 k$ f) wAutoMod Editor的语法报错信息,有时候会指在下一行,必要的时候要把上下几行都看一下。
: Z1 M6 m& d B5 Z
* S0 i- P# x4 b5 ~6 p% ]! `另外,你的几个P_pick是完全重复的,建议以如下方式修改,可以减少代码编写量:+ g. n7 ^$ Z8 G; b
1. 创建一个Process:名称为P_pick,number of Processes为3,其它按你的需要设置;删除那几个P_pick;, h6 V& i5 W |
2. 创建一个Queue:名称为Q_induct,number of Queues为3,其他按你的需要设置并放置;删除那几个Q_induct;0 E; i) `# B/ T: H$ Z# q
3. 以如下方式改写P_induction和几个P_pick的arriving procedure的代码:
& y- Z+ q3 U6 b1 p+ Z3 Ubegin P_induction arriving- L" h+ `8 x9 u0 g) z7 j+ ]; R8 }
clone 1 load to P_pick(A_induct)
7 h& v, C" D4 ], N! p) w" _end最大的系
1 M2 u; G1 U; z: x- B/ @2 j& [. H, d: h
begin P_pick arriving) v& A' M* |) O* o7 Q4 {3 k* z2 j
set A_i to procindex * 10 + 1+ b- M" P0 c$ P' F" I
move into Q_induct(procindex)6 d) O0 |2 y0 I9 |& _# Q) f
move into pickaisle.induct(procindex)8 f a4 Z d7 Z! {# s# u8 [
/*check the type of pickaisle.induct(i), for your last problem.*/' }4 E- H$ E$ o6 z8 u6 U6 Y! B% D
* k: A0 U: T$ J* e! u z
while A_i<=30 do begin
1 F& M* q0 h {; K) E travel to pickaisle.con(A_i)
/ Y% j2 B0 d8 P4 Q% H1 e+ r3 ^ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
' |8 ?5 y L T* V$ @8 S7 ?, `4 I else wait for 10 sec5 R6 `4 y/ D1 p/ M; W
if A_i=A_leave then send to die
1 P& A4 m& ^* i, o; |) d. @& s else inc A_i by 1
r3 t6 A j1 t2 i, O7 o3 n" r end( {: G; y2 o5 C* ?. v& [1 G" P3 R
end
0 C+ C% p$ m' O$ _ G) o, }* l# Z2 J7 P
其中的procindex为整形,代表当前process的序号。! f4 e0 J. |7 ]2 B* ]
station和control point只要以数字结尾,都可以直接用作数组。如pickaisle.induct(procindex),当procindex为1的时候,和pickaisle.induct1是等同的。 |