|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
- B" v8 ]2 V" q6 P8 c* p: Y* R
( |' k1 i% ]. x- P5 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中的数值,不知道会不会有什么不妥。
6 o5 Y/ H5 P! z! a% S* y( i" h- I% H# K& v
begin P_read arriving: T. C* q9 ^4 T, g2 E
while 1=1 do begin
) J( y0 l T7 D! z$ h read A_tote from "data.txt" with delimiter "\n"
U0 y5 T0 i3 g read A_time from "data.txt" with delimiter "\n"
" |! Z X& ], M7 j/ c, f read A_leave from "data.txt" with delimiter "\n"
$ y- G0 [; r1 w4 Z( d read A_picks from "data.txt" with delimiter "\n"; w8 k' [, L7 i$ z8 i2 \( u
set load type to A_tote
6 a. j5 s. v+ b H if A_tote="tote 1" then set A_induct to 1
2 B2 O9 Z8 H4 n) ^' J& J else if A_tote="tote 2" then set A_induct to 2
- B- t5 C' ^8 m1 J* P else set A_induct to 3 $ i1 C, Z/ M! _3 e9 u
set A_i to 0" Q6 ~; |2 }1 ]5 u G1 k# o
clone 1 load to P_induction
* T' u5 M( t( k: k wait for A_time sec
, _& m" D& Z. Q. S# z9 @9 r end
% {' U U* o$ Lend0 ^5 q* B- R. m
# I% Z0 w" c2 v; z) Q$ s& Y" O
begin P_induction arriving
0 o5 ?( A& k' K if A_induct=1 then clone 1 load to P_pick1( x! W1 u( b5 m
else if A_induct=2 then clone 1 load to P_pick2
& C7 X2 S+ _1 q1 K, ~. l else clone 1 load to P_pick3
" e- M, m6 S: S! v- yend
7 f# p( K" _3 l$ ~3 n0 A3 z% S2 l8 M5 _" b6 }9 R& n0 ^9 c
begin P_pick1 arriving
% Y' w. A7 w H: X. I set A_i to 1- B% ]4 h7 m1 T: F2 @
move into Q_induct1' Q. A* N; _1 Z7 {! ~8 j
move into pickaisle.induct1+ w5 @! b6 m( \& p; \
while A_i<=30 do begin
% p3 O$ w' N5 H3 _" K7 C, J travel to pickaisle.con(A_i)
1 n. d* e0 a* e' T- u if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
2 ?! L% {. V d( [( W8 I else wait for 10 sec: \( ^. q) R, z0 I0 j5 N; g7 R
if A_i=A_leave then send to die+ ^0 |0 U, w6 L
else inc A_i by 1
* d- z7 i* c4 s" E/ h end: L0 W% N/ L7 T0 Y4 u% [( G
end
) p5 O8 z5 }% ]3 U- X
: T# B: H1 S" l! w) K. Hbegin P_pick2 arriving& A$ \( X& O) |" s1 |, g9 x
set A_i to 11
6 ~8 g( @$ V( a7 d2 @1 x/ [, `9 _ move into Q_induct2( p! r7 }4 V- a( O5 J3 w& E
move into pickaisle.induct2
$ g6 n2 C3 I, Z8 q6 ^" R while A_i<=30 do begin+ ?' ?3 B- X6 j% ~% q& |
travel to pickaisle.con(A_i)
8 c2 ^7 E) j( J8 A R* v' Z% Y8 D# X if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec$ y9 r) E# a2 n3 x( W( e- H: _
else wait for 10 sec- E% V/ v, r- W- i5 a1 q0 g
if A_i=A_leave then send to die! j. J& X7 [" w1 Z& p6 l
else inc A_i by 19 V4 Q3 d( L1 Y4 G
end0 B _; l6 ]$ ]" O
end
7 r* W, k' i3 T/ Y) |% M
n0 p1 A& m% Y$ T; ebegin P_pick3 arriving( [1 g1 n) [* A/ h' e! s h' t
set A_i to 21
7 ~& J( P Z0 x8 J1 v move into Q_induct3
: x; h/ ^! {% i) | move into pickaisle.induct35 Q8 J: j3 R6 h8 j! N2 |" s
while A_i<=30 do begin
' _7 L+ A+ D" T/ _+ b travel to pickaisle.con(A_i)6 V1 T! {% r X# C$ ~0 E
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec$ a- E9 d+ D3 b6 L! Y: I
else wait for 10 sec7 y9 V0 ~! G8 S2 H
if A_i=A_leave then send to die
. X1 j9 _; x& I else inc A_i by 1
/ s8 k- L( s* c0 L$ w: {# s end! G* h0 i' f3 h, q
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,其它按你的 ...
|