|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢+ W1 x$ U& `. @/ F3 E& h" e* n
. e U1 [: g/ }
我的问题是,在每个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中的数值,不知道会不会有什么不妥。: R X3 E: B4 n1 `, t! j
' z5 M5 w$ ]* u. B- jbegin P_read arriving1 { N/ ?" o+ o3 @+ F- b
while 1=1 do begin
/ a+ Q6 X2 u5 d/ S$ Z6 U read A_tote from "data.txt" with delimiter "\n"( p7 P! N+ V2 [5 k4 k- u
read A_time from "data.txt" with delimiter "\n"
7 N) N( Y. f! Y& s7 s* Y& ] read A_leave from "data.txt" with delimiter "\n"
# X9 h) W& C7 F* E |$ H read A_picks from "data.txt" with delimiter "\n"
& _2 U) {+ P. R, n- o set load type to A_tote+ q7 R+ v# R. c4 V4 }8 Z
if A_tote="tote 1" then set A_induct to 1
- B. R* `0 K6 X else if A_tote="tote 2" then set A_induct to 2
5 U# h0 n% }5 y3 L+ E else set A_induct to 3 6 h8 h3 @; b0 k! K% ^- z. y3 A
set A_i to 0
* X8 \ ^5 C Q% F0 c clone 1 load to P_induction/ w. v: U l, C. a3 S* e+ u
wait for A_time sec( ?4 S/ y2 e; w1 ]1 n: L. I6 _7 a
end; V3 P+ G, f8 n$ L! c
end$ G' O% J9 F# w+ A8 V( p
! I* u" X+ Z3 z* vbegin P_induction arriving, |1 [7 m4 d( c, M& c! h' u3 q }
if A_induct=1 then clone 1 load to P_pick1
" b. v( O8 Y8 B: J4 h3 T else if A_induct=2 then clone 1 load to P_pick2
. S1 z* Q Q5 p$ H& c else clone 1 load to P_pick3) g6 s, L( t& ^ u/ X% w$ ] [
end
8 ^1 j; o! r+ G9 O4 [! I+ |0 y7 Y% ~. P, G# z3 W) r
begin P_pick1 arriving
+ J( X" d+ T7 r7 w7 L$ U set A_i to 1% L }) W% O2 \! K: t/ x
move into Q_induct1
- F* t r! k, t4 f7 K5 } move into pickaisle.induct1, y! `. t' g, {8 U) n' Y [9 B
while A_i<=30 do begin
) T2 l& F7 ^* y2 [( c9 D travel to pickaisle.con(A_i)2 U x: Z+ J( N+ w
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec( n3 k. T7 C7 c$ m5 I; W/ {
else wait for 10 sec
2 W3 M+ V3 G. A* z, A4 k if A_i=A_leave then send to die
9 E' F$ d3 D2 _# D% C1 L else inc A_i by 1
7 X4 J9 Z; ?: C# z end
% z2 V* X5 Y' {; Yend
/ c/ X4 i% _. Y `
- H/ K$ b: k8 \0 ibegin P_pick2 arriving8 [: y0 ]: p0 f! J
set A_i to 11
6 e' ^3 V9 i/ z) s5 j) L move into Q_induct27 I9 u6 @0 R1 x% _0 G
move into pickaisle.induct2
& a1 ]% u2 g( q9 D: N6 E B while A_i<=30 do begin0 r* k$ F# n; l9 f9 J2 s
travel to pickaisle.con(A_i)
$ r) C T( S0 v$ N3 R if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec' e% T, {) j# K1 |& P
else wait for 10 sec {4 f( G" J5 Q6 v9 c3 i
if A_i=A_leave then send to die3 o" z- y- y! g4 R. R9 F1 [" U
else inc A_i by 1' Z5 r5 J* w" h! l) `; q
end* g: F3 b1 Q, x; T0 p9 D
end6 V. c/ n- T1 a. h/ o- v n+ M
3 I$ L; q0 {: I+ _4 T# }begin P_pick3 arriving
" ^: X: m& {0 d- k2 o. _; C, ~ set A_i to 21) |2 K7 ~) s) Q
move into Q_induct3
5 Y) F! x8 B w8 x# o; x move into pickaisle.induct3
6 B1 d) F$ k1 g# o1 j" H6 } while A_i<=30 do begin
( Z7 o4 q% P4 R$ n! n; C travel to pickaisle.con(A_i)0 m5 v8 {* H" \# a9 f+ Z3 |
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
: [0 q+ y* j; E9 D. s! z) k+ v else wait for 10 sec# C+ y' M* N& M# r4 Y
if A_i=A_leave then send to die
* d/ d+ M* g) ^* b( O, Y2 a else inc A_i by 1) A9 X! z) z, z$ _0 T# n
end B: M2 x1 J& b) R; O% L
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,其它按你的 ...
|