|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢1 f8 j0 H# Y- {7 u4 {2 l
; j5 x; M! S: p- p( R+ w: c: {8 w
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
{; g! A I$ J1 `& n2 i8 i, Q4 Y( k
begin P_read arriving
) \5 s# p" Y1 s+ O8 e while 1=1 do begin
$ D# {* M6 q5 l k) h read A_tote from "data.txt" with delimiter "\n"
+ H; v7 x9 O9 d: a1 I! P read A_time from "data.txt" with delimiter "\n": l9 j o3 L' E, X$ y- B4 S
read A_leave from "data.txt" with delimiter "\n", @. Q B/ W& f' F ~4 z2 W4 a9 ]
read A_picks from "data.txt" with delimiter "\n"7 p5 m% o0 H. s# Z8 B$ i8 H
set load type to A_tote$ n/ W" ~9 u: v4 }6 p
if A_tote="tote 1" then set A_induct to 1
2 L" v% \7 {% i* r2 _2 Z else if A_tote="tote 2" then set A_induct to 2
; e2 _7 ]- R1 x+ y; Z9 S' n% V7 y else set A_induct to 3 8 {* \5 ~6 c' c* H& z) {+ z
set A_i to 0
* @$ Q3 O: [" G) [ clone 1 load to P_induction+ b; ?/ A# K1 b/ d0 C
wait for A_time sec
# n9 _' H0 f! u& h4 a end
" B& F+ v: b. {/ p) D. Xend: c) h- Q% j( O8 R% m
$ X* @+ ~5 L: w' w5 A
begin P_induction arriving
6 A9 q" P% R5 q if A_induct=1 then clone 1 load to P_pick1# O$ }" C' `( {$ N7 h
else if A_induct=2 then clone 1 load to P_pick2
) S; f; V9 w" J$ Z/ i# j else clone 1 load to P_pick3# y9 J& C x/ @! A$ ~$ x& W
end' q) b9 r' q9 h$ P- o$ i* e& Q+ n
" s+ |" v) c4 C+ R% X( o
begin P_pick1 arriving
# l/ d% M/ g2 H. t set A_i to 1! C: u- e {1 q8 Y. x5 M
move into Q_induct1
9 n6 M) G" |" Q: g$ y: B* j% N move into pickaisle.induct18 F/ j0 F; ~2 u) u2 t- ^, B. h& y
while A_i<=30 do begin" b6 r* v* q% @; X6 w
travel to pickaisle.con(A_i)9 |" ^+ ^3 I( r) c7 g" M( V
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
4 G0 Z4 K4 a# j5 q9 c# \6 m else wait for 10 sec. |' a/ `8 Z) J) \; k
if A_i=A_leave then send to die
3 u" T3 _4 _/ }3 e# E: y! {8 g: w else inc A_i by 12 z9 W9 E: o% I3 G
end
* C# ~) J, C. W, {end/ ]6 Q: V6 \' E9 g9 f
# e* Y- i6 A8 c! Wbegin P_pick2 arriving
+ K3 e+ V% g" p set A_i to 11: x- B8 G# p0 D5 g0 E1 Q0 o/ q& P' A
move into Q_induct2& q' j& H( w! {- o8 @0 z4 Q- d, q) i
move into pickaisle.induct28 {* r0 D9 o) O
while A_i<=30 do begin
7 |% A& g% c2 T6 c( b travel to pickaisle.con(A_i)
. L5 ~% k% G. l; U if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec3 _ m) z, f0 X
else wait for 10 sec
0 F( I( X& u5 |0 Q, Y# |& Z% V5 ~ if A_i=A_leave then send to die+ `" _. |3 t- Y
else inc A_i by 1
+ P( n+ c4 m5 F end( e7 ]" d+ i9 ?
end
: D# d- X i; k& o
: |( g$ N- S: r5 U+ L6 N! w0 Xbegin P_pick3 arriving
: A4 b) R, x2 V% {+ B. J/ r# q9 f# M set A_i to 21) z6 }2 _9 h& a) Z; X+ v2 L
move into Q_induct3
3 q, k) x8 c- ?1 J( w move into pickaisle.induct3
2 [& N3 [7 g( m; L while A_i<=30 do begin
. j4 u: p" Y4 | travel to pickaisle.con(A_i)4 B% J4 p' w( f" S2 H
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec6 ~4 {# v7 q5 d2 N- c* q; N7 J
else wait for 10 sec
% h& t9 l$ r$ ~1 \" P if A_i=A_leave then send to die
, }& | z- E- j4 |2 P, U$ K else inc A_i by 1
, M; h% x3 `1 |' \ end/ _. d0 ?4 S' R, M4 ]0 V. o
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,其它按你的 ...
|