|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
4 O+ K1 r7 `4 U/ L7 r
0 \; g) {7 M9 Q9 A' i4 o) m: Q我的问题是,在每个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中的数值,不知道会不会有什么不妥。
& k5 F% a- s. F9 m" M
" V T4 J) G* d' zbegin P_read arriving) L& {3 j- P8 Z, x' C
while 1=1 do begin2 Z3 {% X) |8 z ~* V
read A_tote from "data.txt" with delimiter "\n"4 G$ [0 R- z! g5 o4 T) f
read A_time from "data.txt" with delimiter "\n"% S7 w6 k, P' o, @0 A# E
read A_leave from "data.txt" with delimiter "\n"' a! _* ~% p; B# ?
read A_picks from "data.txt" with delimiter "\n", z6 ]- W0 T! k. x* w, I
set load type to A_tote l- _: F6 K# O! o" K: j
if A_tote="tote 1" then set A_induct to 1
- |; B$ x! O0 d2 O: v$ j else if A_tote="tote 2" then set A_induct to 2
c6 p9 v J8 Q- o else set A_induct to 3
# n0 e& T+ _ c9 l/ K set A_i to 0
# x; T# x9 h9 R | clone 1 load to P_induction* l; C/ _: G# h, t, H- b, Q
wait for A_time sec
) ^' g2 W( W; I2 I end+ K: m" J' t8 B5 |. Y V( M
end+ C- ^8 P1 w }* a, _7 U( W, h
5 }2 b* L# y- \" R+ p0 }
begin P_induction arriving
' ]! f2 U+ ^& N if A_induct=1 then clone 1 load to P_pick1. q5 j: N; u5 z* @1 T
else if A_induct=2 then clone 1 load to P_pick2
j7 t" ~! f( l0 [. _ else clone 1 load to P_pick3
/ R* J. p( ?+ x; G5 V8 Q; Dend" c! u; H4 z% z, U* v
& {" V, A- y& X
begin P_pick1 arriving; m/ U" \ t; ?& @0 n6 Q- `5 m9 J
set A_i to 1! B) Q% M7 @! f! s1 j
move into Q_induct1
/ J4 ^8 ]3 X- N5 g* @4 e, {8 ]; [ move into pickaisle.induct1/ m+ [5 t( y2 G% Q
while A_i<=30 do begin1 Y/ ?, K8 [7 f" C3 A6 R" B$ N
travel to pickaisle.con(A_i)
! y7 U6 L& p- j# Z1 d* j& f; K if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
. w( M9 q" P: B% n else wait for 10 sec$ U, L; [' V6 t( J- h! L1 u
if A_i=A_leave then send to die
3 r+ W; U% K# `: h5 K else inc A_i by 1
5 r0 a+ y; X } end6 C9 r- l$ o4 X) B1 Y
end3 q& I2 H) N6 h# C f. x6 d
/ S0 r) g# Y1 [4 G5 `. ?begin P_pick2 arriving
6 K$ W& _: e2 ]. M/ h3 u; T2 V set A_i to 11
9 w8 W( E7 x& N1 r8 u% L( L move into Q_induct2
2 ^- v% p: S+ j2 u$ i1 i& q! A move into pickaisle.induct2
0 o6 f! u$ F# }$ o( c. H- Z while A_i<=30 do begin; T6 u0 K. \& U/ \$ n7 Q
travel to pickaisle.con(A_i)
( {. H+ t4 J- ~) v5 v# K8 S; ` if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec- [! o1 f. W1 u1 J. k
else wait for 10 sec+ h7 h* ]; ~7 t4 I" p
if A_i=A_leave then send to die
" Y/ O0 I: e# j3 Z( u else inc A_i by 1
: O* R* j ~. Z/ D+ T0 S3 Z end
8 w: F; Q* v0 @end
: ~) _1 W4 s6 Q( L! V& S) o
4 K7 x' K: N$ `begin P_pick3 arriving- f- T5 I9 a& Z5 ^7 J) \7 _) w
set A_i to 215 p2 o; O* ^- H( \) h" Q
move into Q_induct3! r6 s* g# ]# H$ i; V
move into pickaisle.induct3
4 `2 B0 |! U( m+ | while A_i<=30 do begin3 _) e, z) F3 J
travel to pickaisle.con(A_i)
! z' e/ v6 J5 l3 W! g' v6 z if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec: ]' w Z8 o: t
else wait for 10 sec
( s# b$ W6 h5 K( E. @* D. S if A_i=A_leave then send to die1 x" K! E% P1 j$ ?3 U3 m, H
else inc A_i by 18 l8 ^: Q% t Z/ D( ^
end
2 h$ ]& m4 n4 \3 W8 O1 Y m% k# Pend |
最佳答案
查看完整内容
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,其它按你的 ...
|