|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
8 P5 K3 d( R4 n# k$ i R/ p1 v- h+ F5 F1 `1 i2 ]1 K
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
" {+ F6 n; T `0 \* A( K; v" d, d! R: T2 k6 B9 x
begin P_read arriving
2 H4 v+ [* ^/ C9 o$ M while 1=1 do begin: j+ u4 l2 K4 j0 W3 O H4 e5 v- ~6 t
read A_tote from "data.txt" with delimiter "\n"5 s4 e$ a' D9 K' J. J8 |! w
read A_time from "data.txt" with delimiter "\n"
# z6 [9 [7 _9 r read A_leave from "data.txt" with delimiter "\n"
$ f/ s% s- L8 K2 z/ G: C read A_picks from "data.txt" with delimiter "\n"" k) ^: U, J: _
set load type to A_tote2 ?2 m2 v- G& U7 s. c2 m
if A_tote="tote 1" then set A_induct to 1
3 U6 U, t R5 t# W$ q+ ^/ J+ W else if A_tote="tote 2" then set A_induct to 2
: P/ \: ^- E! g5 O- x else set A_induct to 3
- y2 x. G& E f+ V set A_i to 05 U0 r: Q" S% x+ O* I' C7 V
clone 1 load to P_induction
, c: j2 }$ M. X) Y; A6 G7 _ wait for A_time sec
& X% G* E5 x8 F& }. r# `% O, \ end
d% |8 T" g7 ?+ B3 y$ A2 ?$ Kend' \0 |; K! {" t2 W0 t
5 w) {: _3 h( ?" c
begin P_induction arriving
. ?- J* p2 H8 h: a9 r; I5 y if A_induct=1 then clone 1 load to P_pick16 X: O$ q6 j- ?$ H) \) b
else if A_induct=2 then clone 1 load to P_pick2
! |2 _ E1 M# f) [7 W else clone 1 load to P_pick3
" L* z; Q5 `) g' Xend
* w: M" L- H, c3 z& C) c: F* f
! N2 Q2 J/ u1 O0 a8 ^5 q, l$ lbegin P_pick1 arriving
4 R& C9 g; O8 N/ W( v set A_i to 15 Y7 F" w; V7 T
move into Q_induct1
1 \: o( \7 A1 l0 F6 F move into pickaisle.induct13 m8 f" N; c! U. d0 n
while A_i<=30 do begin+ B0 x8 c6 S& g" I' e3 r
travel to pickaisle.con(A_i)" k, N2 ^1 P* b+ n7 [: H" K- ?# o
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec* r* v* o: L* o/ A$ |2 w) B
else wait for 10 sec
( C1 {6 \ e7 _3 a) Z if A_i=A_leave then send to die- h: p: K7 g" v6 i( ^
else inc A_i by 17 n' R9 S2 p7 U* i; [* W; v) H: P" T
end
8 w: \& `: h& p Z$ s4 Bend
. W: U: R. a* K) `" z% @3 q# I8 p$ [* r) U
begin P_pick2 arriving* a" M1 E7 T" m. @
set A_i to 11 u' m9 z$ U- x3 {( ~ ]* v# U
move into Q_induct2
) U* O8 r M% X5 R6 s [ move into pickaisle.induct2
8 v [" ]/ M( U( }# x while A_i<=30 do begin. A" V0 s) }/ ]% q9 ]: x4 @0 ]
travel to pickaisle.con(A_i)6 t& M: M. k1 V% F4 j
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec% f- w1 ~9 j( z, _
else wait for 10 sec6 }3 }1 Z+ u$ w, g. U! s
if A_i=A_leave then send to die
2 _$ w% u: X; l6 Z: \( m else inc A_i by 1
* I/ S' S8 ^$ U* a' K! u, u end9 h/ v( P4 Q3 v6 W
end
% I6 A, v" M% v/ M- J- ?7 i$ J* S& ] \( p1 I/ p0 i3 k+ h
begin P_pick3 arriving5 A, w8 q* M4 g% h0 Y
set A_i to 219 m$ n) u% Y9 u; k2 w i0 c
move into Q_induct3
9 ~! L4 R( s9 I: K. O# \8 D m& [ move into pickaisle.induct3
6 Z; }% J/ h5 N( l7 q+ b# O5 w, b7 h while A_i<=30 do begin
+ h/ q4 Z# ^3 z3 q travel to pickaisle.con(A_i)
: J' s' {9 C: {( j7 ]- [ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
& V1 I7 U. g* K( ?1 M else wait for 10 sec2 h4 o' Q! E Z4 ~7 Y+ M
if A_i=A_leave then send to die
; e* r% U1 L" n" L: r3 |! R' ~ else inc A_i by 1% g) o3 G4 Q$ u4 E9 p+ W
end
$ k6 B2 F7 V4 z ]6 U( F j9 Mend |
最佳答案
查看完整内容
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,其它按你的 ...
|