pickaisle.induct1/2/3是个什么东东?2 x, w$ y) r l
move into后面,应该是一个station或control point,或者Queue/Container/Vehicle/Segment之类的东西。看你的报错信息,这个induct是个path么?9 X) [; a0 K5 C: ]: O
! K, e, l" W; s1 m8 c; P6 W! j9 F: B
AutoMod Editor的语法报错信息,有时候会指在下一行,必要的时候要把上下几行都看一下。
9 Y$ l; s; b1 e5 a
* e4 ~- f# C" \4 H3 k* e4 `另外,你的几个P_pick是完全重复的,建议以如下方式修改,可以减少代码编写量:
8 s: v7 \0 ]$ E1. 创建一个Process:名称为P_pick,number of Processes为3,其它按你的需要设置;删除那几个P_pick;
, q2 g3 y; ?, w+ W( M2. 创建一个Queue:名称为Q_induct,number of Queues为3,其他按你的需要设置并放置;删除那几个Q_induct;9 [& q m- a- X( J
3. 以如下方式改写P_induction和几个P_pick的arriving procedure的代码:, c7 n/ R. L, }7 k- I
begin P_induction arriving
; V. M2 c G) b& H clone 1 load to P_pick(A_induct)
e) v, b# `5 B/ M3 y& e% Bend最大的系
% H& @) x' F' K; q8 s0 ~- F
: ~7 b3 @% J- @begin P_pick arriving# O S" ~0 P9 _- t6 Z
set A_i to procindex * 10 + 1
" _! j4 i! ]1 K5 b Q move into Q_induct(procindex)* V$ V- w, i) B! c4 R# y2 U, X$ u
move into pickaisle.induct(procindex)
* k( x+ j- E$ k6 x /*check the type of pickaisle.induct(i), for your last problem.*/
) s4 e4 h/ e( m
" ]6 K$ N; u9 ^ while A_i<=30 do begin
z9 k5 s8 G8 C- y! M travel to pickaisle.con(A_i)7 b, ?8 e. k6 K
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
+ {9 ]0 k! w, `" W5 l* \2 U- l3 c( D else wait for 10 sec7 |! S/ i; J9 ^, S! R
if A_i=A_leave then send to die" q! Z4 o3 b7 T& \, q( E {9 L0 \
else inc A_i by 16 w! G( Q3 n6 Z2 z: ]; E& q
end
: W i+ M; U& q: U$ E& dend0 }1 r1 v( B' O/ A! z! r
1 V9 e$ c" W6 U3 J2 Y
其中的procindex为整形,代表当前process的序号。0 d+ q& k; J$ z! E1 U! |, p
station和control point只要以数字结尾,都可以直接用作数组。如pickaisle.induct(procindex),当procindex为1的时候,和pickaisle.induct1是等同的。 |