|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢$ v* k( J' ^% ~: h. y
V6 X& \! N1 Q. h2 l7 @, y我的问题是,在每个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中的数值,不知道会不会有什么不妥。9 C2 c H. L& x+ q& N! l% J
# ?( r" A# W' G9 }" v; V k
begin P_read arriving* O# I2 g- z. }+ m
while 1=1 do begin
) o8 V* K- D7 e+ g( h2 }3 d% ~/ \ read A_tote from "data.txt" with delimiter "\n"
+ a3 [+ ], ^) H! n read A_time from "data.txt" with delimiter "\n"- w! G, g7 j4 ^. A( j
read A_leave from "data.txt" with delimiter "\n"+ Z: d' M0 v1 }8 Y8 n
read A_picks from "data.txt" with delimiter "\n"
- X6 {1 C1 c& w/ i set load type to A_tote8 b3 m* c# W& I i
if A_tote="tote 1" then set A_induct to 16 v& e" ~& o, u$ s3 N
else if A_tote="tote 2" then set A_induct to 2
- @$ Z. z M/ }" J- N* o# H% g5 C" E else set A_induct to 3
& N, ^: ~5 e9 d5 \; V set A_i to 0
* v! ^" j2 l4 p" c% _ clone 1 load to P_induction. A+ Z* l1 B& b6 E6 C! ~
wait for A_time sec2 q8 ?" e0 w- z: ^5 b% y
end
$ k$ T7 f, v/ E8 u1 N4 vend) X9 m% z- Q' a* X- M
# w0 F( e9 \7 q2 Z9 X( ~) I$ R: Y" nbegin P_induction arriving7 j3 l& A0 S0 ~
if A_induct=1 then clone 1 load to P_pick1+ y7 O0 k' X% ~: C6 N, v3 \
else if A_induct=2 then clone 1 load to P_pick27 ]9 ]! |5 L- [8 L2 B
else clone 1 load to P_pick3* O$ l7 ^* F8 V4 o+ M z3 a" j
end& L( ~0 Q, @( L
; ]! U8 u+ z% e" B/ L" G- `) dbegin P_pick1 arriving
+ C; q% r" p1 R set A_i to 1
; [+ G# c3 H" w move into Q_induct1- z- g1 i5 x" f1 Y
move into pickaisle.induct16 d2 I) M" ~2 ]+ N
while A_i<=30 do begin! [: {0 C+ ]1 C' w! M) o
travel to pickaisle.con(A_i)
L/ B, H# S% ^) e% D% r if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
( Y, h& u& b# P1 ? else wait for 10 sec% I- L, I$ e3 m; [- d, A! z
if A_i=A_leave then send to die' Q( g2 B$ |1 U
else inc A_i by 1
( | ^& r5 n$ @' A- K# A% K4 C" t" Z end: E' X k+ q: f- w; h/ f
end p7 W, t- v- }) X) [
7 u& K q5 c0 Q- X$ o1 `
begin P_pick2 arriving4 ^1 Z+ ^) q7 q( c6 y& L
set A_i to 11
8 }1 B Q+ I% u: o/ P( A move into Q_induct2
6 E% c7 W& w, T move into pickaisle.induct2
' a5 ?- x4 _5 Y: f9 k0 \ while A_i<=30 do begin+ a7 b7 l2 u+ K1 p* c
travel to pickaisle.con(A_i)
+ [ c& `9 O% a9 s& z2 P9 o/ G8 U if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec# f9 M4 q7 Y, z* ^- ~' `, I+ u
else wait for 10 sec5 V( k2 y3 e* E8 X S
if A_i=A_leave then send to die7 h+ z' d4 c+ u" H5 J" b( [3 t/ X
else inc A_i by 1- e" {3 X8 K7 u' g1 `
end
8 q# h5 Q1 b4 K: m/ R3 e; H# vend+ E# O1 A9 N4 q8 h
* O2 |& f3 a: a# f: Dbegin P_pick3 arriving6 F8 n$ O) h, f1 V5 Q" o1 c3 u9 F
set A_i to 21
* h" i& r: F' Z( K move into Q_induct3
' n9 H* e" T6 s move into pickaisle.induct3
5 t% P2 l9 c6 Y/ `0 q while A_i<=30 do begin
3 E9 k, H$ ^3 S: t) r+ { travel to pickaisle.con(A_i)% M6 C6 c2 W% c$ S% P9 Z' _
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
0 H" W$ V3 Q* m8 |( S& ~7 Y else wait for 10 sec
1 {7 U% p# J: P! Q if A_i=A_leave then send to die7 i% W2 U/ g3 n" g2 ^: j
else inc A_i by 1) U/ i7 F5 K" G
end% |( @% r* V2 R( E) T
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,其它按你的 ...
|