|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
) b( D0 A* P _9 P! v/ s
: I: a, c, m5 v5 L5 ]3 g/ m我的问题是,在每个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中的数值,不知道会不会有什么不妥。
3 ?. T4 X* j o* j; q/ E% W. u) A/ \) X% U+ C- j8 L3 G
begin P_read arriving0 D& |& O$ [: b: M
while 1=1 do begin3 w7 N( W8 w9 \. X
read A_tote from "data.txt" with delimiter "\n"
& K5 U! z$ k5 X( G2 z read A_time from "data.txt" with delimiter "\n"
4 I% \) U" U0 ^1 q1 j& } read A_leave from "data.txt" with delimiter "\n"
z' ?) F5 i! ` read A_picks from "data.txt" with delimiter "\n"
, k' ]" K+ [- d0 ?' Q9 x5 X. J set load type to A_tote% u7 N ^5 u2 y
if A_tote="tote 1" then set A_induct to 1 m4 o& w6 S% H4 x) R! I
else if A_tote="tote 2" then set A_induct to 2
2 ^$ A! ^3 G( Q( l7 {2 K else set A_induct to 3
% }4 t0 H3 t. W0 w set A_i to 01 b# r z- d$ g8 S6 d# A/ h
clone 1 load to P_induction
# y6 n/ Z; ?/ e2 W. v' o wait for A_time sec
! j7 C4 k& a$ P" r' ]' L) e end
+ ?! K. E0 X9 D2 J, U' qend7 a8 _% B" H0 e
) ]6 h3 q ?! H* [begin P_induction arriving
$ L' y4 L- }. [4 L/ U0 Q if A_induct=1 then clone 1 load to P_pick1) p/ k9 l$ @5 Z5 ^
else if A_induct=2 then clone 1 load to P_pick2
- y7 X: M J! A( s% x else clone 1 load to P_pick3
2 W, V9 t6 v/ q6 L1 Oend
" S5 `3 H+ u8 M: h- \& ?' f$ G3 t+ z" a# M' I3 J
begin P_pick1 arriving
% f% }* F" A+ B9 k set A_i to 1' B6 t2 O5 D. B, |4 D6 W. V3 `# L
move into Q_induct1
/ ^! n; s. f- o1 n move into pickaisle.induct10 Y& j3 @% y# O$ T( d$ N2 {3 y
while A_i<=30 do begin
" A0 X/ W3 n. n. ]6 ^5 r1 h2 d travel to pickaisle.con(A_i)0 {1 g( |# {" @+ j! Z, X
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
2 o) ?9 c+ w3 d9 {7 V) F else wait for 10 sec
7 Z2 P" e' R8 b8 j, [. B1 C1 O if A_i=A_leave then send to die8 _. U" ~/ l. ~
else inc A_i by 1+ q+ _% k$ n9 _+ c. w! ^
end; v( i' _, F+ [+ A
end
y) N. W9 q3 Y0 _2 i: b: K
/ p/ n& [# H3 W8 t! Cbegin P_pick2 arriving
& U. A3 m) P! m2 S7 j( t9 a& L set A_i to 11# t0 B8 z* Z4 V5 v
move into Q_induct25 B1 @) A4 Z: Y8 P' P& c: g
move into pickaisle.induct2- ]- d! X8 ^5 c0 [1 K0 v7 Q
while A_i<=30 do begin& l# h1 d! q6 ]. e2 n8 r
travel to pickaisle.con(A_i)
& W1 F; t) m# T if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec% E8 m! o+ h- R8 {/ e
else wait for 10 sec
' [+ n; M2 w/ R if A_i=A_leave then send to die R1 d X' {; r+ [. G$ Y* o6 s
else inc A_i by 1
; J7 [2 S& V) B, l end
4 g7 A+ W* ?( ^$ l0 |end
, O/ Z/ a3 `8 i, W
J' ^$ i* A$ T1 G) h, e" `' {begin P_pick3 arriving
, W( l1 z6 e- n. [, P4 v! ~! M* x set A_i to 21/ }' `$ u$ Y' W* J
move into Q_induct3
/ R/ V8 W$ a- i6 C7 v7 V move into pickaisle.induct3( C$ D, ^, Q! z
while A_i<=30 do begin
5 H }" i+ A8 H3 {# y5 n8 P travel to pickaisle.con(A_i)
6 m& x+ M+ n L, |+ O7 u T if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
$ d, v, h9 f: v- f- y else wait for 10 sec
% a. X9 h! t2 I' k/ g" n if A_i=A_leave then send to die
: L& ?; F& |/ u1 J$ W( H ? else inc A_i by 17 B) _5 J: v- M* C
end& _4 j; d% |& U& Z% K' U3 I( b c J1 V
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,其它按你的 ...
|