|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢8 ]8 M: }. H" K- b5 h# D9 P) f
7 b7 W$ I2 P2 r8 Y( Q: A; a我的问题是,在每个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中的数值,不知道会不会有什么不妥。! @1 f& G8 [! n3 ~/ i4 v
# X* ?+ S" Q) W
begin P_read arriving9 p& A3 o: i4 \" h) `# N8 q" `
while 1=1 do begin
3 L: F1 c7 u3 k) ?% ^ read A_tote from "data.txt" with delimiter "\n"
- |" E' x. l+ @% o read A_time from "data.txt" with delimiter "\n"+ ^5 P' n- a( l# P: m, o I
read A_leave from "data.txt" with delimiter "\n"
6 N' _/ }! m3 s0 G read A_picks from "data.txt" with delimiter "\n"
* M% \. p Q4 W' G$ o A" C8 n/ C [ set load type to A_tote: p# Y$ a1 h2 P( S0 w9 O
if A_tote="tote 1" then set A_induct to 1
# B$ u( Q: ?, Z, n6 ?3 S4 M else if A_tote="tote 2" then set A_induct to 2, A2 i+ i2 i* j
else set A_induct to 3 + J5 \+ @3 Q6 U' l; d/ j
set A_i to 0! F2 K+ o* [: V' O1 l' N( [3 m
clone 1 load to P_induction
+ o: U; w o( |# M' y4 [ e5 s wait for A_time sec
6 M' T& Y" u5 A) F% d! L. |) k5 t end
( H J' J: ~; b0 {7 b' bend1 C' k2 [: B* o% ]$ k
w* {) X5 Z3 s& H; n6 v7 Wbegin P_induction arriving& O0 M1 t8 p) l: H- [3 k! W& H" Q
if A_induct=1 then clone 1 load to P_pick1
+ s* L! J1 H, }! `* o) J: ] else if A_induct=2 then clone 1 load to P_pick2
1 p; n/ i/ N6 l/ v \4 n& s" r else clone 1 load to P_pick3
4 L1 G( o* Z( x, B' Mend
8 q9 v+ ~2 w B* K# e
4 s( F5 V2 a4 \; [$ N7 d9 o" z6 nbegin P_pick1 arriving
+ U4 u' Q/ V X/ h3 t8 @ set A_i to 1% E0 l( ?) X$ J& y5 }
move into Q_induct1
, |( D' ^* V1 V move into pickaisle.induct1" X/ _% F/ n) C" z8 J% u! w! X
while A_i<=30 do begin
0 E+ S" O5 T2 F) ~ travel to pickaisle.con(A_i)
+ L8 U4 G& l$ ^+ L F if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec; d. y: w. i4 f9 R$ X6 u2 g
else wait for 10 sec* Q; m3 _& }0 w7 u
if A_i=A_leave then send to die0 ?+ `' G$ }% F2 d
else inc A_i by 1
. S7 I; d0 a: P0 t' o9 E9 z$ G end
- F C/ P& q% K% W. jend4 C0 F7 K* \( v2 U
9 b0 a5 c. J" \" z R% x% f, Pbegin P_pick2 arriving, F' e f' y$ W2 R1 G! \
set A_i to 11
% b' ]8 o. [. B move into Q_induct2
. `$ r3 z+ C( }5 r6 F move into pickaisle.induct2% N* O# u- o* W; r+ m
while A_i<=30 do begin
8 i* e( r+ b2 ]5 C) u/ L4 L% g" \ travel to pickaisle.con(A_i): z: `0 ^5 Q& w: E4 K7 S7 \: ]
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec, [- `, Q3 i! o" g
else wait for 10 sec
1 B+ Y7 b* g x( W if A_i=A_leave then send to die
# x0 @( |; v4 Q( \% {) Q( I else inc A_i by 12 u( Q B) R6 l& {1 j7 O
end2 v. M5 A) O) I0 f
end7 }+ ^" y6 Z$ t4 ^6 @
8 b( D7 G! m1 q; z3 T1 e1 V$ q
begin P_pick3 arriving' S* U0 h- |+ Z7 f
set A_i to 212 s J2 M0 v" x/ Z+ [
move into Q_induct3
1 e+ ^" |; P$ O/ T move into pickaisle.induct3
' `, N+ V" D2 t0 w while A_i<=30 do begin
5 _8 Z' l) ~ u `4 P( R; B travel to pickaisle.con(A_i)
$ E6 ]& P+ h8 H: L8 w# g if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec' k" a8 Z; j- R: m. U. s" m1 O( X
else wait for 10 sec" ^; }, x+ T+ r# l% S5 p7 p" z
if A_i=A_leave then send to die
6 \) i6 [% n! B, X1 }6 L$ R9 x' |% E E else inc A_i by 1
) p8 i$ B( m( l4 h! S end
7 a( H, P4 s8 t! O/ i) ]* j7 qend |
最佳答案
查看完整内容
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,其它按你的 ...
|