|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢5 u2 ?. {1 Y. j1 C. N; a( v: }, a
- k$ ]! k9 d# S# l6 z# h" ~
我的问题是,在每个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中的数值,不知道会不会有什么不妥。, K& B& }2 ]+ z# Q% T
5 z$ u& V- l0 T7 N) d/ P+ zbegin P_read arriving
q) Z4 o h3 O% v1 Y) w while 1=1 do begin
3 M- n. r- ]' K5 j( ? h, O read A_tote from "data.txt" with delimiter "\n"5 p1 z( o6 r2 I3 k: \: A3 p. g
read A_time from "data.txt" with delimiter "\n"
5 F( d9 i! ~& s Y read A_leave from "data.txt" with delimiter "\n"
9 o h. r" R( c* Z# _) j9 C read A_picks from "data.txt" with delimiter "\n") ]7 X6 [$ ~9 O3 e G5 h; ]
set load type to A_tote0 R3 t$ S* q* Y" J
if A_tote="tote 1" then set A_induct to 11 [. j$ [" F$ ^% T
else if A_tote="tote 2" then set A_induct to 2
( w8 u7 ?9 }* ? g8 U else set A_induct to 3 ) d, q* E ~1 e! y7 U1 C* |3 ?9 _8 d. d
set A_i to 0- `* G. n/ W* ^; `- e
clone 1 load to P_induction" |7 ]& {) }/ |9 O' l+ B) t
wait for A_time sec3 {' {2 q- O- V, P0 r
end. ~( i, v& d% k0 r3 x
end1 ^0 X- K% u" i0 U
( q6 d3 Y8 y; ]9 ^
begin P_induction arriving0 Z" p6 ^3 \/ t/ b6 ^- b) C
if A_induct=1 then clone 1 load to P_pick1
6 U4 Z- P5 T" Z0 `6 M else if A_induct=2 then clone 1 load to P_pick24 |6 f N# z: K7 z* s+ ~+ H' C
else clone 1 load to P_pick3
! O) N" G9 K6 j1 c* v6 Send
8 F9 ]7 r! i0 I0 m2 P
4 t! D% T/ W+ v- ?3 T2 @1 ~begin P_pick1 arriving
# N+ E- v1 I7 y; G. @. S0 _3 h( | u, N set A_i to 1
- e7 u& X5 [ j, o. e0 i: A move into Q_induct1) B' k p" R& U4 }3 b/ M0 \
move into pickaisle.induct13 a' p* V" y) B, y0 f, {
while A_i<=30 do begin
9 p0 i2 ]. ^/ }7 |7 ` travel to pickaisle.con(A_i)
( k/ J8 u) [+ h$ k: O4 l* _ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec; k& M, u; j& b9 H2 {5 w" A
else wait for 10 sec; ~* l+ D$ n; Q. X
if A_i=A_leave then send to die
/ |7 \1 r% | s6 g) v* c K" G else inc A_i by 1
6 O$ _) `, G$ G0 @' q3 u, T end
; I) }/ [, ]# b; X8 Send+ R' ]2 l: y8 z9 ~( v' b
2 k: A5 W0 C0 j+ J' o" ^
begin P_pick2 arriving2 _; ~3 V4 j6 U( S. `# s. O2 O
set A_i to 11
# @; ~7 n, o1 e5 {: F move into Q_induct2) c/ V! u( o: F5 M, L
move into pickaisle.induct2. w5 F! V @: |9 H4 w/ Z' y, a. T
while A_i<=30 do begin
/ E& A. D* r' A+ d travel to pickaisle.con(A_i); N* ^3 e$ _5 U2 u/ `& N' t
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
$ g; m. Y4 k# J! C4 i3 ] else wait for 10 sec# b3 |9 N- ]* c+ k e& g+ n; L: l
if A_i=A_leave then send to die3 f! e7 N- f' b7 ]% R; {# g W
else inc A_i by 1
/ o0 P3 X& M7 C end4 a; \1 L; o( l m) i
end
. \/ j9 |& h! T% u+ A9 S) X% O3 z4 C& I, K0 w- {, p
begin P_pick3 arriving
6 [( h& S* C7 V set A_i to 21+ j2 T8 |% A! p
move into Q_induct3
@0 T+ [, N) }( x8 e move into pickaisle.induct3" O, R. \9 g+ j' E
while A_i<=30 do begin
' F+ Y9 s2 N; ]/ s" ]+ X- U/ h travel to pickaisle.con(A_i)6 H$ E2 D) Q; B. ?- b, ^
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
" y$ M5 a( @, B% K* Q else wait for 10 sec
& ?4 O7 \& H$ h$ o( M# Z6 ? if A_i=A_leave then send to die7 v) g% P$ `* _! d# e
else inc A_i by 1
1 w' K+ G$ E. a5 _: @ end7 k5 @; V% c- 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,其它按你的 ...
|