|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
* H- Y$ r0 O0 Z1 g% q
) S1 W/ L5 c' w% S" P+ B5 n1 e9 C我的问题是,在每个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中的数值,不知道会不会有什么不妥。
/ p' f. s7 C9 {( I7 x
& |7 d4 o: v0 obegin P_read arriving0 ~- O/ M+ ~! [& E$ F8 i9 m
while 1=1 do begin2 W: ]+ [( u7 n- }, \ ]; n
read A_tote from "data.txt" with delimiter "\n", L8 I. _& F( y5 z5 T
read A_time from "data.txt" with delimiter "\n"* \) F, k$ L% V- m, K" e/ N
read A_leave from "data.txt" with delimiter "\n"
5 R" Q5 O6 G6 t. R- v read A_picks from "data.txt" with delimiter "\n": T& r/ U" A* y. {3 l
set load type to A_tote/ ^ [+ N8 }5 F4 ^% z. S& a
if A_tote="tote 1" then set A_induct to 12 F/ s. K4 |# K1 F- j. m
else if A_tote="tote 2" then set A_induct to 2# w1 Z) y# N1 H
else set A_induct to 3 / ~! L( @- I- S; r
set A_i to 0
* J0 H8 |, G* p& _6 j( X! B clone 1 load to P_induction
* }. Q2 F! x9 p& n9 ~( V: J4 z6 z wait for A_time sec( I7 v- f- l4 n% e5 T0 T
end: y' p/ v0 R3 ]2 n
end# R2 N+ K3 S: a
. f2 C" \6 [5 b `" D$ hbegin P_induction arriving
8 d" ~* w- g) P+ K& n if A_induct=1 then clone 1 load to P_pick1
2 d/ o, Q4 @1 a- A2 ~* Q. v else if A_induct=2 then clone 1 load to P_pick2
+ K9 y- a' U( q% n k: r5 i! } else clone 1 load to P_pick3( @; P, @: e! k
end2 b+ i/ Q/ T# k
2 v4 Z' F) Z% P z) ^begin P_pick1 arriving+ w/ u ~ G% k7 f# u3 @8 _
set A_i to 1
A( z [' U! }2 Z. q move into Q_induct1
3 ]. y* l, l' p! p4 o1 X! K move into pickaisle.induct1* d& }9 R/ c* L4 @
while A_i<=30 do begin
. H1 o2 ]. r# p# s- d travel to pickaisle.con(A_i)
% v* K8 Q; R- T6 ~ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
! s$ z! T4 U2 X1 \ else wait for 10 sec. `6 O5 D R3 q. e
if A_i=A_leave then send to die
7 k6 e+ V8 ] c else inc A_i by 1
5 f+ d6 x5 |( V0 r: @3 P6 r5 D" p end$ k' j! P+ I/ H: d7 t+ W, Z
end, S0 M# [' C$ \: u* w
) ]: a y2 d+ \) z0 I4 w
begin P_pick2 arriving% w$ D( M6 K2 D" `. J8 L
set A_i to 11
8 B3 T q4 @) z4 z% Y move into Q_induct2' A. P2 x& t; s0 H, G$ o* [. g
move into pickaisle.induct2
! s1 o8 {% Q& ^* y8 h. n while A_i<=30 do begin
2 r2 K# p1 x" R% L J5 H travel to pickaisle.con(A_i)8 Q* N; m/ |+ A4 ^
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
6 `/ A3 o2 w! ^9 v4 f) [* J/ v else wait for 10 sec) v( |2 R& y5 t& D: N! j
if A_i=A_leave then send to die
9 [6 o J4 S4 r4 R, x- o; E else inc A_i by 17 l4 L+ W0 n7 P6 @
end
: i5 Y$ p1 G3 r+ mend
0 W- A6 ? T8 U
$ o G7 R( U" C+ G8 mbegin P_pick3 arriving. B* w5 p' @% }0 l
set A_i to 214 _9 M. [& I3 E* f
move into Q_induct3( i! w, {! T( y1 f
move into pickaisle.induct3
$ c. a8 `. \8 `+ ? while A_i<=30 do begin/ q9 F$ t% O _
travel to pickaisle.con(A_i)
( }- E! K/ G; C% f* U7 ]% O6 e if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec- r7 l/ c: Q1 q& @% m
else wait for 10 sec) s% T- [: X0 g& U
if A_i=A_leave then send to die
$ z5 r+ E; w! z/ f" x else inc A_i by 1
, e( G& _& w% \- x' v# Y end
8 g9 h; G& ]+ n3 y- v5 Vend |
最佳答案
查看完整内容
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,其它按你的 ...
|