|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢# l v7 Z& E [3 v0 c
" t8 b( o r7 j% j9 Q; k' y6 ~; }
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
: ]& g9 N; e' n& c u% U, o4 s7 Y i# A w, A0 b/ u( n7 p
begin P_read arriving! {; q# t+ Q6 z* A" E8 `
while 1=1 do begin
$ f% f- R6 v7 G, T' f% U read A_tote from "data.txt" with delimiter "\n"
{; H y9 x4 v0 P4 ^+ A read A_time from "data.txt" with delimiter "\n") ~2 T) K, O7 t; a# d6 i- s
read A_leave from "data.txt" with delimiter "\n"
5 g; C% B" b( E1 h" Z+ \ read A_picks from "data.txt" with delimiter "\n"8 M; A! N! r% ?9 d# t/ o
set load type to A_tote
3 W+ j' {( G/ i$ C if A_tote="tote 1" then set A_induct to 1
# e5 [: B) N) l/ n0 o( w! ]1 ` else if A_tote="tote 2" then set A_induct to 24 J3 a8 T3 b u! L, v% c, T \) H# s
else set A_induct to 3 K9 Z2 Q# S0 t. I
set A_i to 0
" i/ Z+ I( c2 p& B9 X( B' i clone 1 load to P_induction
: y8 c+ A' r6 `$ H wait for A_time sec
5 i! k5 c* O! j5 [0 Z9 h0 M/ X end
0 w. a7 e, |' Send# Y+ R7 @" _6 |. u! @( r/ z8 _
/ @( q' w5 ]' A, y3 v$ ]
begin P_induction arriving
. l( c6 c/ J4 c# r0 p if A_induct=1 then clone 1 load to P_pick10 n1 k6 {/ W8 h: A3 k3 a
else if A_induct=2 then clone 1 load to P_pick2" U) q! s4 `$ Q1 [+ O6 S
else clone 1 load to P_pick3: f/ F/ \# f! R( z" ~4 f9 r7 G
end- |. m; z' [6 \% m- y- d" ~! k
7 H$ M. f; i4 j3 y7 W2 |begin P_pick1 arriving5 G2 y/ m/ ?$ X' d: q
set A_i to 1
/ o# F ? B% Z6 p& @ move into Q_induct1
1 ~/ W8 m& Z- ~9 G5 e3 s7 B" R move into pickaisle.induct1
! D9 M) W# x( i- h4 z+ T; X" @ while A_i<=30 do begin
, a# B o9 M: y travel to pickaisle.con(A_i)
0 N. \/ w; E% @; B if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec8 O4 Z. z. Y& U4 h; `
else wait for 10 sec- K- R2 _1 q5 F% E
if A_i=A_leave then send to die
1 u4 _3 ~$ u5 n0 r2 V+ _; Z2 S else inc A_i by 1( c+ f2 x( m( s# V% P
end- S7 D( `3 r% x7 D
end
: q1 P- }/ n- d( D3 j( m# \6 F( p, U: z( d1 W' ^7 j1 N8 f
begin P_pick2 arriving
% }( N4 n. w5 K( Y2 K! _) J y4 K" c. b set A_i to 11; m; ?& g6 N1 O( Q% {
move into Q_induct29 s0 h5 N& E+ O: l: D; \
move into pickaisle.induct2+ J; n$ M# a2 V- x! I# K
while A_i<=30 do begin
* L% j& r2 A( x# e travel to pickaisle.con(A_i)
' e9 b5 v! k8 \9 n; ` if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
% D/ l9 P; n3 T else wait for 10 sec: a+ @; W8 q: b) M
if A_i=A_leave then send to die: ]8 x( ?# H& j* Y( L
else inc A_i by 1- p @. h" v) y# t$ u% a
end; I9 d5 n1 v& L; Y
end4 g: {* h0 B) ]/ x9 M
, I4 W- W; q0 J4 { V# d
begin P_pick3 arriving
% U4 v9 N$ V: }- W set A_i to 21
: O; h* s- O+ v" c move into Q_induct3
; d/ P( f. ~$ p" B9 u move into pickaisle.induct3
2 {- ?+ B5 U" H/ { while A_i<=30 do begin n2 C7 n3 ?$ U" S
travel to pickaisle.con(A_i)
. D* v6 T2 K- T if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
9 p+ ]/ \3 \7 B! l4 q! U0 F/ [ else wait for 10 sec
5 }+ j0 U; W7 H$ Q7 T if A_i=A_leave then send to die
7 U/ M1 J" K# B0 [, m else inc A_i by 1
% W; |# C5 X' ^6 v$ m' Z' S+ X end( b3 _5 [; o: i, y+ a
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,其它按你的 ...
|