|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
5 X# Q' o S6 L, B7 T! w0 {8 ?- u2 w, \! ?# \/ `2 m: k
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
% L; H& `3 J' o0 g- Q, h" i: F1 \& j6 T' i C5 s6 ]
begin P_read arriving0 E. c5 ]9 L6 N
while 1=1 do begin
( v) z" p Z/ ?9 J read A_tote from "data.txt" with delimiter "\n"8 t% ~+ r: u5 N6 ` G% p4 M
read A_time from "data.txt" with delimiter "\n"5 h6 I7 q* k* m# s
read A_leave from "data.txt" with delimiter "\n"2 w k6 H$ n9 D2 n4 a; B1 i* [% d3 g8 ^ f
read A_picks from "data.txt" with delimiter "\n"
X2 m" @$ H* I( R set load type to A_tote
4 J! O m# [' E1 t if A_tote="tote 1" then set A_induct to 12 w4 A3 C* x& P7 S# f& C
else if A_tote="tote 2" then set A_induct to 25 |7 d% h. V! b4 e8 D* X
else set A_induct to 3
9 p% G# w& S1 Z% A2 G set A_i to 0 r% D2 N7 j( ^: z4 N7 z- C1 j
clone 1 load to P_induction
" i" f& ~; s- Y; {- I5 l2 P wait for A_time sec
+ H* X x2 W7 b" I8 v* p9 i: C end. ~0 m( S3 `6 s0 U! X( o# ?; N
end; k) T4 ]! m+ ^: O# ?
1 K3 r u/ T9 [ S I! O
begin P_induction arriving
^; ~; ]* D7 |$ j. Y* s' K if A_induct=1 then clone 1 load to P_pick1
9 E: r. K3 V; } i1 I4 {8 I else if A_induct=2 then clone 1 load to P_pick2
- Q, v( |$ E! R! N else clone 1 load to P_pick3
( v/ Z5 d/ J) N5 ]7 c" Z4 C. ~" Pend, ]" P+ U+ @/ u6 K0 e( G3 @! a
: p3 A2 @) e I6 u/ T3 _, Obegin P_pick1 arriving
* v0 I' a- v9 \; _, y' z1 { set A_i to 1% o; _0 m8 J5 ~1 n
move into Q_induct1
9 B1 d: m% G3 z2 b1 j* t move into pickaisle.induct1
, z( J% Y# a- ~: \' y' G, ] while A_i<=30 do begin
0 y$ Y4 O& n% B' T travel to pickaisle.con(A_i)
6 n r/ I1 |7 J& w if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec& d, d3 U) U9 K3 r. C4 e
else wait for 10 sec! o9 o W: L7 z# q" [$ P
if A_i=A_leave then send to die
/ L! H n/ Y7 n! @ else inc A_i by 1' h6 K2 Z' K- x6 U6 o
end H0 U9 A6 `& z5 j( `* I
end2 y5 r6 K! x4 f2 p5 i0 Q
9 G, T" \% k8 U* P. ybegin P_pick2 arriving% F9 f! R- x, S4 _& k; W# i- F
set A_i to 11
) O- l0 ?! F& l: v move into Q_induct2
5 i$ {7 Q9 ~% h- z) ~) j) _+ G" x move into pickaisle.induct2
( ^* M3 A" ]) K9 ~ ?" w# N- ` while A_i<=30 do begin& q* ]- |* C& ~9 d. Q
travel to pickaisle.con(A_i)
* s) q( N; Q: x+ J if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
S2 g! q8 z# L/ `5 V1 E else wait for 10 sec/ m* c: r* A8 l: e
if A_i=A_leave then send to die+ B) y2 V2 ]3 a) ~% ^$ W# ?% M
else inc A_i by 1
- I2 {5 u0 ]- ^, N2 X end0 m& S- I" g" w/ |) k. L
end. u5 \% E* a. G, M1 a# ~$ F t
/ O5 c2 }5 D6 |( e0 S9 fbegin P_pick3 arriving
1 @( @0 v6 S8 H5 n$ o$ U set A_i to 21
+ q$ j& X0 B* d7 {/ r! n move into Q_induct3& i& Q: |0 N. c$ T
move into pickaisle.induct3; r t/ V# `7 q' e( q$ S2 R- t( H
while A_i<=30 do begin
) A3 m* a: b3 x# T$ {, M# V& c travel to pickaisle.con(A_i)
! t" O* J# g1 ~1 ^- s if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
3 A# K. o( u8 |( l7 y* Z else wait for 10 sec/ `9 [: q! m0 t. e/ H9 V
if A_i=A_leave then send to die
% w2 V ~7 P7 D8 O else inc A_i by 11 u2 l7 C; f. B& I! o9 C
end0 [# O( b6 ]0 c* p. x0 K% u: _7 t
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,其它按你的 ...
|