|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
- T. m9 C% F% k; z
8 I8 |$ u" Z2 q. e g( {$ `* {8 @我的问题是,在每个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中的数值,不知道会不会有什么不妥。
" ~# o: \) b0 W3 W% g4 Y
' v+ w8 T, T' ^1 v" @" ]" jbegin P_read arriving
. o# P5 E: ?6 z, E. N: A( b+ [ while 1=1 do begin" U0 A3 y+ z! c$ X$ {6 Y' ]
read A_tote from "data.txt" with delimiter "\n"/ ~ E/ r/ k: M
read A_time from "data.txt" with delimiter "\n" }9 u: J+ n% y# f! y; ~
read A_leave from "data.txt" with delimiter "\n"
8 |$ ~0 C8 y: F( v8 P read A_picks from "data.txt" with delimiter "\n"
" C9 W$ h! H2 ?( w r. m2 L# @ T8 P set load type to A_tote
{ }7 O8 ?0 e, _ W, B if A_tote="tote 1" then set A_induct to 1- u! K! i- W0 k) J! p0 }) l5 \
else if A_tote="tote 2" then set A_induct to 2
" _9 T2 ^4 W- A7 m) \! x. T else set A_induct to 3 6 U9 f/ \/ J; O. ^) G$ T3 {& t) e
set A_i to 0
% `3 I2 X' e& X7 H: K clone 1 load to P_induction
1 @# u* |7 a, }, v; ]7 h; z) B wait for A_time sec
. R" ^9 U9 e, A C6 t end: I: ^" Q0 p2 N% j
end! q5 M8 t7 Y9 ]; {) k
" ?8 \; a0 A3 \% Bbegin P_induction arriving
J% T: o0 G$ `1 U+ Z5 R0 s if A_induct=1 then clone 1 load to P_pick1: t3 Y: X3 U, h2 @" p- L9 W3 J4 D- h* S
else if A_induct=2 then clone 1 load to P_pick2
/ t9 \6 ~5 u( Z F% y! p else clone 1 load to P_pick30 l& t1 s, j9 q5 }
end
% o Q, d$ q, L4 x) z& m' C# j; n3 h) Q. b4 \0 h: w7 w
begin P_pick1 arriving. l! q/ X% n, y3 I) U
set A_i to 1
, [& h- F" v: A move into Q_induct1
& K, v6 N8 T* Q. P" P" W move into pickaisle.induct1
. a! N6 {. h4 a! z9 y$ A while A_i<=30 do begin/ W! m& [7 T/ b: a" O0 V8 K9 c7 e
travel to pickaisle.con(A_i)
* l# g( x" ~) c) O if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec% a! S5 w: P9 E; q$ j
else wait for 10 sec" o! u/ P7 a% Z
if A_i=A_leave then send to die- a& ^ l* M3 W
else inc A_i by 1
/ a- S% i6 A" l ^4 y2 E end
" l0 k( z" V8 {/ M; U+ [( [3 J( dend$ a! ?% Q% ]0 K
4 x6 Q$ x/ w' E. z
begin P_pick2 arriving- T: s' n3 v' b6 O
set A_i to 11
, q- @- ^$ d' {$ V5 I8 U' ]% z8 q move into Q_induct28 L* i( [0 g8 w# w: M- p6 L9 m
move into pickaisle.induct2. i5 D% b& L) r6 M, |3 v, w; w
while A_i<=30 do begin/ i0 O3 c$ v R4 I/ ^* H; p9 `
travel to pickaisle.con(A_i). S1 L8 @( ]' c: E/ e8 T2 p
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
+ u" c9 p+ H. }5 A. q else wait for 10 sec
8 \) ~( |% u. S% J& _# Q if A_i=A_leave then send to die2 s& s" c7 b: \( G1 C7 G
else inc A_i by 1- `" g5 v7 Z4 |# x( ]/ Q
end
: q" W4 ?( ]& b$ Fend; y) x2 i$ g: d+ Y) O5 P1 g
" w9 E" A+ w Q+ F- g" Q+ c+ Tbegin P_pick3 arriving
3 |. ^. k& ]; N7 k% u/ [ set A_i to 21
+ I) D B- M2 H$ _# x8 s4 G( r move into Q_induct39 I" ~/ M h K' u: J
move into pickaisle.induct3
, M( k; e" @6 {3 H5 ` p/ R. S4 \ while A_i<=30 do begin
! b& _* u0 a* O0 [/ v) x1 Q travel to pickaisle.con(A_i)4 Q9 G, q5 {( |6 T4 h. \/ S
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec, E( ]: ]4 X, S+ x, Z
else wait for 10 sec( K' T1 i; F) F& k0 q$ L
if A_i=A_leave then send to die
- `: s' M; S5 l else inc A_i by 1
4 \& }: a+ ~7 [7 P9 s end
. D% t% o/ X0 O3 p$ hend |
最佳答案
查看完整内容
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,其它按你的 ...
|