|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
- x" B) O- f( d+ E# [5 _: F& \8 @, s
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
$ j: a, f# J% w" q
/ B5 p( [( z" U6 }3 {5 i2 obegin P_read arriving
& a! M8 A" x2 Y: f; d5 Q2 f% e3 ~6 W6 B while 1=1 do begin3 o3 M6 X5 ]3 R& C j8 i
read A_tote from "data.txt" with delimiter "\n" a, d/ J4 q2 A1 ?4 ~' k
read A_time from "data.txt" with delimiter "\n"# B4 p2 d; G; j2 O! W7 ?' w
read A_leave from "data.txt" with delimiter "\n"* j+ [4 v$ y+ {; D
read A_picks from "data.txt" with delimiter "\n"2 x, f# ^& n- L) F3 H
set load type to A_tote9 w0 f8 u8 e4 _0 e$ M$ }, ?5 c, S# }
if A_tote="tote 1" then set A_induct to 11 J# r8 Z, M- r3 C" |) K
else if A_tote="tote 2" then set A_induct to 2
. r7 r+ i3 N1 g7 ?1 |( [ else set A_induct to 3
; w. c$ U7 t1 r6 ]- H( k set A_i to 0
, e' N( W( E8 i+ }& F clone 1 load to P_induction
/ q* t6 j8 z% @ m wait for A_time sec! P# ]7 f: | d; E2 x" ?" b; z. v
end4 A9 [- _% K6 H. |5 l5 d& m
end
6 i5 M' X; p w% K+ E. S
5 W8 \; Y7 V" l8 h8 Nbegin P_induction arriving9 F K7 ?; p! k& y* c
if A_induct=1 then clone 1 load to P_pick1
' Y, d( b8 P, [' p else if A_induct=2 then clone 1 load to P_pick2
; Q% C; U9 @" o: H else clone 1 load to P_pick3
$ ^8 n+ x5 h2 g5 Rend" v. M5 l: w" h+ K; j: c( Z' s$ c
0 Q. P3 \) _$ ]2 Cbegin P_pick1 arriving
4 b. B( v! p# M# J3 Z set A_i to 1
; G5 t- r! F0 e% ^0 Z move into Q_induct1
. q1 D" F7 r$ u! g; C move into pickaisle.induct12 E& q4 y8 D* s0 @% \+ O" N& R
while A_i<=30 do begin
( ^& T6 K4 w- k" C travel to pickaisle.con(A_i)
y1 ~2 I6 L& i& V+ \) m$ ^7 g if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec" B! r' s. }0 C. c _4 I
else wait for 10 sec
: l1 B( b2 Z/ a5 ?! M/ _ if A_i=A_leave then send to die
2 u# C; R8 d \* V else inc A_i by 1" h7 Q% z8 x3 B) i1 K4 e6 |+ j! {
end
* b& A& N! n% [; R& o6 cend7 ^# N- s0 W; q4 c- ?: Z1 x
0 Y( m d2 @# U4 @0 H3 ~ [
begin P_pick2 arriving
- p; \: b5 B7 a5 j set A_i to 114 N- `& _7 w0 g2 u! y0 ]5 X
move into Q_induct2( A* V$ z0 I8 I0 r
move into pickaisle.induct29 D8 [& s0 X/ u/ W6 _& U
while A_i<=30 do begin
9 V' v. p, {; p' R6 G% n travel to pickaisle.con(A_i)
9 k: q8 e4 o4 Q4 D: L" l0 E if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec4 k8 e" g" i. ~- p$ j
else wait for 10 sec' x7 o3 I* h* o
if A_i=A_leave then send to die. x4 i; M6 ` [
else inc A_i by 13 |' {9 v7 |, l( r9 L
end8 e/ Z5 Q5 a- U" j" D
end
6 B+ B( B) g8 X
$ d4 {, w, R( t- ebegin P_pick3 arriving7 \- S' r. p7 b: R/ l6 P1 ~) X' L! R
set A_i to 21
0 K9 S4 G0 x8 ?- l8 g( J% e move into Q_induct38 i" Q7 p# C+ i% A# C+ l! D
move into pickaisle.induct3
, F$ e. X+ w d7 G( i. P$ z* x3 }" c while A_i<=30 do begin
; G5 g0 C% F. R1 O0 @7 q3 p travel to pickaisle.con(A_i) Q3 l; {7 Z i( W w x) u
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec3 o& O& I, L+ W. \( r7 B
else wait for 10 sec
4 _0 w1 b% Y" l3 t/ | if A_i=A_leave then send to die
" I z: C( I% g5 K: u else inc A_i by 1
8 n, Y: N/ ?6 A9 c$ T8 z& S end
- K* m J1 }) Yend |
最佳答案
查看完整内容
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,其它按你的 ...
|