|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
/ L5 s' X" v+ U* f# L0 r: s& S2 a3 {# u$ N$ i
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
" K# q3 d: J! W- u8 S! i9 [" R" r
9 Y' P3 |* W: Jbegin P_read arriving
( n, H& z2 Y. j- A. x$ C9 J while 1=1 do begin/ B' d$ C9 r! t: ?
read A_tote from "data.txt" with delimiter "\n"& z8 e2 q+ j1 w) N6 O$ @
read A_time from "data.txt" with delimiter "\n"
5 }6 e+ j* a. ]& W read A_leave from "data.txt" with delimiter "\n"
% A/ Q) j# d' G5 Q' U4 U read A_picks from "data.txt" with delimiter "\n"
) K# e) {7 V, f( v8 b* G' z- v set load type to A_tote( V. r' M* n! I- g8 R6 `
if A_tote="tote 1" then set A_induct to 1/ @$ I( q$ M3 M# x8 ~% V! R
else if A_tote="tote 2" then set A_induct to 27 ?; B, h+ s% W; y& u) D2 ^
else set A_induct to 3 * a [/ o# ~* a6 r0 y) m' J6 K8 x; r0 {
set A_i to 02 B( E" D3 U7 l8 c" F& N5 H
clone 1 load to P_induction
0 T- m3 R8 ?( N* Z5 F u ^ wait for A_time sec3 x8 [9 }; l' ?* T; U2 f! h. W9 C
end1 }; M( l( B. ? N
end/ i! ` T5 \' x
$ g0 z+ h! T% D
begin P_induction arriving* L& P) S- v+ \, a1 w
if A_induct=1 then clone 1 load to P_pick1
7 m$ u2 v" c# Z4 S else if A_induct=2 then clone 1 load to P_pick2; y; Q/ A/ ~7 |5 _# b2 X
else clone 1 load to P_pick3) I0 Q0 u5 H- Q3 [6 b& J1 ^
end' ~" b. w3 ]: k% s
* {! W$ e; W; s. R) m, c, w( sbegin P_pick1 arriving
6 g% T: P* u; `2 b$ v V6 E set A_i to 1* u9 L7 p' V$ e3 B1 Y/ Y j( }( A
move into Q_induct10 Q5 F& |' a# B# w
move into pickaisle.induct1) U. I0 v% _. A
while A_i<=30 do begin
1 ]9 S# A h( b% q" q$ [ travel to pickaisle.con(A_i)
5 t, c+ j0 ^" V3 Y/ m$ Z2 n0 v if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
1 X) I' \" c: t) B( n% K else wait for 10 sec8 q7 p+ i' j: v9 g+ F
if A_i=A_leave then send to die I+ M" M: P2 h, u$ F' K) R' Y3 X4 B
else inc A_i by 1& X& {& Y- @6 Q7 c
end4 p6 v1 F# ~. j9 ~; E: k8 n+ ~! n& k
end2 @- Q3 p5 O! d' g% N
! H6 v5 ~2 W% J# Q( h+ R+ lbegin P_pick2 arriving1 j$ b+ x4 g* _; a
set A_i to 11! U% U, j) a6 |
move into Q_induct23 _5 V* A! t4 q# j o: ?
move into pickaisle.induct2
$ s' _& Q# _6 c' U* t; {) Y while A_i<=30 do begin9 i% t8 i) q; I" K
travel to pickaisle.con(A_i)
) I' y3 M- B# S# w4 z if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
) J% P- J, X& q: T2 s/ q else wait for 10 sec& D( z0 x) f& B, p" c) T
if A_i=A_leave then send to die/ i5 v& m+ Y n% r1 p* O! g R
else inc A_i by 12 c5 P5 h; }) g! T0 R
end+ j) a* Y3 r! ?; P6 {
end
" h) O6 v& F. j* @6 ^* y7 r' i' ?- v2 {
begin P_pick3 arriving3 U5 {; Z) z g5 W- C) N# s
set A_i to 21
9 z( {/ M' \' k move into Q_induct3
1 z$ S( u, @6 x9 D. k! c move into pickaisle.induct32 y1 ^. Y. u( i5 \
while A_i<=30 do begin2 u/ W6 z/ s( q& ~& \
travel to pickaisle.con(A_i)
7 `# C8 _8 j* t* i0 S# D if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec/ V% P& \6 e, h# f' _# D1 m- @
else wait for 10 sec
* i, E- j8 x4 W1 m- G- k. o if A_i=A_leave then send to die) M$ x2 c6 k9 i$ T4 o' L
else inc A_i by 1
) ^1 |; H v0 L- T) B5 ^6 L end
( k: `9 F. Q& }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,其它按你的 ...
|