|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
( v, {# h9 \% M4 |" Q( V0 B" h4 ^
) }& ~ \8 _; u7 L我的问题是,在每个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' t" i; ^# c U7 F$ Y
3 m: ]% j# i$ F2 v# t
begin P_read arriving
# a m. t5 f9 K; k0 Y3 | while 1=1 do begin# R$ o& D1 b4 k( f2 V8 j
read A_tote from "data.txt" with delimiter "\n"+ @! r8 e3 q& k) Q5 L& U) J
read A_time from "data.txt" with delimiter "\n"
& a5 C" ^) S: \ P7 ^+ S1 s( W' h5 O read A_leave from "data.txt" with delimiter "\n"8 _# T8 j$ H) @1 X( R; P- e
read A_picks from "data.txt" with delimiter "\n"/ c, r& N9 Q. z! Y/ C; `. p
set load type to A_tote& o" h/ ]: G' p* F' |- W& M+ K
if A_tote="tote 1" then set A_induct to 1- ?7 J: k& i8 m/ Q
else if A_tote="tote 2" then set A_induct to 2
$ ~- w0 n! U& \) U+ d; H5 v else set A_induct to 3 5 I% ~. L9 l* b. t ~
set A_i to 0, _0 `0 @* j* {$ l3 S3 s
clone 1 load to P_induction* _9 H# C) M9 f( E5 l- n6 m
wait for A_time sec6 c n. H" D. i. o4 p* R! g. n
end
; \- Y, y+ O& w g M5 Uend
& R5 x' }, F9 G- o' a0 V
& T) T M4 r/ R4 A/ }, ibegin P_induction arriving) h, L9 d" L8 [
if A_induct=1 then clone 1 load to P_pick16 O. r, _7 w% p$ E4 S3 b
else if A_induct=2 then clone 1 load to P_pick2
7 p, q! h/ v) a/ ^& p. U else clone 1 load to P_pick37 E% e) s G0 K
end
6 y: C$ f6 p/ l
# E& e: {9 K4 Gbegin P_pick1 arriving' @. C! T& z# ]2 a+ f; S7 q
set A_i to 1% m' M! V4 A9 h8 k3 {
move into Q_induct1
: Y) t& w6 N2 o1 V, A9 H ? move into pickaisle.induct1
' N6 C$ e, x# i& b+ y7 K while A_i<=30 do begin, F- I( I1 c Y2 u o1 @8 x. d
travel to pickaisle.con(A_i)' n6 ^# q+ ~; u# |$ P
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
" ^6 a! d! l' Y; R else wait for 10 sec
$ Q7 [( y1 w5 \$ ?5 K, _/ y' C if A_i=A_leave then send to die4 e2 m; X( Q: l) {1 C: {3 z
else inc A_i by 1
8 ^5 b6 ^0 z5 e$ w* d3 ^, V end L+ W* {8 C/ z& K6 ?! ]
end
! O- r f i0 W7 f" [1 z
$ m8 S7 \8 d1 ~* c, A5 y6 fbegin P_pick2 arriving
7 F' @ ~, Z" B5 J0 H5 o+ B set A_i to 11
4 r |$ ]0 H5 f: H7 b$ @, g3 { move into Q_induct2' R. |! d" N' U$ F7 d8 j. d
move into pickaisle.induct2* D2 D, G J: f4 o" |6 O7 _
while A_i<=30 do begin
8 }- s5 D3 Z+ T travel to pickaisle.con(A_i)
+ x, D8 ]6 U" y' R if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
$ D; A4 {2 Z/ E# E else wait for 10 sec
! A& ~ D0 H' V, E0 H: m, o if A_i=A_leave then send to die1 o0 f2 E7 |8 S7 @
else inc A_i by 1+ Y( E3 Q5 {; S
end: ?5 N9 r6 W* G5 `% u( Z
end
' F: J7 ]6 |' w- }! y6 k: e) V* w3 [1 B" B C# R
begin P_pick3 arriving0 N8 S* {! a4 _ W" |
set A_i to 21) L9 r2 A9 J7 t! Q" x
move into Q_induct3
2 q. B) i" x+ e. J) q* J2 W$ p move into pickaisle.induct3
* C! z9 ~, k3 e2 `0 Z! d* i! y while A_i<=30 do begin+ ?! Y+ i8 d3 \8 p" G" [( h
travel to pickaisle.con(A_i)7 E5 W. d9 t2 ^0 S- D
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec) [3 p5 \0 R. h0 Y' Q$ j1 ?
else wait for 10 sec
- Q* {6 s. j+ c if A_i=A_leave then send to die
9 ?" b- M. p5 v0 z# g else inc A_i by 18 p. B4 U( [. {$ b- t
end
- z) H+ N6 N/ [0 W6 n9 e" ]% K/ s$ ?7 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,其它按你的 ...
|