|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
: }+ s' O9 V2 {/ g+ g7 s3 e9 m8 {* s+ k. e) W) K; t( ]
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
! m3 J! c8 W5 F: O# v- E9 o8 n' C0 ]& l& |' c, q; Y T
begin P_read arriving
! L. n- h6 b+ o. I$ _& ~) ?8 w9 r# | while 1=1 do begin. E( G0 a" f l4 g2 C2 d& \
read A_tote from "data.txt" with delimiter "\n"
% I. P! j( @5 r9 }+ ? read A_time from "data.txt" with delimiter "\n"
5 V, E* g* C+ T P# K read A_leave from "data.txt" with delimiter "\n"* v7 ^; Q' j8 \) I2 m5 f1 c" N
read A_picks from "data.txt" with delimiter "\n"
+ `$ L. T( q6 e: u set load type to A_tote$ ~( |% d7 U. P r6 m
if A_tote="tote 1" then set A_induct to 1
0 C$ f! n6 u! K& g& |0 D8 W5 Y else if A_tote="tote 2" then set A_induct to 2
U+ a2 {3 I# y& W: N else set A_induct to 3 2 I( T* E( G% d' r; t: P% q$ A6 v
set A_i to 0
" ` p6 ?$ x+ `# K# l/ Z clone 1 load to P_induction5 }4 \7 F w: i
wait for A_time sec& O% A. D; C; U& j8 z+ h
end2 Z5 @7 `& h- R+ }
end
* ~6 u- \ k- t& |
3 a1 s, k7 Q0 [6 i3 g" x, ~begin P_induction arriving( p7 U( O0 F; ?" k( X3 j
if A_induct=1 then clone 1 load to P_pick1
, L/ ?2 q/ k% f. Q* v else if A_induct=2 then clone 1 load to P_pick21 \1 f. V; n! m7 h7 ]
else clone 1 load to P_pick34 _. {6 x: j) b/ r7 }
end
" ]1 `/ u0 j$ u1 L
2 Q4 x+ \! J+ Q; z, Gbegin P_pick1 arriving9 Z$ ~; X5 S) b: s
set A_i to 1. F5 ?8 S* c7 ?
move into Q_induct1
. _5 g/ Q# o3 l8 G) C2 `. P/ J move into pickaisle.induct1
* [6 N8 a& b" {9 U/ N! f while A_i<=30 do begin: Q' v! V* K; i3 ]+ I. s
travel to pickaisle.con(A_i); [& z9 e; o f0 _, A8 |
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
8 q( t) \) ? S3 B; q& P else wait for 10 sec
) O% r9 O+ Y' K8 D9 } if A_i=A_leave then send to die4 M; d7 y9 L7 [& |! r
else inc A_i by 1
, x# N& ]$ b3 c7 x( b end
) {8 b0 x v% P: n# rend4 W h; k X) ]0 l% J$ U0 W& Y
" K4 _) g: a+ g3 X( E# [( S0 }: \
begin P_pick2 arriving7 K4 u! C0 o! Z& `
set A_i to 11
1 x4 b' g! d1 U move into Q_induct2
k. d, ?* J! D" z+ t move into pickaisle.induct2
; w6 C% w9 h/ i# g( l+ ? while A_i<=30 do begin$ y( q% ~: s/ q# W- @
travel to pickaisle.con(A_i)
% u5 N- \" S9 X. y if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec4 X. U' b$ t/ w* U
else wait for 10 sec
- @+ ^/ T( N; ~8 n if A_i=A_leave then send to die
) q5 D7 w* v! |. c- M1 c else inc A_i by 1
/ `! A: g/ L: M0 M end! Y& L& @9 q1 Z; A1 V4 i* k
end! W1 z1 K8 a; ?9 J, S5 y7 U9 f0 A
0 J8 r4 k& ^0 y$ p! M+ sbegin P_pick3 arriving
& l0 g4 ~# I; r6 k% Q) {: F set A_i to 21
3 F# n7 Q, g6 U! y } move into Q_induct3
( P' z3 [+ R* Q* e0 ~/ X( Q1 c move into pickaisle.induct3
) J9 F! {9 m# B7 J3 f$ a* c: W n while A_i<=30 do begin
# C( [. k" o, J7 h$ T3 M2 u travel to pickaisle.con(A_i)
! |! d5 g6 x% a: w3 E if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
' P# O% k, |8 v else wait for 10 sec, [- G, w* |9 z. _
if A_i=A_leave then send to die
4 l. P4 K9 j2 R else inc A_i by 1
5 Y4 w/ U" ~4 r0 R end
- y- @; |6 B& g1 P; T) Iend |
最佳答案
查看完整内容
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,其它按你的 ...
|