|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
7 s ?- F, T' v- K& W% F' i- ~5 f; O6 @; D, e2 [
我的问题是,在每个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中的数值,不知道会不会有什么不妥。# m, }; I/ s8 F& G6 \7 l; D
* r/ {0 c: u6 {/ m. s1 Y$ M
begin P_read arriving
2 o s: W0 m$ b- \2 L while 1=1 do begin
% K2 Z- o1 S" W9 {2 i: s read A_tote from "data.txt" with delimiter "\n"; s! `# [& D: O
read A_time from "data.txt" with delimiter "\n"6 u8 A% L. N+ B
read A_leave from "data.txt" with delimiter "\n"+ C, U2 g5 `0 S# M; H& F' [
read A_picks from "data.txt" with delimiter "\n". u# j+ _" C9 }* b! v
set load type to A_tote
5 J/ U" @4 W7 H1 { if A_tote="tote 1" then set A_induct to 1& Y2 e* Y5 V0 D2 P- d* i! \" E$ C
else if A_tote="tote 2" then set A_induct to 2. ~/ G/ V" g( Q) \/ p
else set A_induct to 3
, t/ k5 L; s1 v% n+ b- c x set A_i to 09 A0 R, d6 N; T
clone 1 load to P_induction) v& a$ V# ~5 f( }% T. g
wait for A_time sec6 k0 S/ S, d) b, @( c8 ^: M. k2 C
end" w4 k4 q$ N* L x a: L5 b, \" v
end2 [9 h; N- e9 d$ H' q, J R
% D* o1 x- N8 \; j; Y% Bbegin P_induction arriving
7 w& G0 s) G% v0 E. q- u if A_induct=1 then clone 1 load to P_pick1
( ~6 u6 z2 B. z5 t$ U, e8 Y2 j" H. Z else if A_induct=2 then clone 1 load to P_pick2
& r8 e* Q3 c; t1 a5 y) x o else clone 1 load to P_pick3
, g2 w- } }+ ~9 o5 X& i5 E: eend" v# v- W1 k. z2 E
9 f' C5 d( d8 {6 b) Dbegin P_pick1 arriving0 t+ i; _9 L6 ^6 l- y0 _
set A_i to 1+ p( d. R- G9 j. C% L8 W
move into Q_induct1
G7 D( x) ?5 \1 y move into pickaisle.induct1
) g+ \3 H6 P* L7 f while A_i<=30 do begin
4 M% c- H' U; Y, E6 Z# E travel to pickaisle.con(A_i)
/ X; `5 u& i _: a* E7 I# p4 A if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec( d: J! B4 h6 ~) C y2 z' y2 H
else wait for 10 sec/ s! D; e4 g- S
if A_i=A_leave then send to die
@6 X! E; S( j. Q* l1 m else inc A_i by 1
# B$ w( f m3 x$ v end
$ a! f# w, {& A; m& Wend4 x3 w9 G0 i& L# U/ y' p: B, G
+ C( V6 }+ }: L1 kbegin P_pick2 arriving% [; i Z; x; i+ ?
set A_i to 11
' `% A" X9 J, \( { move into Q_induct28 [! A e: n& w7 I7 K# h+ g- X$ M
move into pickaisle.induct2. t$ F5 S( Q" N) T7 l6 q' m
while A_i<=30 do begin
( r* i" |' t. U9 P' E travel to pickaisle.con(A_i)
8 W# D% Z1 x/ o$ \) d if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
, S6 a- Q4 F0 c6 ^. d else wait for 10 sec
9 }; y2 ~" ]7 S! h1 y if A_i=A_leave then send to die
7 @+ Y- P8 Z/ f2 \8 |# V else inc A_i by 1; n l; L6 b. `; g3 d
end
( I+ j8 `2 z/ y6 R) send
' [1 z) d' t; J3 \' P( n- i) O& ]0 \
begin P_pick3 arriving
, W: T) l2 e! S1 q {. ]. U set A_i to 21
6 \: @2 h. u1 v' w# L7 R2 ? move into Q_induct3
2 N2 y- h: e; t0 G move into pickaisle.induct3. o& N( Y1 ?+ k/ M8 B
while A_i<=30 do begin) k3 J7 T$ o6 o+ R. u, r5 v
travel to pickaisle.con(A_i)) h% l3 E) c h0 m, x
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec! W! U7 v$ x) r$ Q8 {
else wait for 10 sec
d; n) O) X6 U if A_i=A_leave then send to die
8 F% Y/ ]0 m6 i) a8 {0 {# o else inc A_i by 1. Z( N) N6 {% A0 r- y, b, f6 B
end. Y# b: r& E7 ~- A0 t
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,其它按你的 ...
|