|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢' N6 V- }6 R) n
" q7 W4 v( j; p4 L, L% e7 m: @) n我的问题是,在每个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中的数值,不知道会不会有什么不妥。! H9 k# I- H V
' {' i; j5 z, X8 gbegin P_read arriving
) X) V. l8 f$ O& f while 1=1 do begin
7 C$ x: O9 \! p read A_tote from "data.txt" with delimiter "\n"2 x2 `+ s2 x6 ^+ H# H( D
read A_time from "data.txt" with delimiter "\n"
$ N: N9 u5 a7 [' [% J read A_leave from "data.txt" with delimiter "\n"
. |5 J( p( Y* z; a$ z read A_picks from "data.txt" with delimiter "\n"3 K9 `- L2 ]7 P4 Q I5 g
set load type to A_tote3 A) d4 N- ~9 p& n" c* _+ t
if A_tote="tote 1" then set A_induct to 1
# n0 @8 \- ^9 q C# I else if A_tote="tote 2" then set A_induct to 2
, s4 C# G( |* U( o( i' M; | else set A_induct to 3
( o/ x' B: L% N5 c set A_i to 03 J# r7 r/ ]% f( r' ^6 G
clone 1 load to P_induction. A8 ?- L6 I! z4 ?% t
wait for A_time sec
6 D+ K x% X( @, q: D+ t% ] end
+ X% n3 R& a( L" N$ c6 Fend4 d0 `5 ?' f8 Z
- C# B" X0 X7 @$ M8 J3 f I
begin P_induction arriving
% q- }, s, @1 W$ { if A_induct=1 then clone 1 load to P_pick1
! }3 m8 w! [2 o2 w, T* d else if A_induct=2 then clone 1 load to P_pick26 S2 ~# }" ]" \. `+ h2 q
else clone 1 load to P_pick3! Q) d7 v4 U. ^$ K
end
" o Z) |# i1 K" P
- T- w. Z% o/ Y0 I: Ibegin P_pick1 arriving" W2 R1 B& j- N. P( G: [" S# a5 L
set A_i to 15 e8 }% ?. d( e5 [4 F7 o7 W6 }
move into Q_induct1
/ R, H) U; f% N2 d! J% B7 x move into pickaisle.induct1
1 {! v& {6 t' J1 ? while A_i<=30 do begin
$ c9 Q4 K! ~4 A travel to pickaisle.con(A_i)
3 [# s/ `% e' f/ `% h$ u0 z# H if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
5 I* O7 @. I# [- C else wait for 10 sec/ _* a+ c" G' r8 r$ c% V: u- A
if A_i=A_leave then send to die
5 j- s0 M5 I8 o' q3 b! n7 M else inc A_i by 10 t4 R# e" G4 U F. |/ w- \% U
end
9 G9 f) h/ L/ R9 c4 K% c& Iend* `/ o/ Z7 [0 c8 e- q
- \+ j$ M) K, _) z
begin P_pick2 arriving* i [$ E3 Q$ S! i; g0 V
set A_i to 118 O- t6 ~8 h9 r6 y K4 D i
move into Q_induct2
8 _2 J" A) j( {) n move into pickaisle.induct2
9 T5 j. j- d, a& d$ [. Q while A_i<=30 do begin
+ D7 ^/ ^: ?4 R% }( |1 D& g travel to pickaisle.con(A_i)
& j: a& Q6 B* F& d! v8 q9 y if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec( j/ O+ c/ P5 ]' f+ [
else wait for 10 sec
3 A5 N, T @1 M: \; U. M if A_i=A_leave then send to die7 }( X( e7 c6 }* d) W
else inc A_i by 1
# Y. U q) h. {+ Q0 { m$ W5 N6 \ end& k- |1 t# \. c8 Y! D0 m" g1 n
end
5 ~4 [7 V$ I" Y8 z) t! Y4 R( L/ K
begin P_pick3 arriving
: i) X* F) ?$ N& l set A_i to 21+ J& @& ~( U5 P. `& U
move into Q_induct3$ }) n$ Z' L6 l+ }2 E4 `7 p
move into pickaisle.induct35 K' m0 T5 _' \# P0 T
while A_i<=30 do begin! ]8 h) \. x' b5 S
travel to pickaisle.con(A_i)% q1 u$ U: a8 M1 f
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec% p8 K: |& a' ]. g0 r& N
else wait for 10 sec% O9 ^+ U- N0 t4 f I: Y
if A_i=A_leave then send to die9 Y( d5 l4 N3 ~9 N
else inc A_i by 1, \9 B7 ~2 a, d8 P+ u
end
: _$ G8 n" ?% ~% Q* P8 dend |
最佳答案
查看完整内容
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,其它按你的 ...
|