|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
0 S, _) y6 L! Y7 w* J
1 x6 A6 k3 X1 m6 g& n# o) H, H2 j+ B我的问题是,在每个P_pick的process中的while循环内,总显示错误Expecting QueuePtr or Location, but found PathPtr. 在我定义所有的attribute的时候,从来没有定义过任何QueuePtr or location or PathPtr,为什么会出现这种错误呢。 我这里面A_picks是一个30x1的array的load attribute,我想用A_i这个load attribute来读取这个array中的数值,不知道会不会有什么不妥。( \1 f; \3 O5 J4 j9 ~' ^$ |% m0 j
/ Q7 J) j4 C7 w5 \0 w: H; I' Jbegin P_read arriving
; z! t0 D$ z( b2 L while 1=1 do begin; g& k% Y& [! A7 ]- U# J7 g
read A_tote from "data.txt" with delimiter "\n"
* V' r6 F' I# F0 k, ` read A_time from "data.txt" with delimiter "\n"8 l( F h/ U* o+ l, q. G0 G7 T; ^2 z
read A_leave from "data.txt" with delimiter "\n"0 T0 }1 _# l' \; v! R' m$ N
read A_picks from "data.txt" with delimiter "\n"* o6 h. J& ]' a f$ \* g
set load type to A_tote
0 i" }$ l* b2 O+ m8 _! ^2 A5 o8 m- L if A_tote="tote 1" then set A_induct to 12 a5 Z% q9 r' x. q3 _" ]% c4 L' L
else if A_tote="tote 2" then set A_induct to 23 e7 a6 @# |( D- R
else set A_induct to 3 . O, a3 e8 D1 g
set A_i to 0
& [' i8 O$ v' I: F6 p clone 1 load to P_induction3 `* `7 v. n+ X( F
wait for A_time sec
, X% v! v/ w3 g. w& V: F3 D end
/ D7 h# u" E; m5 L9 m8 o9 rend2 r9 e8 d* j2 K6 T) o) M
' m$ O0 b4 ~+ \4 l* z1 sbegin P_induction arriving
& ~7 q8 Z5 g g0 {, T4 j! k1 W& f. B- ] if A_induct=1 then clone 1 load to P_pick1
- J" D2 V, z. ^+ G2 z else if A_induct=2 then clone 1 load to P_pick27 K5 i4 k4 P- t2 C6 J4 _# Q
else clone 1 load to P_pick3* C. C+ }5 ^1 m
end
& {7 _; N1 n! c+ m0 |1 S9 j, y B! t0 W( |" [8 m0 J
begin P_pick1 arriving
) Y$ K( l4 V1 v2 `/ d set A_i to 1& o) S' n( Q4 k
move into Q_induct1
/ S; U3 }, T1 P6 h2 L" a6 Y+ } move into pickaisle.induct1
. u: I5 W$ ^( y6 i% _- k3 G* Y while A_i<=30 do begin
% n( J G( y; J3 H1 H$ d# d travel to pickaisle.con(A_i)( _3 w. j% f; n& ~# R9 K, U
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec5 H9 q; O6 T; I( U% _
else wait for 10 sec% }) p8 l! \% h! H* q) V
if A_i=A_leave then send to die
8 \1 F3 r3 d$ x; P! C4 u; `/ q else inc A_i by 1& V M! M! \4 D7 T
end& p; F# c* Y& H6 ]: ?( h
end8 |8 d0 e* n2 D
; `# l5 V5 E% D+ B0 n4 Ubegin P_pick2 arriving
' N9 E- P7 o H c# O8 P set A_i to 11+ N9 Q' N- ?; ~6 n
move into Q_induct28 _) A0 `2 Z2 T8 Z% }! Z9 x
move into pickaisle.induct2
" ^ l/ X+ ]! l while A_i<=30 do begin! \ y- Z2 L$ g2 y$ R7 Q
travel to pickaisle.con(A_i)- Y9 \1 b) a; |2 u* i
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
! ?; |4 P; n6 B else wait for 10 sec" h7 }, L5 } ?- S
if A_i=A_leave then send to die, P* U: k& X8 m! K1 ?
else inc A_i by 12 u2 R5 f+ k6 a9 H. x9 W
end- B, i( h9 D( D7 u3 u
end
( a( S3 \ w( T1 K3 T W
: \/ K( G+ E, H, j$ vbegin P_pick3 arriving
0 N" M- o7 `6 G* ^# _0 v& z! N5 S6 Z) Z set A_i to 21
. d) Y3 B) e+ W+ w! k. H move into Q_induct32 w- x: [1 W$ c6 U7 F# O5 r( S
move into pickaisle.induct3, j, G: C" K8 s4 g2 x5 G
while A_i<=30 do begin
3 t* J8 u% G6 I9 ?0 x+ n3 h travel to pickaisle.con(A_i) e, i1 B$ a- L3 \
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec, H* ?2 I* k# m
else wait for 10 sec
1 J& a8 B, Y7 O, D5 O8 e: h) v if A_i=A_leave then send to die6 V; p' d7 R/ H$ q" X; @! A8 K( _+ `
else inc A_i by 1
$ A. I, u% c6 U" p/ v1 H0 ] end1 p4 |( A+ F, Q+ J. A' J
end |
最佳答案
查看完整内容
pickaisle.induct1/2/3是个什么东东?
move into后面,应该是一个station或control point,或者Queue/Container/Vehicle/Segment之类的东西。看你的报错信息,这个induct是个path么?
AutoMod Editor的语法报错信息,有时候会指在下一行,必要的时候要把上下几行都看一下。
另外,你的几个P_pick是完全重复的,建议以如下方式修改,可以减少代码编写量:
1. 创建一个Process:名称为P_pick,number of Processes为3,其它按你的 ...
|