|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
# D; F6 e9 R0 L9 `( O" M+ K) E0 A8 P4 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中的数值,不知道会不会有什么不妥。; j2 y' u2 f5 @9 I9 ~
* q0 u/ a7 }6 ~begin P_read arriving$ g1 m6 W; q+ q4 O$ V* b0 G( n4 ?
while 1=1 do begin
' J# v6 f+ k: q+ O- ~ read A_tote from "data.txt" with delimiter "\n". f# E1 |+ q0 v; r8 A
read A_time from "data.txt" with delimiter "\n"
8 x, I$ i: ]. H4 F! g# e; d/ Y& ?- j read A_leave from "data.txt" with delimiter "\n") C7 q8 z3 m& _: c0 t
read A_picks from "data.txt" with delimiter "\n"0 T5 f. T8 ?7 G1 ]; W4 F: _; `5 x# P% h
set load type to A_tote; ]# M w! G ~
if A_tote="tote 1" then set A_induct to 1% Y5 n1 A# [9 O9 |1 s* |
else if A_tote="tote 2" then set A_induct to 2
4 _9 P$ R s; m% ?$ S else set A_induct to 3
+ F3 o% k8 Z. S5 K% z8 | [( V set A_i to 0, }( _4 U8 m3 Z
clone 1 load to P_induction
) c/ J* C) B( P e. o: J: Y H wait for A_time sec
: z" H+ V! ? q9 _) u$ j6 E end
: C6 \3 K: S. L& @end. ~1 q5 T! R6 D
/ @& I8 H) v; F1 X8 b
begin P_induction arriving) q2 l, w- A+ R: N
if A_induct=1 then clone 1 load to P_pick1/ J2 \( ~3 n6 u6 X$ s
else if A_induct=2 then clone 1 load to P_pick2
/ C5 c$ j. }* w# T1 ~, l6 q else clone 1 load to P_pick3/ k9 Z6 }' y4 z2 N0 H
end
6 d, R$ L8 ?$ Y0 [: O5 A6 t
1 [3 n1 S2 {* \! B/ ~- ?( m! I5 Qbegin P_pick1 arriving4 p U6 S+ }' h. H' u& F! Q& b
set A_i to 1, d1 n; c+ y! S6 _7 b" Y2 L" u- T
move into Q_induct1
& k v4 p m3 b/ R5 n3 _- s move into pickaisle.induct1
4 t; y: C" S& h' k1 s% y; E7 E while A_i<=30 do begin
) E( M$ `1 t& H' d3 G9 h8 J travel to pickaisle.con(A_i)
- K4 |" |- h5 [2 b if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec4 A( K/ u* B1 s3 R' |- X3 m- q- m3 ?+ g
else wait for 10 sec
* f2 B; S7 t1 |. s# P5 A5 w if A_i=A_leave then send to die
) f6 d( B9 C2 m4 c `& ?2 p# i- ? else inc A_i by 1) H" B: l" D& i
end
2 _9 K" ]8 a) J0 u0 _9 [end
% V9 a7 b0 f, j& a$ w% m. K& K9 e2 k7 v% b1 ^& Y% w" |
begin P_pick2 arriving
3 U3 c" y7 G$ ~ d8 ? set A_i to 11
3 P! f9 `% Z" [. L move into Q_induct2
. M" D* K5 z1 L& U/ y move into pickaisle.induct29 V6 R+ H, v& ], V& _
while A_i<=30 do begin' E; y3 G. Z- W* K
travel to pickaisle.con(A_i)% O9 |+ X! i. x0 m
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
; O+ i7 k+ L, t% R/ x else wait for 10 sec
2 U: ~$ Q$ K2 Z if A_i=A_leave then send to die$ X4 ?( M6 z3 v0 u+ A" P' w, m" i
else inc A_i by 1" a3 D0 X1 m6 ^0 x; e
end
5 G w: o+ C$ k9 h- dend. I5 c+ _( w8 Q" `8 f
- {5 a% X; U* N! }$ m6 T; d
begin P_pick3 arriving' c9 ^0 ~6 @8 O6 f
set A_i to 21& Y y/ i& P* B% D. l4 S
move into Q_induct3
( m8 q' P+ x+ O& M4 l; Y1 O move into pickaisle.induct3
+ ~( _3 I; w2 I' j" I while A_i<=30 do begin7 }$ Z' X+ U+ S$ M7 e+ ^; Q
travel to pickaisle.con(A_i)- H. Q0 |; r2 j$ g" Y+ }
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
+ ?5 Y* U S1 Q6 }1 j else wait for 10 sec4 s- V( O6 ^4 i* S
if A_i=A_leave then send to die
6 j/ \+ S$ a! ]3 d7 h% K1 P7 T else inc A_i by 1% P: ~+ n' Z- k& e8 K1 V2 R
end
# v, X3 @" l1 H0 K4 ]$ `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,其它按你的 ...
|