|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢8 `* ?- ^: k# o0 W# w z; z9 [) {5 w
! k/ t8 F# B+ z9 x我的问题是,在每个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/ M4 Y# f# m+ X7 J1 K# v: H. s' Y- ]" h9 ]3 P% W( m3 Q, z
begin P_read arriving
% ~( d9 w3 x; h( R8 N: b4 ], z while 1=1 do begin, u# v' m. U4 I) d9 N
read A_tote from "data.txt" with delimiter "\n") v5 J7 _9 W+ \/ q. ~% C
read A_time from "data.txt" with delimiter "\n"
2 q8 M; \1 O/ F$ p5 i/ j. f read A_leave from "data.txt" with delimiter "\n"
( P) n5 G2 Z D" V/ y( Y read A_picks from "data.txt" with delimiter "\n"& D# g- L2 f3 V1 P+ @
set load type to A_tote6 @$ ]0 P8 V" k) b5 l
if A_tote="tote 1" then set A_induct to 1
- O4 l+ j6 J" b" f4 y4 V: I4 V5 x else if A_tote="tote 2" then set A_induct to 21 y* o2 w: F* [
else set A_induct to 3 2 R' r/ K6 @! q r" u
set A_i to 0, F7 o* L& M' m1 c) Q$ y
clone 1 load to P_induction
7 v6 k: Z7 H# ~* Z wait for A_time sec
+ m R6 ]% F9 B, Z6 ]+ d, K; j+ u end
. _$ D, Q2 k- S2 e2 dend
1 p$ w0 y& ^7 Q1 ?5 y( T9 s3 a
8 a1 m6 H1 d" }) Abegin P_induction arriving0 q ^; J. g# D* U7 X( G
if A_induct=1 then clone 1 load to P_pick1
3 G9 z9 W, ]% O5 Z3 L0 d& c* o else if A_induct=2 then clone 1 load to P_pick2
( Y* m. W5 G R+ s8 Y+ X8 u else clone 1 load to P_pick3
6 \1 Q: E* d; x% S) Yend
7 _8 A1 s, l+ w/ p3 [. G, \$ L$ M: V3 M
begin P_pick1 arriving! e1 t# h' c0 {2 m' F" {( B
set A_i to 1
0 I+ z7 [, ?+ `. }6 e move into Q_induct1
7 J$ J; k! I' y6 @ p# k move into pickaisle.induct1
& U. a! _9 Z5 u' E# @ while A_i<=30 do begin6 G6 X; J0 A& J0 G1 A7 U7 G
travel to pickaisle.con(A_i)
* l& D6 A& ^6 j8 ?2 [0 X$ ^ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
1 w& ?0 ~( \' F+ T, ?: u else wait for 10 sec
$ L, E: i4 [, Y8 Y L( S2 D if A_i=A_leave then send to die
: o$ e: E0 B1 p. O# |) T else inc A_i by 1' m6 g1 o @) w: e% ]! E+ h
end
1 j4 ^, n7 W' p, r5 ^end2 K0 v6 Z) E# j. s: n
: ]& @% j( S& g) F. D8 D
begin P_pick2 arriving
8 n/ V% e: G7 t set A_i to 11' s( i* n7 J; C3 } g* n
move into Q_induct2
/ M% n1 \ s8 [9 X move into pickaisle.induct2$ E, A3 z& `/ ]; z8 [) J. Q
while A_i<=30 do begin
7 }. T! \1 \$ G# t% w5 Y! M1 G2 C travel to pickaisle.con(A_i)
5 N/ i! J' w$ V% D4 f+ T, f9 i if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
?" A+ R+ k9 P! A) o else wait for 10 sec
; d8 {( P! u. L- ^( _ if A_i=A_leave then send to die
1 {/ W3 O7 U$ @: r5 k else inc A_i by 1( X6 x0 O0 _2 a
end
% x- K G) W8 X" h& z0 Kend5 A- u3 k' W+ g8 M
8 K0 N) ^: ~. ~9 k; _: X. E7 _4 Ubegin P_pick3 arriving
& o! H7 t+ y; c, e( B. i7 k1 n" F set A_i to 21; @/ k, t1 h" r: a- v: x8 o" \
move into Q_induct3
( j, A+ A j) z$ |" a0 r; @- V move into pickaisle.induct3
/ d% d5 f @7 @ while A_i<=30 do begin# f8 i' I# i. Q& V4 I9 t7 `- \
travel to pickaisle.con(A_i)
; U* ]5 F2 ?) B$ k$ ^. l$ r$ { if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec( N- L. E+ }- I) m4 H) `# u$ S% z- k
else wait for 10 sec
7 p; a- U" D. B- k. s7 e$ K0 u5 B if A_i=A_leave then send to die1 M+ U+ v3 `" x6 X% Z* y
else inc A_i by 1
1 G: ?7 b: P* j. z! U# {& V end
5 L& n( _/ {& Nend |
最佳答案
查看完整内容
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,其它按你的 ...
|