|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
: a6 G- a/ h0 I" e5 X3 E6 o5 S; Z! j/ u6 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中的数值,不知道会不会有什么不妥。
. F+ F( S2 I* p6 v
5 Z/ r1 o5 J+ ?& u9 V& q" K( Lbegin P_read arriving
3 v3 Q$ I; f6 e# } while 1=1 do begin P X0 c# _7 r& F
read A_tote from "data.txt" with delimiter "\n"
; _" j& M! U- a3 R read A_time from "data.txt" with delimiter "\n"# Z& X5 t# n% s5 P& l$ ^5 J$ q
read A_leave from "data.txt" with delimiter "\n"
" s8 M- }: u- h4 s+ G6 u3 H& F read A_picks from "data.txt" with delimiter "\n"* o2 y( ^0 ~ c9 } x {& j( P
set load type to A_tote
) z1 Z0 b! j' r6 ] |: B2 [ if A_tote="tote 1" then set A_induct to 1
* C! P8 m. A/ n! ]; ?" h5 `2 k else if A_tote="tote 2" then set A_induct to 2! \6 ], w* l9 ^" m
else set A_induct to 3
, ^& w# a' N6 X+ J set A_i to 0. ^6 Q& W8 `" R0 s, d
clone 1 load to P_induction( _( |( @3 g9 T! u+ S
wait for A_time sec, u/ }# R }' E
end
" Y; Z" y8 P7 f2 ]- w' bend
; B3 n! b0 {- ]- ^. g+ m0 c
- @# }" r$ M" o4 ?- v& Gbegin P_induction arriving- I* w9 D2 [* F9 N
if A_induct=1 then clone 1 load to P_pick1
, |9 }: z0 \/ U( N: D+ R$ _' D7 o else if A_induct=2 then clone 1 load to P_pick2
6 H1 j# A' v3 G& b# u, j& j else clone 1 load to P_pick3' p1 \# \- W8 ^: w
end
1 x% n- a4 e, V1 `+ U) d; Y; j* q5 R7 K3 d
begin P_pick1 arriving r0 J$ \5 Y$ h; Z0 `" b) S% d
set A_i to 1, }3 {* y0 \; \+ k# T3 F
move into Q_induct17 S5 T! ~" u5 f4 B6 \. w8 V
move into pickaisle.induct1! v) U& |9 }1 c' r) u, s* ^
while A_i<=30 do begin! Z- s9 G6 D; D% Q. m! C7 g* i
travel to pickaisle.con(A_i)
* ]/ ~8 B1 D! y* T if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
. `! y# }6 z& E7 B }7 U else wait for 10 sec
; ?: V* [; r5 y" E6 i$ {6 M if A_i=A_leave then send to die
6 i( W- B: z8 M, |/ r2 [8 z7 `* G9 `7 q else inc A_i by 1
. A: R- i, O2 d# o8 b end
" M" ~# l. x* [/ `8 yend% ]( a8 c! H) U1 R8 y
; H9 ]7 D5 f! K! [
begin P_pick2 arriving+ z! y7 j+ v, k# k( y% K
set A_i to 11
& S. H, _2 ~1 M, c3 \* t1 R0 { move into Q_induct2
8 P1 L& r, R4 U1 ^1 @8 L move into pickaisle.induct2
( |/ h1 H% Y4 A. W, _$ @ while A_i<=30 do begin, ^0 U" m" v/ A! H; L1 L9 {0 C
travel to pickaisle.con(A_i)
5 L w+ ?, n+ d% u if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec. ^6 X. b0 Y8 {) s" E
else wait for 10 sec! f6 o+ q: w( E8 K3 m
if A_i=A_leave then send to die
, Q1 c- ^4 {( d4 b8 Z9 k6 ~ else inc A_i by 1 C) D# E4 A. I: i4 p, f
end4 N+ k4 k0 F. _1 W
end
2 p& I! h$ j( j' }
' P! |3 H( @+ E( [* A+ b. s5 Hbegin P_pick3 arriving7 p; m# m1 ]3 T3 O. ^! X
set A_i to 21+ U" y5 R+ c' E$ v! S: ^
move into Q_induct3
+ M$ } @2 {+ I4 t/ u' F; t' v+ I. c move into pickaisle.induct3) o: x$ n9 I5 c
while A_i<=30 do begin
+ T. f. W9 Z( X$ T. [4 { travel to pickaisle.con(A_i)' y5 k! d* j1 U
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec" ]$ s' i+ [* Z, q- c) R
else wait for 10 sec) [$ q& w* F4 s7 l, i* S
if A_i=A_leave then send to die
0 V t( }+ r1 B1 l8 p" m. A6 v else inc A_i by 1
6 `- U5 } R9 G3 B% Z end
0 `5 r0 S' m! e1 y6 K; N& e8 gend |
最佳答案
查看完整内容
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,其它按你的 ...
|