|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
* Z$ j( O4 a& o) ~* [* U* \% N( n- d; z, f7 l
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
4 \* R9 z& ?- t& t- C% B* D* m# ?
. Q$ x, b8 M$ n7 m7 x3 tbegin P_read arriving
; i* s6 D' y% b. \/ o while 1=1 do begin
9 L3 D* L' z4 K6 g read A_tote from "data.txt" with delimiter "\n"( S. o9 _' p9 H e2 ?* K, W& E
read A_time from "data.txt" with delimiter "\n"" c. o6 l- h+ s8 x/ c; j
read A_leave from "data.txt" with delimiter "\n"% J5 g+ y6 L' b7 ]1 L
read A_picks from "data.txt" with delimiter "\n"
7 J) w) M W m0 |1 D0 z set load type to A_tote | i- G, Z6 z- m c6 z
if A_tote="tote 1" then set A_induct to 1
5 I) K: I" h4 Q- S( N1 z7 W else if A_tote="tote 2" then set A_induct to 2
1 z' z/ H$ \: L! k; C, | else set A_induct to 3
( f6 {* `: Y/ s, {& _ set A_i to 0( g! n% d, W0 r* f/ g4 w
clone 1 load to P_induction
0 P! i. X; T7 r2 p) m+ o wait for A_time sec; ~# a' j8 @4 j; i' }" e. A
end
% K. p) W/ @, \6 d8 ?3 x6 hend
, c& R0 y I1 s+ Z# u* s; w- {9 S( @
9 c3 ^4 R# m* v$ n7 bbegin P_induction arriving
, D2 }, G2 C& A1 A if A_induct=1 then clone 1 load to P_pick1
2 i% I( ]9 t( g6 C! ~( A else if A_induct=2 then clone 1 load to P_pick2
) C6 f R/ F, I" |( U4 N4 W. J else clone 1 load to P_pick37 x- y8 w. R* Y' P- {/ W& [: h7 ^
end }& v$ z: @0 Q' e1 N" u: g7 v# a4 T
9 x' `! q7 n0 X F' y* o, obegin P_pick1 arriving2 L. }) O6 h" {, D( {% z- M
set A_i to 1
; o0 \2 A% F( ?# g- ?) j move into Q_induct1
! e% E& e4 W6 ?/ d. U move into pickaisle.induct1' g% v" z1 R1 Z- j
while A_i<=30 do begin+ {# u- g9 Z% T1 u4 e* B
travel to pickaisle.con(A_i)4 l6 [8 d* M4 w. w' A( w) ~6 B
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec* V+ [5 |, V# m, l
else wait for 10 sec$ T. N* z! I9 u0 h! F
if A_i=A_leave then send to die" y! L/ m5 a6 Y$ }. i+ w' n" a
else inc A_i by 1
7 w0 K& D" F3 @% J$ J# a end
" \" j8 H2 S5 L+ |5 j0 send
6 s5 I3 ]+ }2 j+ n% N
, @; g9 ?# j1 a# M$ ^begin P_pick2 arriving
& A$ s4 n# h# J1 N) z set A_i to 11% W G9 t9 X' A- K
move into Q_induct22 ~9 U. O$ |+ u, J
move into pickaisle.induct2) w' k. Y9 B2 O
while A_i<=30 do begin1 H4 Z9 M# U0 z5 \! @9 F. e
travel to pickaisle.con(A_i)
7 t! g( h9 Z9 i if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec$ l2 I$ W! N/ f/ m2 O
else wait for 10 sec7 M- ^) E0 [9 f7 ?5 ^" C
if A_i=A_leave then send to die9 v" O( j+ Z; x/ Q
else inc A_i by 11 f H( i& u" V5 V* P- d, V
end
& Y: f- ~! m/ r8 I7 X4 ]# W- xend
+ p* O& V T, v9 c( }1 l. `/ y8 ^
8 ]3 H, n. b+ ^+ u1 Qbegin P_pick3 arriving6 L' v6 L1 a: z8 Q& \; p
set A_i to 213 R7 d+ F2 _8 c$ g) N. k5 ]
move into Q_induct3% n: j7 F" x" o# g; p" f
move into pickaisle.induct3
" a# j! o& ~% M7 `: { while A_i<=30 do begin* f& F; j5 e4 R T. f
travel to pickaisle.con(A_i)9 g. n9 J. \& o5 a D& U- `. g
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
% Q1 [! Y3 z+ a, o3 a5 Q' { else wait for 10 sec' @, F' C: Z$ K& {$ V ^
if A_i=A_leave then send to die7 D* \4 @" t2 r; W8 x
else inc A_i by 1+ @( F" l: W* J9 ^6 n: L
end
& P5 {7 K" ~7 L( R" V, c; ]; u4 I u) xend |
最佳答案
查看完整内容
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,其它按你的 ...
|