|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢' o+ v) u* m1 p# [3 g* Q7 ?/ F
0 ?( m& e, y4 Z$ _# [
我的问题是,在每个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( Q7 n" U7 k/ U
+ g' x Z5 g( ?: o3 G
begin P_read arriving
. e* H. p& h! H. e! Q. w while 1=1 do begin
5 u1 J3 F) w/ N8 g& P; C read A_tote from "data.txt" with delimiter "\n"
B4 K" a; j2 v, I% c7 _ read A_time from "data.txt" with delimiter "\n"2 L/ Z( G( j, o% n. m. ~% P9 y9 C
read A_leave from "data.txt" with delimiter "\n"
4 }! n; t* i% B& ~ read A_picks from "data.txt" with delimiter "\n"6 m& [6 l) Y. c# V
set load type to A_tote
; a6 W% ]& ~( L2 G5 `6 K if A_tote="tote 1" then set A_induct to 1
: ?8 T$ i+ Y& A' r$ |4 {3 G else if A_tote="tote 2" then set A_induct to 2
$ S: I- m: r* v$ \; ?* |2 [ else set A_induct to 3
- Z6 e( I8 u6 n" e set A_i to 0
& [) g. M$ F5 }/ a1 d V clone 1 load to P_induction
: ]$ f& v% \4 _- e# \ wait for A_time sec
0 z4 B# T& T1 B' ~4 a w3 X end
* o' T3 g6 @; @$ j/ `4 v; m) c3 o. Yend' s" o; s1 {% A
9 \9 f6 y+ P$ S- X7 fbegin P_induction arriving
! x B6 z% |* C R0 k9 }; r# \* e1 q if A_induct=1 then clone 1 load to P_pick1
! H5 J% \4 u2 w) _. Q6 {5 G else if A_induct=2 then clone 1 load to P_pick25 W9 @) t8 L8 i7 \
else clone 1 load to P_pick33 @* q* E. C/ [% `- M4 m
end
) M& `, D# N0 P3 b
- M8 `) e6 e- G* r/ e. zbegin P_pick1 arriving
9 n$ f" {% ^; W7 o! [2 a( H0 ] set A_i to 19 {; ]+ @- x( V9 J' p7 F
move into Q_induct19 f# {! n+ d9 r0 s' \) C" m6 b, P, `
move into pickaisle.induct1
) a! E3 u7 H- x' q3 ^& d6 F while A_i<=30 do begin
$ {8 _4 ~+ I% w" I travel to pickaisle.con(A_i): T" m% N& x! G! p
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
" \& n6 v/ Q4 J: e* z else wait for 10 sec
% Q) r7 D' g4 }1 s# ]+ \0 k' w if A_i=A_leave then send to die D8 ^1 h& r7 e, x, M
else inc A_i by 1
0 l$ S& r5 T3 C% m end
& i, \( I* W5 C2 @# V6 W1 n% e4 zend, W6 J9 P# R' C# v% P; G ^4 b
$ A3 W, _! s, z
begin P_pick2 arriving
9 }0 e9 b0 C4 `1 q8 n. ?7 A set A_i to 11
0 _! W" q7 y: @ move into Q_induct2
0 |& q$ z/ u4 C% g0 N- p. ~ move into pickaisle.induct2( h3 d" u7 a' G. U) k( K
while A_i<=30 do begin$ H* L( g c% S" f
travel to pickaisle.con(A_i)
7 H) r9 v; j0 ~# e3 Y if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
9 ?) |- \6 x8 q: z+ R/ @8 M6 p& m else wait for 10 sec
! v/ Z5 ^+ C. S2 C) b if A_i=A_leave then send to die, @* S* q( F; z4 U* f
else inc A_i by 1
9 h. {# H# t" p% @ w* ` end
' s2 N$ s% c1 Cend6 Q+ e, |$ T4 Y; l) m' ~+ [6 X2 _
; v6 {( H! g9 x5 qbegin P_pick3 arriving
# U+ T( A0 W, _& U2 P" a# h7 u& r6 g, Z set A_i to 21
+ `4 b4 f5 P; X- \* e move into Q_induct3
& u/ {8 K% w* Y7 p* J& F move into pickaisle.induct3+ I6 `$ C' Q) V% t
while A_i<=30 do begin+ Y% U5 H( g) i4 j
travel to pickaisle.con(A_i)7 n6 }: F- M8 K4 g& H* J
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec# b d: w9 Y! B/ i# f
else wait for 10 sec
: z4 m7 T. ?$ A* y) N V6 X if A_i=A_leave then send to die$ I4 X7 a+ D7 _/ l% ~
else inc A_i by 1
: S+ N( ]" O: j) o( j9 V! b3 S end8 _, X! R7 G' Z" C9 i5 L! n
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,其它按你的 ...
|