|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢- F9 |* D* ]8 ^( a3 b2 ]% m1 r O
/ U/ ^) v! W9 L% J
我的问题是,在每个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中的数值,不知道会不会有什么不妥。$ b. @. Z" F I0 N+ O
- O: d- D/ z9 b. G+ }# n0 C
begin P_read arriving" z) r/ x n- n/ t
while 1=1 do begin% P0 i% \$ U; C
read A_tote from "data.txt" with delimiter "\n"
: _% w# H Q- h" `# l) L+ ? read A_time from "data.txt" with delimiter "\n"0 e3 t1 O f* h. z8 @
read A_leave from "data.txt" with delimiter "\n"
1 `* X4 N& x" `& }8 L6 m5 l- b+ U read A_picks from "data.txt" with delimiter "\n"
^0 N4 c$ K/ W; k8 t set load type to A_tote G. T# d: S C* t) j8 D9 M
if A_tote="tote 1" then set A_induct to 1
$ l3 R$ i% _0 m& W% l else if A_tote="tote 2" then set A_induct to 2
- r I; O% _/ t y else set A_induct to 3
6 V/ F" b' `5 S6 l+ h/ {- F: W set A_i to 0' h5 y4 v E2 j# Y4 X
clone 1 load to P_induction" ]; z+ ~, D! |) I" X
wait for A_time sec
+ d! v' D2 m7 T( r; X2 P end
9 S; }: R, k: w. H7 yend
9 U$ y" l" q- \, y2 G% G. j: c% z8 w/ [5 |+ d2 t& S
begin P_induction arriving, \4 h {' R! k, s7 S3 p1 d, O
if A_induct=1 then clone 1 load to P_pick1( U! Y9 y" ^7 Z. G% f- `! O: c
else if A_induct=2 then clone 1 load to P_pick2
) G5 ?+ f6 t5 n8 l& r9 r9 T0 X else clone 1 load to P_pick3
% B7 u0 V' ]6 b1 v- ~ \5 X2 Tend
' S# E+ y, J" F- }
% X+ d' g, i3 X0 r7 P- |begin P_pick1 arriving
. n$ e' @# ]2 F: V6 k set A_i to 1
. L$ k5 W7 B# J y move into Q_induct1/ m9 s4 ~0 Q2 x
move into pickaisle.induct1& ?, n. p2 c5 u7 O( p' J
while A_i<=30 do begin
6 \+ ~$ v* l# ]9 |' _# i travel to pickaisle.con(A_i)
( A y6 m, A, [; s if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
" M8 ], Z/ v1 c! i6 j else wait for 10 sec
+ i- K5 K5 {/ ~1 ?9 k) O if A_i=A_leave then send to die- [- y# U/ J1 u0 W- H4 i
else inc A_i by 1/ A7 ]& m V5 I: N0 [& d& q& t
end
& f% W* v+ j1 _, M5 rend8 e; R) W6 U( P' n
- ~& [3 Z6 L H7 nbegin P_pick2 arriving
3 h0 a0 y2 P# v0 ~ set A_i to 11+ x6 B; q) s# f+ [ e) z
move into Q_induct2
: l/ l B1 D- U& y* J7 \- L move into pickaisle.induct22 w7 R; A+ d: D# o, j7 e% c
while A_i<=30 do begin/ t% M ^* J6 ^$ y: ]2 @
travel to pickaisle.con(A_i)1 _( C- P4 V* |2 r8 D. L
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
# }0 ~7 X/ m6 U: l1 p8 P9 c else wait for 10 sec
2 o8 A H' m2 u5 u/ ?- [ if A_i=A_leave then send to die
/ @3 i3 k6 |, v$ Y$ g( r( @" I else inc A_i by 1
5 o) V, p, |! s/ e. J+ e1 h2 @ end
j# ^0 ?& |( |/ ^1 r/ `end, f4 k& _5 s- M7 z' |& u# X
, n, i9 a/ V% A" k4 b' jbegin P_pick3 arriving
3 ^. n, v- Q' M1 W' g/ j2 w7 u set A_i to 21* S* G. m8 [1 ?( M! q9 I
move into Q_induct3( i" Q) P5 @* @( q- z
move into pickaisle.induct3* @' a9 N+ p* ?$ n. c8 ]8 f" x5 O
while A_i<=30 do begin
W S* j4 i% d3 z8 {' d travel to pickaisle.con(A_i)
0 S* R* B. O- ]8 u if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec: R6 f B7 `& r8 g. y7 A* L
else wait for 10 sec) i0 o0 W2 ]% c6 k' H- U; |" e- k" b
if A_i=A_leave then send to die
- h" t, y; A+ E% V else inc A_i by 14 p- n, D+ ]3 D1 p4 Q8 z+ a. k
end N7 `) z- n- R6 _7 r1 W% S. z
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,其它按你的 ...
|