|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
. B/ y# z) Z3 @& p, |" U+ e1 I) X3 o
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
8 ^. t \ J/ { s5 A& K4 j$ l# H( d0 a2 t$ [2 ^
begin P_read arriving
5 z9 X, W3 M, y ` while 1=1 do begin; j: a* C3 q% T9 [
read A_tote from "data.txt" with delimiter "\n"
- f9 ?, R& q0 b8 v$ S/ o read A_time from "data.txt" with delimiter "\n") E9 g$ ~: h3 r* x f
read A_leave from "data.txt" with delimiter "\n"
5 w1 J) m$ S% N9 {& H read A_picks from "data.txt" with delimiter "\n"" D, r! C# M; W) E* D
set load type to A_tote% T0 B8 r2 ]9 i# V4 q. v& J5 |
if A_tote="tote 1" then set A_induct to 1
# j1 R' a/ s0 n- m$ ? else if A_tote="tote 2" then set A_induct to 2
3 C0 v/ |: Y( ]$ w else set A_induct to 3
( H& X0 a1 ~: k set A_i to 04 M( ~ ?+ F9 c D' ~# k. @
clone 1 load to P_induction; @, I! M% Z: `
wait for A_time sec
8 I% z" q0 q1 \# A end8 y; a) Q8 ^+ w% u& f
end0 |3 E A" m/ x3 {
! }" {; p6 k, i
begin P_induction arriving
& B$ \7 q& e* \ O if A_induct=1 then clone 1 load to P_pick1
. U% R6 r1 K7 t' y else if A_induct=2 then clone 1 load to P_pick2
?7 P, V7 U. y$ g" {, h6 t9 L else clone 1 load to P_pick3" E- Z1 a4 s/ Z+ X- Y" d5 K7 P8 K
end) c% Q: E- i- \/ ~5 V
' A+ f& _; ?; r' e" A
begin P_pick1 arriving1 L7 v, t) C5 K2 Y4 \
set A_i to 13 o- L' A- d( W/ {. u; A, t2 O* ^
move into Q_induct18 E7 K* [+ _5 k- |5 `* U5 n0 o
move into pickaisle.induct1( V2 V" l9 C- ~9 [ x0 g/ C: B
while A_i<=30 do begin
) Z3 C" F) w8 ~9 Q1 Z' [9 r travel to pickaisle.con(A_i)
+ ~7 _* i0 q7 a/ E if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec" ^1 Z3 a2 C% C; V& Z! I
else wait for 10 sec
/ h9 b5 H, a* ` J4 w" N# y if A_i=A_leave then send to die
* z/ V# a& N% W+ D' L else inc A_i by 10 c: \. g) \/ {: K; _' f' O
end
$ M6 `8 \# l+ u8 Z: |4 _ |# Send N2 v# s; `+ k2 e4 n0 `$ C4 k
; a$ M q: W& \0 s" \4 v
begin P_pick2 arriving
4 G' B0 v j7 T, h2 O P: R. w5 r set A_i to 11; {- Q' i8 p) Q# F& r& s4 X
move into Q_induct27 U; o# ^% }9 [' Z6 c0 J
move into pickaisle.induct24 @' j9 d9 d% v) {' [
while A_i<=30 do begin
8 ]3 _) Y9 G" W' A: _, u) ` travel to pickaisle.con(A_i)
8 s' I7 D$ a6 \; j if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
# a5 ~; x/ O+ u, Z ^% u ?$ Y else wait for 10 sec
, L% U- m) i9 ~3 U: U1 {6 _ if A_i=A_leave then send to die0 ^0 E& s) R' N) n! Y; ]2 f) y
else inc A_i by 1
v3 W& m; k; B( _, l end
$ {- v0 o6 i, a. eend
* y6 {, ~% [4 P" F; K7 c/ Q1 R" L, s$ [+ q" D1 \/ c8 \
begin P_pick3 arriving
l8 q% @' j1 s8 {% I set A_i to 217 }0 |$ G& O D% B: B1 D. u! `
move into Q_induct3
* j2 u2 G0 c& w" C move into pickaisle.induct3+ @4 B: n& Q! f. y% t- {, w2 L
while A_i<=30 do begin
) [! _& t/ D8 F4 W" ] travel to pickaisle.con(A_i)
; z% {/ {5 [. ]4 ]: D if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec$ I2 u4 }3 F# A6 C+ m+ M
else wait for 10 sec
5 ~' |' Y1 w+ b; T# l: _ if A_i=A_leave then send to die
) Y. }. v5 W" ]4 D& i( F else inc A_i by 1
2 r- J& i7 |* _: d/ h0 Z9 O8 k6 t end X$ j; D+ L6 E O
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,其它按你的 ...
|