|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
1 R& N3 ]! L" t; T9 o
+ _: I: u; B% J& d S0 o) ?, \我的问题是,在每个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中的数值,不知道会不会有什么不妥。
) J5 _) [$ W' v' Z' i: k/ A/ a4 \. e: X+ n
begin P_read arriving
* g5 R& U" S; o) R( M4 t( g while 1=1 do begin
0 x# R/ k4 O+ }7 {6 |% U/ J$ ~( k read A_tote from "data.txt" with delimiter "\n"/ q) {, }. z8 r0 r+ p& A) e
read A_time from "data.txt" with delimiter "\n"; i* ]& D! ?0 ~! C5 }. t3 M
read A_leave from "data.txt" with delimiter "\n"- \% q, O# \: Q' S* ?
read A_picks from "data.txt" with delimiter "\n"
* Y% J V, n5 ?( s8 { set load type to A_tote2 W& w+ p+ `' x, ?. P
if A_tote="tote 1" then set A_induct to 1
2 v' g9 L% T4 k; P else if A_tote="tote 2" then set A_induct to 2
2 p H+ b- W9 u. J3 k: }% F% Q else set A_induct to 3 1 Z3 M, n1 O( ~6 J( q( K: v
set A_i to 0
* M) e/ l" _" y clone 1 load to P_induction
2 C. w! x# J2 U3 d. z wait for A_time sec6 y) h, K6 B# b/ V3 N
end" H0 V2 f- o# n8 V9 k
end
# ?8 B; H- }$ Y4 E" b5 g
/ ^3 V0 Y! i: wbegin P_induction arriving
9 S, ?3 A: C: W: u6 d# u5 n4 i if A_induct=1 then clone 1 load to P_pick11 \- T+ y/ Q' z: D5 h) f2 i) U* W
else if A_induct=2 then clone 1 load to P_pick26 k0 W* U" o* E0 x( |6 N
else clone 1 load to P_pick36 R$ J3 X4 [# f; a5 O, [9 J
end9 P) U; l0 C7 {, |6 N* P
, e, r# p5 ?6 o H7 P) D. y) b
begin P_pick1 arriving
- _$ ~% J [7 W* w set A_i to 1
$ x. |5 h* @0 C move into Q_induct1
9 O! p5 l6 Z$ }& R move into pickaisle.induct1
! I4 S3 p( X& T+ H! e while A_i<=30 do begin
) L/ @8 B$ M: r2 f$ ?& ~, F travel to pickaisle.con(A_i)
4 G$ |+ _9 O' e- p! t$ y3 n4 |4 x if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec5 y1 @" ]% {1 q8 w1 H* A7 L
else wait for 10 sec
0 j! \& y% x* R2 h* G if A_i=A_leave then send to die+ v4 n3 [' [3 Y
else inc A_i by 1
% V+ `* H4 ]- u- C5 E. Q, _ end- h6 {1 V2 j3 H# y& t3 C/ C
end
h& k# z; T4 `: U
1 j2 C5 n+ d. r3 Cbegin P_pick2 arriving" ^: j; ?& v$ e/ ]# b. l7 Y
set A_i to 11
+ o4 U2 r' X! o. U9 ~0 d; ? move into Q_induct2% {% j! T# T0 c
move into pickaisle.induct2
4 c' P: A6 m: z: v while A_i<=30 do begin$ g% ]/ j m4 d
travel to pickaisle.con(A_i)2 ^# x0 s7 P0 j7 d/ q
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
: ~, C$ l. W- ?: C- _ else wait for 10 sec
9 @' u# x, u% O" E4 o if A_i=A_leave then send to die4 g: z7 N0 T% M5 s
else inc A_i by 1; p5 B/ H, ]. w7 W6 H1 C7 k3 |8 e
end
1 A+ R5 |/ s- W7 nend) v: t8 p' o# c5 r
, G w7 s3 x2 f2 O3 L* t- qbegin P_pick3 arriving
6 L+ p, p0 t6 R. B set A_i to 21& N0 {+ }7 ]" X% N/ ?# |4 E5 H
move into Q_induct3, v0 I2 Z' E$ ^* p
move into pickaisle.induct3" `. d! I8 P2 }: n
while A_i<=30 do begin2 q6 ~. S7 k% _, Q3 C. D. ^
travel to pickaisle.con(A_i)
6 ?; {% G, x: m) r, [ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
- j4 O" L! b- Y$ B else wait for 10 sec! M3 i/ M) N T% ^" W! t
if A_i=A_leave then send to die5 B) \# {+ w, \. G* Q
else inc A_i by 16 n2 B& T" H, F% }0 v% `* k K
end7 h3 C9 r( j/ |2 I# o$ V" b
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,其它按你的 ...
|