|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
1 B) q/ W2 T" y+ I2 ~+ j% k2 s
$ [" C7 r) A& ?; N; 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中的数值,不知道会不会有什么不妥。6 t/ Q1 g* F4 l- q
6 M$ i) B5 E7 M7 a& \- J- Dbegin P_read arriving# h( u1 e8 V2 Q; E# @% z+ _
while 1=1 do begin
: E5 P/ B8 y9 C( s read A_tote from "data.txt" with delimiter "\n"
$ R" L% u! [2 B5 c f: N# `1 C& b read A_time from "data.txt" with delimiter "\n" i( C3 s( C- @. z8 ?# M z
read A_leave from "data.txt" with delimiter "\n"# q- Z+ V' R- R# u3 t+ L
read A_picks from "data.txt" with delimiter "\n"" c. Z' ?6 Q6 p' K
set load type to A_tote8 G/ s5 J! g' a3 W6 |. {2 y2 x
if A_tote="tote 1" then set A_induct to 1* w- T* J/ ]* B' c
else if A_tote="tote 2" then set A_induct to 2
: u0 m6 @7 j/ j: A) s5 _; g0 T else set A_induct to 3
* D% u3 w! ^4 Z- d set A_i to 0( y1 ?+ |. l C% g, I7 s
clone 1 load to P_induction
5 K( }% @3 J w! H' C2 V wait for A_time sec
% `, R% P3 z- B* h$ o! f! d( R) j1 a end
# g; B: E5 `4 g) hend
/ n6 F, ~9 ^% Y
! Y7 o- o9 |( A: jbegin P_induction arriving
7 C: b/ ?7 i" N if A_induct=1 then clone 1 load to P_pick1
) J c" k. N! ?& t else if A_induct=2 then clone 1 load to P_pick2
' h( y/ _* K/ g# S; h7 |$ @ else clone 1 load to P_pick3
: p0 g! K, K8 o/ Z/ ]* j3 p, xend
- }+ ~& U6 ]+ d3 D3 x# s, R/ t* R) n) M3 ?
begin P_pick1 arriving
4 S, W- B$ M p2 I9 f* ~5 S5 [ set A_i to 10 @. k* T$ ? z4 c2 G
move into Q_induct1
2 w: h; ~2 e/ g7 j move into pickaisle.induct17 {# f. g( S3 `! Q1 w/ C
while A_i<=30 do begin
; n! z" M1 e9 S travel to pickaisle.con(A_i)( _4 O: f' n' }$ _
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec5 N; z, X$ v( q
else wait for 10 sec
$ C5 ~/ Q& c- |) X; @ if A_i=A_leave then send to die* i! c5 J/ A0 Q' p
else inc A_i by 1
# T. T# X0 J, ~$ _# E* { end
" r2 _3 `3 w0 k9 r) J T2 q( cend
4 I2 K) ?- Y6 `8 n- e; o0 P; J6 r! }5 E: B
begin P_pick2 arriving
' g! |3 t1 e& ^ set A_i to 116 u& C3 D) ^% g2 ^8 y, |2 G: F
move into Q_induct2
5 I- B D( s6 u" ] move into pickaisle.induct2& g% k) |, X6 {; R
while A_i<=30 do begin) Y& V& A* Z" ]# O; V7 a8 q% a# Y
travel to pickaisle.con(A_i)
/ c m p: M/ R* L# X' a if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
4 r1 b; u, i. q) a W else wait for 10 sec/ ]4 U1 Z3 `1 Y! x0 _9 I L
if A_i=A_leave then send to die1 O$ V& v+ {! m- I6 L/ n
else inc A_i by 10 p5 g5 r- a7 s6 p+ b
end7 T6 `7 R1 a7 |# R1 B( Z
end) s; p: W+ d# n3 r- V, _5 E
' j" x9 D$ d9 D' f7 x/ J
begin P_pick3 arriving
" J& i7 P# X3 F4 T. v set A_i to 21
( A* i* W5 j @' K move into Q_induct3
- d+ x5 p9 R& D' w move into pickaisle.induct34 {7 [( n8 R3 E* j/ m
while A_i<=30 do begin* R# s* r4 i: i2 ^! F5 n
travel to pickaisle.con(A_i)
" q+ Y7 Z5 l% E3 c, V9 K if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
- v [+ [4 N# v9 u else wait for 10 sec
6 ]6 C' b) m" l R- I if A_i=A_leave then send to die
8 u$ X$ h0 h7 `8 x" y else inc A_i by 14 C5 s. R$ K1 H: m7 C# c1 }) f1 ^* c
end
4 u0 {2 J* w, {: {6 B9 G' }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,其它按你的 ...
|