|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
' v- D# v- f; Z: N/ ]. p1 f: G* q4 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中的数值,不知道会不会有什么不妥。
, V/ P) t5 R! e3 j( \% q; z; j5 e3 D1 S. y
begin P_read arriving) o/ ?7 i6 n4 {2 A7 ~! F
while 1=1 do begin6 |5 X( K* F6 q' S+ R9 v
read A_tote from "data.txt" with delimiter "\n"
& `* {. a1 ]% y6 p4 y9 v( a read A_time from "data.txt" with delimiter "\n"" y r2 _5 j+ r. s, _5 C( G
read A_leave from "data.txt" with delimiter "\n"
: `7 d% e; l2 _# \0 p read A_picks from "data.txt" with delimiter "\n"
' P! ]: G4 i8 [5 b3 w, a! B- u set load type to A_tote+ w! _" ]6 G+ }
if A_tote="tote 1" then set A_induct to 1
5 |" F* t# H0 N: b& x4 Z" u: V else if A_tote="tote 2" then set A_induct to 2
( e# C3 u, v z+ D" S. h$ F4 | w else set A_induct to 3 : ?: u- X9 X5 I
set A_i to 0; H+ M3 l6 q4 C& u6 Q
clone 1 load to P_induction
2 a6 I- H$ A# Y2 D+ [ wait for A_time sec
2 \" i. U/ `9 | end
9 ]8 Z& `3 t) J i+ q' T" G% iend
/ K g9 {5 J& h+ s4 q- |% q. n; C8 G9 Y* k' z' F1 c
begin P_induction arriving
% j5 F: b) O, b1 p! F if A_induct=1 then clone 1 load to P_pick1: o4 {; [+ b" ?, d( E1 u. k% V4 g- n
else if A_induct=2 then clone 1 load to P_pick2" \4 @/ r/ e2 _( ^! V
else clone 1 load to P_pick3* v" M; ]# k$ g0 ` {
end
7 r/ ]& k/ C* ~# f/ V% j B( ?9 R& T" b& v, o
begin P_pick1 arriving7 d. ?) e# v5 ^! M
set A_i to 1
7 G# E+ M% U" |. P* A9 @$ r move into Q_induct18 \% U. E4 D2 w& Z7 z) ]$ Z
move into pickaisle.induct1. w# _* x( L' L- u5 L" K8 X( v7 h
while A_i<=30 do begin. T: T. ~9 K* z* n- v2 S# a! G% k
travel to pickaisle.con(A_i)
& L# B8 R7 |! }( U7 D6 G$ P if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec! K* v% c; p2 k' ?' c
else wait for 10 sec0 C; P4 y& X! E, r) v; Y- M- ?2 W
if A_i=A_leave then send to die( G i4 b% Q; \ h3 |1 `
else inc A_i by 1" j# w5 Q( l# v" k. w3 m4 Y
end
7 e. y( ?0 k) e$ J- z3 uend
" g9 q' Y5 c, U6 E! y2 b
u; l/ n+ ]7 d9 O4 d7 A) Tbegin P_pick2 arriving
- ]6 o% v: _; i M" @ set A_i to 11
# q3 J: u/ V+ O! `& e move into Q_induct2' i7 j4 s% w& M- g5 G) g, I4 U2 b# g
move into pickaisle.induct2$ y0 T7 e( W* @' F( N: [
while A_i<=30 do begin
! r1 x8 a; Z- t5 x) N" I3 F% t5 N travel to pickaisle.con(A_i)& k: m8 R0 i2 a# C" h- k
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
. M ` p9 t: s6 ]1 |9 m9 W else wait for 10 sec
& a4 O1 B5 S9 v# y5 Z if A_i=A_leave then send to die
6 \1 \$ ?4 T3 Z else inc A_i by 1
3 F- U1 t! C* @" s' b9 S end r' _- P# K5 R" E1 G/ C
end7 _; W* D+ r3 M* q8 Y
B0 Y8 v5 s* z4 ~* K1 D8 [begin P_pick3 arriving
8 S4 J3 e2 d7 B# V% \: r( D set A_i to 21
j8 u: M+ h0 s move into Q_induct3
5 W( W+ Z4 c4 C7 o, U move into pickaisle.induct3
* o. Z! _2 O k! Y while A_i<=30 do begin8 _7 k1 r @6 f3 t
travel to pickaisle.con(A_i)6 i* R" A& S; t+ t+ W V
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec6 b' p7 j* Y! \# z6 q/ v. h
else wait for 10 sec% i b2 N5 l( e( Z4 W
if A_i=A_leave then send to die0 f5 w. Z/ i8 v, S, Y
else inc A_i by 1' m# ^2 j1 K* H# q1 G
end
9 q0 E! i$ ~% ^% \8 ]. ?$ [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,其它按你的 ...
|