|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢& `6 j k" [! m) B$ i' o0 N
- `' m7 D* ~/ J6 {
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
" s' F4 g& L! I& J, y- Z% \' z1 ?( n0 g" S$ C. r7 s
begin P_read arriving
7 `5 r% s3 v7 `. D! [- N2 S while 1=1 do begin
8 J- X! U* A4 [: V' }7 Q4 i! ~% f* ] read A_tote from "data.txt" with delimiter "\n"( D: O [' z- Q: f
read A_time from "data.txt" with delimiter "\n"4 b/ p3 a% n4 j. h. y/ d- r
read A_leave from "data.txt" with delimiter "\n". ~3 O; S! W4 B+ d$ S
read A_picks from "data.txt" with delimiter "\n"& z9 J( N6 E- r% N3 f1 @" G
set load type to A_tote
/ l8 `# H% j1 H1 V if A_tote="tote 1" then set A_induct to 1# \# U* V: u$ Q4 R( h$ Z4 e4 c. i2 B
else if A_tote="tote 2" then set A_induct to 22 w( Z5 ]! ~6 `; c3 s
else set A_induct to 3
0 A8 V: W; Z6 Q; I8 k, J set A_i to 01 ?4 P. R7 ?3 C0 x, T$ B' u
clone 1 load to P_induction8 X8 I) T: j& I7 x6 r, q8 k
wait for A_time sec: g5 l* n2 ^ Q8 s" d* }
end, a3 F% _) I, r& c' B' ]
end
6 m5 X8 `( J% ]7 [% i8 v( b6 F
7 a, a7 Z5 m7 ^2 `+ s. _begin P_induction arriving( P- J5 x6 d! O7 a" z
if A_induct=1 then clone 1 load to P_pick1
7 N% [4 _5 l3 p# n1 o& ? else if A_induct=2 then clone 1 load to P_pick2% J4 [& _1 g+ R
else clone 1 load to P_pick3
% d" h" g9 J* h& C! A* rend5 Z( E% T' U$ u! k
+ ^- Y) Y1 n" d- }begin P_pick1 arriving
: s/ n, p& Q* i( B } {2 r set A_i to 1/ M! K- s- w! q6 Y, V8 l
move into Q_induct1* K; C# b" d- A$ X+ E
move into pickaisle.induct1, ?: ~- T" E& K& X4 Q! M
while A_i<=30 do begin& ?, e$ U# ~. i6 {# T
travel to pickaisle.con(A_i)
8 p/ v. x. v4 d9 E2 {6 j+ S if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
; w, U5 E7 K8 K+ g* h T else wait for 10 sec R+ U% Y8 b3 P& @, I9 [
if A_i=A_leave then send to die/ f- K+ Y- v- J0 Y
else inc A_i by 1; R) F8 O }" P9 `' ~
end* \9 m$ f1 i. v8 {
end) U4 G5 T" m Z7 E u$ Z5 F) A
, q. N, d- S; B( y% F
begin P_pick2 arriving
! Y; M# s! s2 c9 n" D set A_i to 11( l! H0 U8 @) |) U* x$ N9 E; X7 Z: L
move into Q_induct2
, T7 f# K3 n$ _& b! q1 c$ @# h; S move into pickaisle.induct2
f, c4 O* }2 i while A_i<=30 do begin
' K/ c" a: \% R, ^& e2 [5 R) f travel to pickaisle.con(A_i)
7 ^) x+ l; `( t, ~ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
' e8 B! R& `. |! ^) C else wait for 10 sec
* {: {& q& M6 h if A_i=A_leave then send to die
9 _+ n# m5 {8 M& v4 C8 J& e8 R5 ]: C else inc A_i by 1* U0 p# l6 N6 U' D
end7 g) W- L* p1 R# N1 \8 |; u7 T4 C
end
4 C/ F! J t( y: a: h5 @% s! I0 X: |' J: }9 W/ ~; R
begin P_pick3 arriving
! n+ Z7 v; A$ V% L& U set A_i to 21. c6 [- z" \; D1 P) m' z
move into Q_induct34 R& X4 Q3 Y' o2 _
move into pickaisle.induct3
' |: Q2 S% e5 @8 k while A_i<=30 do begin
' p7 u* ^! Y1 `" F9 j4 L. } travel to pickaisle.con(A_i), |" w- c3 V$ @4 @
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
2 K5 [, H: y7 V- j! W' d else wait for 10 sec7 d* ?$ s, a$ F! v
if A_i=A_leave then send to die" F0 V. @4 i- s- Q5 ~
else inc A_i by 1
, K1 b4 [% A5 O6 |& S) a end
5 Z% g& c/ { ?. S/ V9 b- Send |
最佳答案
查看完整内容
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,其它按你的 ...
|