|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢( P4 C# N% P/ N! R' X. d
5 h" v6 y6 c8 a6 z7 b我的问题是,在每个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中的数值,不知道会不会有什么不妥。
y: p1 h' @! {3 H. o, x& E$ D1 E8 p8 q h8 [4 D
begin P_read arriving
F: [4 ?4 u1 q3 o( M+ n# u$ B while 1=1 do begin; N, P- m8 w5 g7 W$ l1 N6 {
read A_tote from "data.txt" with delimiter "\n"
. m( m6 |7 n8 z5 `4 k7 Q: y' i read A_time from "data.txt" with delimiter "\n"
. S2 S; T; H+ g$ a# o read A_leave from "data.txt" with delimiter "\n"
3 s7 x$ k. Y2 L) a' K D; E read A_picks from "data.txt" with delimiter "\n"
+ N3 N: M5 L& _; p t0 a4 F set load type to A_tote
$ U- L4 X& K3 T ?6 j, d if A_tote="tote 1" then set A_induct to 1$ R5 h4 T/ T: z$ f
else if A_tote="tote 2" then set A_induct to 2
' E) ?# P! z! m. n& p, u3 o else set A_induct to 3
5 H1 I1 q9 Y" v- d5 H1 p1 Z set A_i to 06 G6 ]4 o3 t, q6 k) V j8 r" T& Y
clone 1 load to P_induction
" b( ^1 V0 B% O; d wait for A_time sec! V2 n( o+ ~# R C9 |
end7 _( {6 R9 B4 a3 m c( P' A
end$ }) p' I0 E: D
+ ^, e; h) p4 o, K
begin P_induction arriving3 V( h! A# ^: s; W7 R s* R( N
if A_induct=1 then clone 1 load to P_pick1& L2 F/ b1 v% |
else if A_induct=2 then clone 1 load to P_pick2
- h5 f. O3 f0 M) Q7 G else clone 1 load to P_pick3
1 w! E; ^- |) _. Z* v+ hend8 b& A% \! `7 ~2 b# \
) l, H* s3 [, Q0 M/ m) T2 R, e z
begin P_pick1 arriving/ x' s5 m6 \3 O+ E
set A_i to 1
1 z; y1 D" q& u move into Q_induct11 q* o0 b% z; I5 @
move into pickaisle.induct1
. N3 j' `7 z; c$ k1 c while A_i<=30 do begin
, E3 j7 Q3 L2 k" n! ?! |7 b travel to pickaisle.con(A_i)% M9 d* a8 z: u, E- o
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
7 s+ F) B7 M( r: R+ `) W else wait for 10 sec
. l) K" p1 }* n& W1 e1 \ if A_i=A_leave then send to die' q; i: F8 B5 I/ X
else inc A_i by 1
& p9 k0 X, G9 F# w8 R( ] end
: V t2 L' D4 \. U0 Send
- O- j8 ?& P, N1 D# c! [
* K% x; B, E+ v! rbegin P_pick2 arriving
+ ?6 G0 s" }/ k' A) v set A_i to 11
; n, Y0 \# n% a, Z7 o) F move into Q_induct2
5 q- G( b% z9 U l+ G$ ] move into pickaisle.induct2# c) m4 _6 @% r7 G! k7 w
while A_i<=30 do begin3 j/ ]) b5 v; m: y4 l6 l+ y
travel to pickaisle.con(A_i)
0 ]! p% Y A6 _6 a if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
8 T+ m2 V( ~1 L, h# |$ N else wait for 10 sec
- b* w6 O3 O, u( k. f7 p2 v1 D if A_i=A_leave then send to die
4 k5 k( u1 J8 }+ i7 G7 h2 L5 p else inc A_i by 1
, @1 g) x0 C9 E7 k1 [. i end
0 w6 x5 x! M6 G% Lend; R! m- u5 C7 [4 V
6 z8 W1 s$ {& O! d# }2 I: W) b2 ybegin P_pick3 arriving$ l3 V2 n" T$ m0 K3 e
set A_i to 215 J7 K5 \1 d* Q7 B+ S( n. T# W, ?
move into Q_induct3/ d; ?- B/ |7 F2 H! ], X* G
move into pickaisle.induct3
6 a, y2 A+ u- q while A_i<=30 do begin6 g( f. i6 y6 U: _& r" L4 X
travel to pickaisle.con(A_i)( D) R, m- }' \, K
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
5 I m8 S+ p+ z8 |7 b2 h else wait for 10 sec
1 j4 h' L2 k' e* | if A_i=A_leave then send to die7 g; R, z9 Y) E5 D' ]- E+ j
else inc A_i by 1
4 h/ m/ r9 A7 Z u+ |0 Y4 @- Y% ~ end
6 s$ ^7 ?- N) z% g6 U v$ Iend |
最佳答案
查看完整内容
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,其它按你的 ...
|