|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
4 A' c$ N$ M4 X# b
, s( I! D- f5 ]# b y! w我的问题是,在每个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中的数值,不知道会不会有什么不妥。
3 Z: f# h. L6 k6 V
, M! P p* C! cbegin P_read arriving- t0 V' k9 ?3 w
while 1=1 do begin2 i x. ]8 }6 u3 l- s4 w$ C
read A_tote from "data.txt" with delimiter "\n"9 V/ H' v" C- Q9 m C" o
read A_time from "data.txt" with delimiter "\n"
" A. Z0 J3 \: m7 `& y read A_leave from "data.txt" with delimiter "\n"
0 H) Z( I6 }8 w% l! g) b) C! A8 G read A_picks from "data.txt" with delimiter "\n"
5 x' @/ {7 b8 m# X: H set load type to A_tote
' h' v5 F, \. ~5 T' ] if A_tote="tote 1" then set A_induct to 1; o7 }1 |/ o J+ y! ^
else if A_tote="tote 2" then set A_induct to 2
& }$ w& T+ u0 J$ Q y7 E else set A_induct to 3 8 D. t0 B$ @) \% [' P8 ~+ d
set A_i to 0* N3 `2 O: M) G
clone 1 load to P_induction% M4 s# a5 p: e& y2 [
wait for A_time sec9 g$ }3 Q! h6 X' j8 ~7 m
end% A" p: J5 c* d; ^
end
1 u# Z) {$ H1 ?. h( [! [+ U' y) Z. m8 @3 Z: k# H( E
begin P_induction arriving
& A7 G A7 Z3 Q' {* V7 b* y if A_induct=1 then clone 1 load to P_pick1" ?5 r3 e P) p: ?4 S! s# _
else if A_induct=2 then clone 1 load to P_pick2
4 r- u r* \' B* {* O. c" n1 N S else clone 1 load to P_pick3
% j( `3 W/ i1 _! L( k7 Uend
4 T8 ~) q' W9 Q% F8 Q9 L! x
2 T( J8 U7 A8 M) u- l. @begin P_pick1 arriving2 G7 F) l5 D3 k" { K2 ]
set A_i to 1
# b4 N9 w/ z( t6 I1 z move into Q_induct1
; Y7 R8 p, d0 K% r& i* k move into pickaisle.induct1& x# W: B Z2 M0 K2 r( @! R; |
while A_i<=30 do begin
' e* R+ v% S; [2 J8 G& x! ^ travel to pickaisle.con(A_i)
5 T' v" u+ ` G B/ E0 C2 m if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
* m& Z1 J9 |8 P2 {, X else wait for 10 sec. u4 y) S/ ^/ T
if A_i=A_leave then send to die
; X1 Q: U9 k* P4 h( j# Y else inc A_i by 15 p7 a, B6 k0 Y
end
1 e& [& u( @0 Rend1 C; V* Z- [+ `: x4 E; F: [
2 J) L. v/ n% Y0 z! b3 ?( u+ `& _
begin P_pick2 arriving+ ]7 u2 M7 w4 N' g C
set A_i to 115 l/ O/ r. U" i v K3 T$ k
move into Q_induct2) ~9 g2 N9 R/ L, g" Y$ u8 L4 w
move into pickaisle.induct21 _/ K- C. n2 M/ d! n5 X
while A_i<=30 do begin
, R& Z/ n; V1 @6 Z- J2 t travel to pickaisle.con(A_i)
. U8 N# j. y* e- d4 y8 H( `/ b; { if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec% b3 }- o% `' s) j
else wait for 10 sec1 L# R' [2 q' o% e# _, Q
if A_i=A_leave then send to die+ `+ ?1 m; N) Y) _
else inc A_i by 11 }) `' u8 J- ~
end
/ x$ V) E9 k6 o* Aend
3 n# h0 ]& l6 c& e" ~
. S3 B: Q' d! j. m( V1 Xbegin P_pick3 arriving
: Z B2 o6 i( N9 \$ r set A_i to 21: }- C/ |: }* A7 k) n
move into Q_induct3
5 ~2 }) K; V" p( P8 `0 o1 W* ^) w move into pickaisle.induct30 {, J8 y" A( o; ]0 h
while A_i<=30 do begin( V d- X* I) S Z
travel to pickaisle.con(A_i)
# s% U5 W" u, \ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec$ X% Z( I% n% \0 [# P. Q- T% w7 S
else wait for 10 sec9 W- {9 I D3 V7 z
if A_i=A_leave then send to die
* V, D: p w- ]& C+ l9 s else inc A_i by 1
2 P" w6 L' ]7 j; o; R# V end1 t8 H, R( ~& s+ h' R
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,其它按你的 ...
|