|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
" i5 n- ?0 }: \ [* i4 T3 p
) k, E4 c1 A t! ~我的问题是,在每个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' g5 C. T& b/ I
5 K/ E4 A( y) a* r6 `3 B+ \begin P_read arriving
" A1 R* B8 y9 o$ k while 1=1 do begin
4 r, l$ Q8 q- I5 g) F read A_tote from "data.txt" with delimiter "\n"- l* p5 h' H4 n) S7 L. g
read A_time from "data.txt" with delimiter "\n"
+ q$ G" U5 f3 p5 n3 }" ^0 b read A_leave from "data.txt" with delimiter "\n"
) z- x/ ]% q4 K. b read A_picks from "data.txt" with delimiter "\n"
+ ~! Z+ r/ `% W* j% Y o; \ set load type to A_tote
1 h4 y: r; P$ H% Q V! O if A_tote="tote 1" then set A_induct to 17 P$ s) _. d) y" x7 j7 x
else if A_tote="tote 2" then set A_induct to 2
! z* s' c, x3 [$ ~9 ~5 [& @0 `4 m else set A_induct to 3
1 R6 j& k y/ s; n# W: h set A_i to 0- V9 K s/ ]& |; z
clone 1 load to P_induction0 J8 F5 p5 P( Y' D
wait for A_time sec6 K8 k3 g9 q) Z8 f; v$ f+ p
end" B: B7 B. E f# Z% h' x
end% ~1 ` q# }5 o: h p/ \* X& y/ ~
8 b3 t, U) B4 sbegin P_induction arriving/ T) t2 W. n, i+ |
if A_induct=1 then clone 1 load to P_pick1( N6 l$ t; ^) u1 X& l( ^
else if A_induct=2 then clone 1 load to P_pick2
6 l6 _( l9 o+ l h: t) Y1 U) T else clone 1 load to P_pick3( I6 _/ ]4 A9 \) w G8 ^
end
' G+ ~5 Z1 \6 F( h8 t% B2 z0 K: [
begin P_pick1 arriving
! Q) p& n+ C3 Z! G/ N% h; Q$ L; f' C set A_i to 11 ]% `9 F* @. _8 b
move into Q_induct1
J6 Q6 ?' B. }% l, e: Z, e move into pickaisle.induct1# J6 e+ t" \2 E8 Z5 c# e: A: p
while A_i<=30 do begin: j# {/ y/ ^3 s2 B% n
travel to pickaisle.con(A_i)6 m, F: v) R& \- W! V5 h. G8 c
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
2 Z. P/ C+ L4 Z8 ^ ~5 U# l o else wait for 10 sec
6 `4 k% G4 `" }, C if A_i=A_leave then send to die
9 _! L. M/ e% J$ o3 l) z, w else inc A_i by 17 y o* c% B" b( Q+ e+ d( Y
end
0 D. t3 e! F3 F- ]3 c8 q+ ^end# t0 V8 @. Q+ r8 c
# ?5 J& o- h* ?1 B% I: _# pbegin P_pick2 arriving
: ?+ q& Y7 {* _# u- d set A_i to 11: D& x' s7 ^* A) E' S& h- a5 z& T
move into Q_induct2
; I3 j4 d( H7 X; ~+ X) f; J move into pickaisle.induct2
9 Y$ z' V; y' W while A_i<=30 do begin; G1 k& ]+ o5 u! ~, h3 P: p
travel to pickaisle.con(A_i), V, C# S7 a/ I N+ n
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
4 G- H. @- n5 M( Q5 n, t else wait for 10 sec' p" \" i3 i- S
if A_i=A_leave then send to die: r7 M& r# p' B+ N
else inc A_i by 1: ]7 } \" B; B0 }+ ]0 j; U
end/ g" j K8 Y4 u0 I2 p, p, a; G; R
end! E/ K8 Z& S' x% H9 J! A( n
9 [9 r3 O3 X- O/ R
begin P_pick3 arriving+ h- C# h6 L0 }/ g; X z
set A_i to 21
+ n8 X9 |, M2 |; X, t move into Q_induct3
4 e5 a# p% V6 Q move into pickaisle.induct3
5 y3 }3 p5 E9 K( c) f, @+ l% z9 w while A_i<=30 do begin
9 q. \+ \( R* O+ Q9 I6 `- Q travel to pickaisle.con(A_i)
+ ~( I& F2 H( c if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec: h2 A H+ i1 r, G
else wait for 10 sec' a; m2 s" B8 x5 N7 T6 `- n! ]- f
if A_i=A_leave then send to die1 p7 l) v1 W' q$ _% k& c
else inc A_i by 1- X J1 \* c) L! x- D- H! D* D
end
7 Z2 E( _: y F: }) p: D9 _% nend |
最佳答案
查看完整内容
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,其它按你的 ...
|