|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
; l5 Q+ L: Y! w0 ^: p% j" {# N: | @/ `% 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中的数值,不知道会不会有什么不妥。- g0 p8 {. J/ @3 f% j% X* f
/ U+ [+ w7 a$ o; B
begin P_read arriving( Q# c' I6 E. Q) P3 z& j* e9 d
while 1=1 do begin
, M: m: Q! `* T read A_tote from "data.txt" with delimiter "\n"4 ~! z) t* H6 h8 J {
read A_time from "data.txt" with delimiter "\n"
) [: s* m3 ]* m3 {& o1 P* e read A_leave from "data.txt" with delimiter "\n"
) i( z; ~. M4 z: K' {! v& @ read A_picks from "data.txt" with delimiter "\n"6 F! F. p, R' b8 o9 y8 d) `4 @6 Q
set load type to A_tote. [, P6 R) b7 ~" [! _
if A_tote="tote 1" then set A_induct to 1
" M( b0 E; J3 d/ i" | else if A_tote="tote 2" then set A_induct to 20 c( H; \+ m9 @* c5 V
else set A_induct to 3 e) j/ _ J& Q! _
set A_i to 0/ H! J S& i; r- g* ^ Q/ V8 U
clone 1 load to P_induction
" P2 g/ a' i h! k1 h wait for A_time sec
2 F6 e3 }$ v4 a& b- p" } }5 L4 K end
: ^) `6 M+ U0 _1 zend( V" E9 U1 }- `: M, I
+ `) H* }# s4 t/ d" j* o9 Kbegin P_induction arriving: f+ e6 V% }( Z: ~/ z* M$ m
if A_induct=1 then clone 1 load to P_pick1* n: C* V, z$ l" }1 U( {$ o
else if A_induct=2 then clone 1 load to P_pick26 g! \- A, P$ X1 G1 `( n6 s
else clone 1 load to P_pick3
' T: V! ~5 P0 ], }) Nend; P9 q& g. s7 W: z/ L
$ a- l' [) @$ z) p8 v5 m5 T3 D
begin P_pick1 arriving
8 n; J" ?) d: y) }/ D3 o set A_i to 1
H$ L1 n ?- G# i move into Q_induct11 a4 L% C& a% W. o
move into pickaisle.induct1# k6 R6 C* j7 }7 F
while A_i<=30 do begin
6 S/ v' o8 s1 X1 i' H" G' T8 U# A travel to pickaisle.con(A_i)) [4 c( O; V7 Y' C' m% c! X, x# ^
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec2 Y8 Q1 }9 X6 e' b1 ]! g/ Y
else wait for 10 sec
j% T' s3 o/ g4 e, P$ T: O if A_i=A_leave then send to die2 s- @3 @0 v9 z) J$ w9 E. A, M
else inc A_i by 1: i' W& N. d1 x' ?
end. Y# b S# \7 @- g! Z! h# y
end
1 Z- L# \) ?5 |6 E3 m' Q* ^# ~# ^4 x. Y9 R( k' @1 C7 |+ E
begin P_pick2 arriving: G3 @' `: l: x5 @) L9 Z
set A_i to 11
0 u' z- R+ M! k C4 g0 E' N move into Q_induct2
" K2 c+ V7 p3 C H move into pickaisle.induct2, Y; o5 e5 {- H- p1 [) k
while A_i<=30 do begin- {8 V: G% `0 V
travel to pickaisle.con(A_i)6 { w) a# ~$ h2 |& }
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec8 Y' l. O7 v8 e+ J3 H
else wait for 10 sec; B4 S. s, Y* D! A& \# {7 o- X3 W" F
if A_i=A_leave then send to die$ ^$ h% ?- l6 n4 Z/ b
else inc A_i by 1+ z \2 c& M O! p
end
5 L! ~' L: J# kend7 Y9 Y$ C6 l' S
0 T" p6 O& W$ _* e! w7 K ~begin P_pick3 arriving
0 a( {2 Q8 v3 a+ m( r set A_i to 21& r/ o1 `* R- |' ^7 m X3 m
move into Q_induct3
5 n' R( M; d; L) G( P; Q move into pickaisle.induct35 J- W$ y3 T1 o- @
while A_i<=30 do begin. M6 V1 I9 V0 ?, I8 _/ R
travel to pickaisle.con(A_i)& m5 B6 z* ~1 }0 s+ H
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
4 [6 s8 T6 t' R: Z5 z, @) r0 W5 d$ | else wait for 10 sec; t" t9 }6 K: Q+ v! Z1 g
if A_i=A_leave then send to die
# T5 s% K6 v1 Y1 K9 j else inc A_i by 1
% y# e, X* }& K8 s/ |, H end
Q, d+ Y' [% fend |
最佳答案
查看完整内容
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,其它按你的 ...
|