|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
) n* p2 V$ m9 D9 [ m
- { T+ \: {. 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中的数值,不知道会不会有什么不妥。
$ J: d7 u8 o( A' C7 W
3 b. G2 e! Q1 J: `) @ tbegin P_read arriving
3 c* _' r) L& k+ A* Q; I, S while 1=1 do begin
; j3 _& i3 r9 \$ m read A_tote from "data.txt" with delimiter "\n"
% `, J7 O8 [& i0 U' p f* y read A_time from "data.txt" with delimiter "\n"6 q* i; _& h( T: c0 e7 v
read A_leave from "data.txt" with delimiter "\n"" z2 P! X J; p) H2 L' a
read A_picks from "data.txt" with delimiter "\n"% X& }. v7 i& G
set load type to A_tote
6 F0 ~6 J. |0 Q if A_tote="tote 1" then set A_induct to 1# _/ E! e( Z D7 ], [/ }
else if A_tote="tote 2" then set A_induct to 29 p7 K: b4 f4 a( L! D5 r
else set A_induct to 3
0 g3 t& _' D2 n% u/ f E set A_i to 04 W b( s( U1 v5 ^/ x$ e
clone 1 load to P_induction
5 _4 T$ I" q+ ^6 L: H: ? wait for A_time sec
0 h5 s3 a; n: t+ l end
/ O% ^* W. \6 _+ ^end
$ K4 O( f4 g# P" f8 `7 j4 [/ O8 a# C: c& q* }: `. B2 i6 q
begin P_induction arriving$ q/ E+ I7 Z" G6 [' c$ J
if A_induct=1 then clone 1 load to P_pick1 S5 N. i) o+ E, k
else if A_induct=2 then clone 1 load to P_pick23 Q- Y! l+ E, x
else clone 1 load to P_pick37 ^+ T* P0 D! E3 e9 N4 @$ A
end
- |- p+ y( {# w/ a! Z1 E: ?& B' j2 X6 N! W' r4 _; p5 W) K
begin P_pick1 arriving
( F7 ?& e' a0 F6 \6 \7 ]& u G set A_i to 1
' P2 ^3 r" k) W7 M; J move into Q_induct1& V/ C% o7 J: z' _( x1 G. a
move into pickaisle.induct15 k' E3 z# D; ], v3 W! d# `; |
while A_i<=30 do begin/ a+ H* h0 C- F' E$ O
travel to pickaisle.con(A_i)
+ ~! p& ~+ O( x1 @& U8 V, J if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
2 L$ X0 \ n. H- a x# K else wait for 10 sec
2 W7 R0 \4 q H7 x r. v if A_i=A_leave then send to die1 Y8 }9 e# S3 \
else inc A_i by 1
$ d! E" G& f' ^& `/ v/ R( p end7 j! l$ Q: f( ^) N$ ~' z
end
; n! I3 }6 P" j2 v$ N4 Z% M9 A& q( P7 x/ M4 s% f; f
begin P_pick2 arriving
- L! f4 O+ D* J4 A) N set A_i to 11
5 t. O7 q* T; Y move into Q_induct20 [( S/ F) x- g' T$ o) |8 y7 w' ^2 k
move into pickaisle.induct2+ P7 T0 _8 [, x2 \
while A_i<=30 do begin$ T8 w: ]" }+ W' R$ ~2 @
travel to pickaisle.con(A_i)
& i3 V' P2 u: X7 b) b if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec' Y* D: K3 M+ }0 }& {: {$ l- t; P& R
else wait for 10 sec
7 N$ W, L/ U! ? Q: ]1 p' B J if A_i=A_leave then send to die5 i, W5 O4 _$ {* C
else inc A_i by 1
; @$ m) G- f. e6 Y; { end
9 P1 z) ~* D" `& U/ g" Uend
$ Z% }" l( O2 s7 n; |$ m+ K4 J7 Q0 x3 h6 A9 Q
begin P_pick3 arriving5 a7 k+ x2 Z, T
set A_i to 21
' o# u- I& M, l" D move into Q_induct3
7 B. w1 N5 P% K7 T move into pickaisle.induct3
- O0 b9 _; L8 z) v, }0 m( ` while A_i<=30 do begin
, |9 r# j+ D1 C; T* Y travel to pickaisle.con(A_i)
% d3 e& O. Q% V! _, p4 l, h0 I4 u if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec+ r3 C/ o+ @) G/ J% g# K
else wait for 10 sec
5 h7 G* [ R7 P. E, G+ L if A_i=A_leave then send to die1 o7 d" }6 e5 Z3 y! O6 o+ G6 p U
else inc A_i by 1
# \! J5 o" e3 E0 |% J end" n( \ Q- ^1 T, ?$ y8 g) y: X
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,其它按你的 ...
|