|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
7 T( r z$ Q# L! l- b" ?8 f+ {1 V9 E- S5 o& A
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
3 P, I9 A" x$ N* N$ J6 ] r9 y7 u8 r8 X8 ?
begin P_read arriving
6 y, Z4 L- t2 a( n0 C while 1=1 do begin
8 l. S. {) d' P, ?( `8 T5 K read A_tote from "data.txt" with delimiter "\n"
" X1 X. b2 m1 Q/ ] read A_time from "data.txt" with delimiter "\n"7 _, i! V% z4 S: n6 [: T8 M4 v7 z
read A_leave from "data.txt" with delimiter "\n"
& y$ H5 T* n2 O/ K read A_picks from "data.txt" with delimiter "\n"/ J s6 R' I. z) @6 y c- q) @5 D: V
set load type to A_tote6 O; y& m% ?6 ~
if A_tote="tote 1" then set A_induct to 1# n# W3 J) \5 v; Z; v) g
else if A_tote="tote 2" then set A_induct to 2$ Z5 {6 z6 W7 u4 H. ~# ^
else set A_induct to 3
^9 ^+ D- D; z$ c: g* ^ set A_i to 0: Z0 L! s6 i; b; ^, p) K
clone 1 load to P_induction
. ~) K! ]' j# P* }& U* b E wait for A_time sec
/ t9 n9 Y4 x5 R8 u J end% D* j5 U0 D7 @# E6 a. h$ v
end' r: l% {4 |6 u) U
. g" {8 d3 }/ |, i) o3 hbegin P_induction arriving
; j( i$ S6 d+ d if A_induct=1 then clone 1 load to P_pick1
. `% V$ t4 y. }& | z' h. _ else if A_induct=2 then clone 1 load to P_pick2) u' p! O+ K3 j7 `) W( Y! X' V
else clone 1 load to P_pick3
L4 X, o0 u* A5 D, X- r" Dend
1 A/ O, I! Z' i
+ s( C1 C' ^7 d- o8 Ebegin P_pick1 arriving& x" ?# d0 B( l8 V9 f
set A_i to 11 ]0 k( A2 T( H1 x; W- B
move into Q_induct1
; S8 ~# Q: p, }' O; ?( x$ n+ R- E move into pickaisle.induct15 K7 I- J; P7 P/ k5 g
while A_i<=30 do begin
3 a0 O! O G. c9 ^' ~- d1 \ travel to pickaisle.con(A_i)7 _- C% w, Q }: v3 M& Y; H8 Y
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
) n2 @+ Q9 a, z6 [7 `5 h else wait for 10 sec1 K% U) c8 A/ _# x* E+ s
if A_i=A_leave then send to die
% m+ H! {! j/ B/ L else inc A_i by 1
) F" m" w4 k& v+ E: q end
' [" Y+ \" |- ]( B$ {( ?7 r) Rend/ r: I) |8 z1 Z3 Q5 D. Q4 ?( |
! _$ t+ i; D X+ x+ `
begin P_pick2 arriving7 e; E( l3 N2 J) i" u- d/ Z
set A_i to 11! q5 g) M3 p5 i& K
move into Q_induct2
+ P. @% f7 R/ q; l move into pickaisle.induct2
) m% j) F- \/ i while A_i<=30 do begin
! w S0 |6 a4 Y8 L% j travel to pickaisle.con(A_i)2 y0 J- a& P0 w
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
1 b6 N4 d0 A/ U: w3 K3 L% Z5 I else wait for 10 sec8 ?; D5 `' t1 k4 L3 m; T
if A_i=A_leave then send to die
5 n9 f+ x# ?. J, k1 d else inc A_i by 1
' ~1 B. \: O9 o d8 u4 W end5 ^, U$ n* S1 U" v/ e
end4 f2 w' @2 t7 f7 c# ?7 L
. ?! i7 i# q0 R: A+ F) q) ^& }
begin P_pick3 arriving' e3 r. X3 Z: n6 D9 ^
set A_i to 218 W5 w1 G1 @9 X( R/ M
move into Q_induct3
; Z8 l( Z$ c0 X1 r( w8 |/ R) g1 ~ move into pickaisle.induct3
# s+ o3 [7 [9 g while A_i<=30 do begin
- t7 @1 a$ c' m/ n v travel to pickaisle.con(A_i)
( Y1 g& N5 x3 E$ t- g. E; o3 e if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec; e1 H9 a+ p/ ?2 S) J( J; M
else wait for 10 sec9 T' r! \" I- l# a! u' \
if A_i=A_leave then send to die/ Y' ?" v$ ~% T" U8 r
else inc A_i by 1 e( b; R1 z* V6 V3 Y7 t$ x
end
& t$ [0 D3 K7 d+ A% \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,其它按你的 ...
|