|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢* N; B+ a |, v" u' B
: g# T) N& Z) A$ t% b3 z我的问题是,在每个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中的数值,不知道会不会有什么不妥。5 m5 W" ^5 i* B0 W1 {+ y
. U6 N, S; _7 M/ P C( [# V# g5 Vbegin P_read arriving
2 p! ]: `! h% W while 1=1 do begin
/ Q1 q# K7 ^& n$ u3 C; [ read A_tote from "data.txt" with delimiter "\n"
5 x- e" n% u2 R r7 p) @/ }1 N: B/ Z read A_time from "data.txt" with delimiter "\n"/ q6 p" z W! L x& [. w0 L
read A_leave from "data.txt" with delimiter "\n"! Y8 F) `( V. L! y0 M ~
read A_picks from "data.txt" with delimiter "\n"
! C: z, J2 u h3 ~' k set load type to A_tote9 k6 Z. W- a6 X \" B2 t
if A_tote="tote 1" then set A_induct to 1; O9 {4 D5 d2 h% R& z- v8 q
else if A_tote="tote 2" then set A_induct to 2
4 k- ]4 z9 T( w W: b else set A_induct to 3
# z% }& i+ m, Y6 E4 w% F5 { set A_i to 0) V4 V% q/ { i8 T7 y; c" f
clone 1 load to P_induction# n- }* o$ U) a5 i9 Y0 B
wait for A_time sec: O4 a6 S% Q# X4 W
end
' `+ p- p8 M" }! O% @" eend
" L: v$ }) Q8 W. L1 S3 l( Q) }6 }; K) b3 d/ s( \8 x5 c
begin P_induction arriving
y1 z/ y! s/ t d1 E9 K7 D$ p if A_induct=1 then clone 1 load to P_pick1: s4 s# b8 l8 E9 d( }% \ }. J- i, ~
else if A_induct=2 then clone 1 load to P_pick2! b9 o6 a* h* L9 S
else clone 1 load to P_pick3
( o4 p; O k8 p. Q ]5 L1 @1 Fend
+ a9 P7 z: u7 q, j+ W) z+ x+ ^2 p, e8 V' [0 J
begin P_pick1 arriving
- u, w6 G7 |8 p- e& J x8 o3 Q! o' ? set A_i to 1
. W6 N8 X0 M+ _9 \/ W; C( C move into Q_induct1
$ |9 A; s* r( K2 |. a, U8 b move into pickaisle.induct1
C: l |) E4 G0 T# z4 w. C% [ while A_i<=30 do begin
6 J6 d( W- _& C0 ^4 | travel to pickaisle.con(A_i)
# g8 [' o" v$ w2 R if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
! [/ n1 ~! a E1 n/ o. ]3 p else wait for 10 sec
6 _& n/ Y- Y, D9 u, K5 L if A_i=A_leave then send to die
& H2 |: [ g( _5 v else inc A_i by 1
# x: |% _6 q {9 n' b- Q end6 `7 W- u- S4 a$ A
end! ~/ p1 D4 N5 J9 M2 P; A
8 n8 c- O: i6 ?; t$ Nbegin P_pick2 arriving
9 k2 B2 {# q- C% h9 ^& S! j+ W set A_i to 11
: i$ W: m2 R6 U! L& x* {) H. ^ move into Q_induct2: F" t. X+ A A/ q
move into pickaisle.induct2( z: ^9 ]6 t- L- z7 b+ R9 f
while A_i<=30 do begin* N, @1 ~* a4 F$ A$ ?5 e
travel to pickaisle.con(A_i)8 E0 j+ N4 }, s7 y4 }3 q- _$ Z# _
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec- S Q# ~" u0 q- G4 |0 u
else wait for 10 sec! S+ ^0 u0 L( X- W7 \
if A_i=A_leave then send to die* Z5 ]5 w) L9 [
else inc A_i by 10 y B7 O& e4 b' ]9 S4 u2 C6 U$ K: l
end
. F# z8 s# s2 Qend
: \/ p0 W% F- {: A- b3 X B+ L; I; |! J: O s
begin P_pick3 arriving
' z- y* D" `% M2 B set A_i to 21
( b8 g3 I! L# a( N. F! n move into Q_induct3: e* m+ @6 P. ~% x
move into pickaisle.induct3
; n9 j( {3 d2 l+ t$ K while A_i<=30 do begin
6 d1 F" _0 V5 c travel to pickaisle.con(A_i)! Q2 R, G7 v3 F6 Y3 K/ b
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
2 }) W& u6 k" q. D0 S else wait for 10 sec
+ v; P- a2 o' |, @; s" v, Y P if A_i=A_leave then send to die4 l( U4 C% K6 z$ W5 I; {
else inc A_i by 11 L! y, v/ A- m& E# ]
end8 [# ]" `/ I0 j+ A- {. p0 E) M" m
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,其它按你的 ...
|