|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
" v, c8 c. O$ T( e5 n% {* f( f
5 H% n& E8 m# P$ L我的问题是,在每个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中的数值,不知道会不会有什么不妥。
% Y- @: z* o6 `5 i9 H* G- S* a. ]: y% u6 S( k. @" w$ \1 r
begin P_read arriving, z$ Q5 [$ Z6 G2 l3 ~9 H1 }
while 1=1 do begin
8 ^$ h" h+ ^3 K2 k7 N read A_tote from "data.txt" with delimiter "\n"
0 E, Q( I4 E* o4 | read A_time from "data.txt" with delimiter "\n"7 i9 E7 @" v0 M3 ]1 Z" b0 L9 c
read A_leave from "data.txt" with delimiter "\n"; _( j! d2 ~# |- S
read A_picks from "data.txt" with delimiter "\n"6 t2 U5 U5 l4 n: J4 W+ o2 E- ~
set load type to A_tote Y) K! l; O; x! H; {& |$ @
if A_tote="tote 1" then set A_induct to 1' d; x& H6 v6 ^/ L* w
else if A_tote="tote 2" then set A_induct to 2
, x" l, c3 }3 M% G" s else set A_induct to 3 1 l8 ]# w( P( v4 S+ j
set A_i to 0
* W" E8 |! t: R! ]; C5 X2 ~' o* m clone 1 load to P_induction, _4 K) o) w' ?
wait for A_time sec
- c; \/ A4 u J. H; u* `1 y6 X+ c end0 o- I& z6 `3 [6 ?3 [
end) c% A" t% ?- z& _) Q( m
, o* p/ ?9 y# c3 `% h' t+ ibegin P_induction arriving
4 o6 I- [; M+ B) I0 ` if A_induct=1 then clone 1 load to P_pick1
0 ]6 r* h) t; V% B- p3 x, L else if A_induct=2 then clone 1 load to P_pick2
. V. X8 H1 P( \* m: o6 W! S7 m else clone 1 load to P_pick31 ^' B1 P- g6 b% H
end6 ]7 M1 f; P8 p$ b
) F6 B5 D$ K$ @2 }3 ?
begin P_pick1 arriving
6 h* L6 W+ V8 c l5 i7 B7 { set A_i to 12 N# W! Q: d) [" X
move into Q_induct1) }/ N* X' c2 Q8 K; i4 n
move into pickaisle.induct1% W$ h$ i% b/ I% M+ }) d
while A_i<=30 do begin
' E0 s5 y1 Q4 S! m5 e t! o travel to pickaisle.con(A_i)
5 O$ D# l& K: s# ? if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
9 V0 c k: S4 L% Q) a& ]% Z else wait for 10 sec+ l7 y' M5 L k0 F$ ~4 @% u
if A_i=A_leave then send to die
: p* Z6 W6 S+ {! S& w else inc A_i by 1
' h+ J0 @9 u3 Z+ P! W9 X! W$ w end/ a# P6 N% ^+ R. F2 o' x
end
$ q0 {8 s( V5 d2 E0 J" H. a. @, Z$ N& v. F/ k. p! w3 O- i: f# p
begin P_pick2 arriving: y0 Y1 z, }6 T! ^; n
set A_i to 11, A+ z: r0 J, }( s
move into Q_induct2
) Q% z5 e& J' n0 M move into pickaisle.induct2
, t+ N- H# j0 y% x% } while A_i<=30 do begin E: n9 F. Q+ \) d( ^
travel to pickaisle.con(A_i)
0 C2 ]: l0 E7 \ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
* V) h4 ?% ]0 p- g else wait for 10 sec4 e/ [% a: u9 p* B; Q% p, ]
if A_i=A_leave then send to die
' x/ e$ r$ T0 ]- p- ^2 X, ` else inc A_i by 1
4 ~& A+ s; Q8 T: y X: @ end9 b+ |0 U: t" O# F
end
8 G, \7 [5 {4 J8 h7 n- w% H, t( o4 ~* M" h& j4 n. R/ ]
begin P_pick3 arriving& ` o+ N% ~( u( y( H# d, {
set A_i to 21
+ |; I! O" ^& h: v. {- u# m; ~/ p move into Q_induct3$ V2 D" y: f. w& K' X* M
move into pickaisle.induct3
' m G4 C! C' i8 Y. e0 M+ p while A_i<=30 do begin8 l" e& I. H' u0 f. q/ _
travel to pickaisle.con(A_i)2 R0 H( S* G% C. N' c( g- ^1 Y
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
' A# m/ ]9 \( v8 h! p V else wait for 10 sec4 F" m2 T, H+ N- {+ u" s
if A_i=A_leave then send to die {# Q/ l2 s/ e
else inc A_i by 1$ r+ J3 w" o; v/ M) e
end% C1 f5 Z2 j- [+ K- Q
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,其它按你的 ...
|