|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
$ D+ F3 ?( _+ x4 P, h( ]7 G
: V. h% o* [- {/ f+ I6 D/ o2 }; `- o我的问题是,在每个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中的数值,不知道会不会有什么不妥。: q. s, D9 y9 t" g
4 K- Q9 m! `5 q4 P
begin P_read arriving
" p" J7 M; R; U. j2 i while 1=1 do begin
* `* [- h9 l1 z% K9 o read A_tote from "data.txt" with delimiter "\n"
0 R( w) z5 m1 p; U W read A_time from "data.txt" with delimiter "\n"; r( V) [! ]: ^- _8 L m. |8 f) @* J
read A_leave from "data.txt" with delimiter "\n"+ n l0 r3 ]0 `6 y
read A_picks from "data.txt" with delimiter "\n"
( Q6 q6 `0 }" [6 ~ set load type to A_tote
9 e ~) t4 y8 m; `9 @( f/ m- u if A_tote="tote 1" then set A_induct to 1 O3 g0 @) @) D) z0 n* m
else if A_tote="tote 2" then set A_induct to 27 H& X3 G6 h( E5 D; S
else set A_induct to 3 6 S8 F0 S9 f, |3 o H
set A_i to 06 j5 l6 ]2 }, o) Z5 N8 g# e
clone 1 load to P_induction! K. V5 `% {, V
wait for A_time sec
9 n! D9 f" |( i* E' n9 U5 W9 s end! |5 b6 ? M/ [5 [/ J( Y
end
8 d. F- ^; a9 v
3 q X0 ]) [' n* s$ ybegin P_induction arriving8 R" \. | T/ c# D" u* i5 H! P
if A_induct=1 then clone 1 load to P_pick16 n9 v# a5 ]" T& u+ A) ~& i7 W! Y
else if A_induct=2 then clone 1 load to P_pick2
/ v, w- L o& t& s* m else clone 1 load to P_pick37 ]2 \4 f5 D0 T8 N9 T
end8 M5 L; A& o7 ?: t* Z; ]
/ Z5 T' S) @! C8 ibegin P_pick1 arriving! S( H5 f H4 w% y
set A_i to 1
6 w/ L& Z7 T7 d+ [2 v move into Q_induct1
' G o f) f3 z( N; i% A move into pickaisle.induct15 J- F0 i) X, J! q9 y
while A_i<=30 do begin; j" z# m/ _+ ^ \5 E
travel to pickaisle.con(A_i)
1 }0 z ~ L5 j# H1 o$ ? if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
8 B- w% A% q# q9 F6 k else wait for 10 sec
) C* L0 i5 j0 g% y1 Q8 c! e, B if A_i=A_leave then send to die
4 f5 f0 k: F& ^2 y0 b5 w, d* L else inc A_i by 1
6 X/ y- @& u6 Y% { end
# b4 L4 G# M9 b3 Y+ I' `" nend
1 x* u M! u3 G; [1 K% e Z' ?- L1 L! l+ u
begin P_pick2 arriving) q1 b, V5 P9 z5 [" @" z8 T
set A_i to 116 _/ c3 p1 J$ z
move into Q_induct2
3 v7 X" |4 O" L# B1 l8 _ move into pickaisle.induct2
; k& e5 s/ e0 A! R+ p while A_i<=30 do begin9 _) ~; n1 D& B% L2 e
travel to pickaisle.con(A_i)5 l% g) T7 r+ Q' o" f& H& a
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec& Z! c: A' b/ C0 O+ d" V
else wait for 10 sec% d1 Y3 c0 ? @' `6 Y
if A_i=A_leave then send to die
# U6 M9 }7 d& a& c else inc A_i by 1
$ t y/ o( B! m2 C end
6 v7 G$ O) r) eend
/ B f3 ]0 Q* @: [! ~+ H8 H' k# h0 F
8 C9 I; j% V' Gbegin P_pick3 arriving" B2 j7 M. b$ S) A, ?" [
set A_i to 21
9 N( p2 x- G. `$ u9 x8 Q$ V move into Q_induct3
& | j! _ F5 R1 u4 N5 _7 N( o6 n move into pickaisle.induct3
7 l3 [5 C. i# g6 B7 K while A_i<=30 do begin
/ C2 m9 J7 w t8 u$ A travel to pickaisle.con(A_i)
4 J" Q% u( Y+ @ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
R5 @3 N* ]' l& v else wait for 10 sec
6 _9 x5 F. G/ K0 O( y8 F if A_i=A_leave then send to die0 r. i. a$ D. Q6 C4 ^
else inc A_i by 1
% V( A9 Y& W$ [; { end, I$ T. I8 ?& T. y
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,其它按你的 ...
|