|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢) w% U1 O& p2 @3 ~/ l
+ F. U2 e; e2 i& C; Z ~1 j' Q
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
, O: J* b/ _' G" V4 ^' ]2 V0 J# s+ I& p% H; b7 K
begin P_read arriving
: w, Y4 k& M5 K, A( p# u while 1=1 do begin
/ b3 O8 @1 t3 F3 k7 ^& \ read A_tote from "data.txt" with delimiter "\n"
) g8 t# x8 R& H) c+ ]; {+ v) S read A_time from "data.txt" with delimiter "\n"9 s2 m o; `5 p+ Y9 O( z: C
read A_leave from "data.txt" with delimiter "\n" ?- F# k) U2 } o! \6 J: }" u6 g
read A_picks from "data.txt" with delimiter "\n"3 A2 W' _9 N1 g/ T+ y
set load type to A_tote
$ a! e) G- V/ A/ k ^% G' y if A_tote="tote 1" then set A_induct to 1' o0 n. r- W$ n2 o5 B
else if A_tote="tote 2" then set A_induct to 2
4 O2 S s5 X& z% Q; I else set A_induct to 3 5 x# v \6 } ]$ f% \) T5 |8 T
set A_i to 0
`+ ?/ e4 }3 T+ ]1 s# ? clone 1 load to P_induction6 m6 J0 }- g8 Q' d6 A/ o) [8 F
wait for A_time sec
% i$ |0 _1 F7 D; _/ T6 A end
) }6 _6 K! `$ m8 gend2 Y2 H1 D' `* c Y6 p+ l4 ~7 S" R
2 A# x D& V2 i4 W4 j. ]1 }( n, ?begin P_induction arriving
4 r" H9 g; F; [8 M if A_induct=1 then clone 1 load to P_pick1
6 D0 Q+ n! T9 t3 W& C+ \( {# W else if A_induct=2 then clone 1 load to P_pick2/ W P5 D4 V" C5 ^/ r: n. p
else clone 1 load to P_pick3
) c4 d& i: A" m0 Eend
5 l" a, p7 o e
% @+ Z1 t. O: pbegin P_pick1 arriving
" l3 H3 r! y1 _. @ set A_i to 1
) O3 [6 U- M+ ^0 L; U- P% g move into Q_induct1
% S5 p' e; {& d' B) i* B; M move into pickaisle.induct1% p' j% d; r6 f3 B' z
while A_i<=30 do begin
4 R' ~1 [8 m# W4 m8 H: Q travel to pickaisle.con(A_i)
0 }9 o4 n! I8 N) l- } if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
% z# E2 j4 {0 ~2 ? else wait for 10 sec4 k- \: a9 t; h( {7 L- D
if A_i=A_leave then send to die
' M" W" ^5 ^' r3 C/ Z else inc A_i by 1
7 y: W; ^# b" W1 x z: @ end4 T" ~# S* S2 ~) n
end: i: |, V m% A( ~" P
B/ D0 f- @. A1 ?5 C4 qbegin P_pick2 arriving
# N# F' z, Z) p3 f% q4 x set A_i to 11
1 r5 W! U7 r( ]# c move into Q_induct2
! t! G+ K# D- [, _% J move into pickaisle.induct2
: e! P, T) J* W! N* D while A_i<=30 do begin6 d6 \6 y" Z9 u& ]' b
travel to pickaisle.con(A_i)4 }1 N# ?: L- l7 [
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec: F3 k( g J# K/ x7 t
else wait for 10 sec- h Z* S% @+ L- j$ s) ]& ~
if A_i=A_leave then send to die
) Q3 e' S5 T0 G3 y2 ~: S else inc A_i by 1& D" A# Z0 K, Z6 `- `8 f( ?
end! @+ @; _$ X; ?4 k" U
end
6 j: E9 `9 L9 {
, k5 o- x9 J1 ~+ |* x, G6 Zbegin P_pick3 arriving1 O$ K; H) F- A# P; T4 \
set A_i to 21/ i: o$ \7 ]: L9 _& w* a' ]; d
move into Q_induct3
5 C2 l9 g; N) {1 q' V+ [7 B move into pickaisle.induct31 H" F9 w! ] W% p: H2 _
while A_i<=30 do begin$ v* P: H0 R) C5 }4 q& I- l! h! l
travel to pickaisle.con(A_i)% Z4 W. H6 u& L8 L/ P$ ^
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec; O6 C. p$ `. m, E( A, D% A
else wait for 10 sec5 T. a/ l9 j) w1 G
if A_i=A_leave then send to die2 e9 [* G. Z, [! ?7 R* w" U) r
else inc A_i by 13 `1 b+ H$ V+ X3 N
end
) H8 ]; ]% k7 Q. f/ ~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,其它按你的 ...
|