|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
% x4 |1 C" Z- P. W6 w. ^! X7 D3 n2 P. y4 ]0 }
我的问题是,在每个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中的数值,不知道会不会有什么不妥。/ o( L2 `! X8 z* T k# J/ }
- N4 v! p6 t1 A" L/ o% g$ i1 ~ Y1 X
begin P_read arriving5 b0 l1 p7 m) J$ |$ v) z. d
while 1=1 do begin0 X+ O- G: {/ y
read A_tote from "data.txt" with delimiter "\n"
2 w8 l+ o! Z# V+ z read A_time from "data.txt" with delimiter "\n"
$ p8 v* Z x/ m9 D3 A read A_leave from "data.txt" with delimiter "\n"4 Q' a0 G4 G2 v V6 ?5 s! \% I
read A_picks from "data.txt" with delimiter "\n"2 S/ G4 v3 \# e( Z/ _
set load type to A_tote
7 v' k8 v1 P1 Y$ P5 s1 J, l if A_tote="tote 1" then set A_induct to 1
/ ~ k7 p2 z% H4 l/ U* Q1 i else if A_tote="tote 2" then set A_induct to 2( c# a1 D# B# M
else set A_induct to 3
% k# `- }) q: ^ set A_i to 0- Z/ T2 Y3 n6 H. I/ Z0 K5 v
clone 1 load to P_induction
4 _+ \5 c3 D( O0 _ wait for A_time sec4 u; z% S& d5 l2 d
end/ [* N# @$ |, v( K
end& F8 M/ L3 _5 r) n' w. L
+ C+ i. w1 _5 r* j( U. ?begin P_induction arriving
. M3 R' A; f5 y+ x1 I& O7 A if A_induct=1 then clone 1 load to P_pick10 q" G: E$ S' e0 @ W
else if A_induct=2 then clone 1 load to P_pick2/ S+ ^8 I2 |1 |* b9 u
else clone 1 load to P_pick32 I! i* A* k+ y' Y6 R
end
4 P8 R% h5 I) A; j; [0 P
' e2 d4 ?" j( b2 v, Fbegin P_pick1 arriving! i) P% [4 x1 p# e9 y
set A_i to 1% W7 E/ R8 @2 Q' ~ q
move into Q_induct1
* B" k! `* q" {, n move into pickaisle.induct1( V* x8 {0 R) i: S
while A_i<=30 do begin
$ g- O" R8 H; v8 p/ f travel to pickaisle.con(A_i)
: x! o6 V9 r2 r! c) d3 W) q if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec; Z- K+ k. E' r
else wait for 10 sec
) n5 m( n. ?' J# I if A_i=A_leave then send to die
6 N5 n ]- r7 j4 ]8 t else inc A_i by 1% g2 u7 }7 H- |; m. D- _
end
5 [' b+ w: e, C( h f* `* o) Pend* w' A- m3 B6 U( R2 g# e
# J; j! S+ h) \% W3 l+ m
begin P_pick2 arriving" [7 D+ q9 S3 C0 I0 Y
set A_i to 115 T* g5 ?; [8 j% G4 B
move into Q_induct2% T2 S$ \3 f4 I, q8 k4 ]1 I
move into pickaisle.induct2
. V) K% j$ Q+ m' z while A_i<=30 do begin, Y; h2 }5 H$ ~9 ?8 [2 t
travel to pickaisle.con(A_i)# i( H5 G8 _* R* ~
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec( z0 ~5 s, u7 l8 [# E! `& S0 I0 b
else wait for 10 sec; k( X4 E; j0 {( G) D
if A_i=A_leave then send to die' n; ?0 J6 z1 P
else inc A_i by 11 S' ]- s7 g8 R) o, O& r1 f
end) `; I3 h1 z- D1 B& C7 ` W7 U
end( j4 Y4 H3 |! z' _( S6 m' N
1 F) I' K5 A" I8 g6 h4 i8 Ebegin P_pick3 arriving
" k! A K- C: H set A_i to 21
& B) _: {" J, d3 w& E. q move into Q_induct3
4 B- r3 _# W4 G' Y, \& e move into pickaisle.induct3
+ h9 Z& C$ u# Y while A_i<=30 do begin/ ]% r. |4 r" O2 d X
travel to pickaisle.con(A_i)
) C" o9 x, C0 b/ b if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec$ E+ _+ R' m- M2 w2 P0 l
else wait for 10 sec9 @, G! ~, }' [/ q. e0 U0 i) V
if A_i=A_leave then send to die5 O5 H% |6 ^; Z; U
else inc A_i by 1& E( G( C6 ^2 u7 `9 @
end
; f, |# r% ?7 q( Hend |
最佳答案
查看完整内容
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,其它按你的 ...
|