|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
# W! R! k6 L/ \' U7 [) E
3 O9 W" M- O P我的问题是,在每个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中的数值,不知道会不会有什么不妥。" e' U" D7 P9 J& t& D& } u+ h
" p* R" x9 w( B7 Ubegin P_read arriving
. y7 _/ G; \* \9 I& |! X while 1=1 do begin z7 j) w- D; a, s
read A_tote from "data.txt" with delimiter "\n"
4 `2 K0 a( ^3 s w& @! D7 `; I6 w1 x4 n read A_time from "data.txt" with delimiter "\n"# E v. M! q( c6 z
read A_leave from "data.txt" with delimiter "\n"
5 M k4 E3 A* Q( n" f1 f. x* ]( ? read A_picks from "data.txt" with delimiter "\n"
) s: x4 s; i# s9 Y, t set load type to A_tote
w5 y3 H# v" {5 X: N% W) h$ P if A_tote="tote 1" then set A_induct to 1
8 ]' |1 C, i0 v" \* d6 i Z else if A_tote="tote 2" then set A_induct to 2
, f2 b; _( {6 Y' @ else set A_induct to 3
9 v# Q2 p; a3 o) {( |2 v set A_i to 01 a+ ] g" S) T# ~# c7 Z, Z5 j& |
clone 1 load to P_induction
# a. _5 B7 g& _ h8 O+ M wait for A_time sec
% n$ s( A8 y; M! t+ S0 _ end1 G- Z0 g% @% C( y$ [$ p" g
end
7 M8 }! x* U2 J8 D% `* y
' D Z: I3 R" F: _begin P_induction arriving# \9 J2 r: O4 s+ S4 a# ?
if A_induct=1 then clone 1 load to P_pick12 f* L7 G0 W& t ` a
else if A_induct=2 then clone 1 load to P_pick2' H/ `3 w- E( _3 w0 `% R; r
else clone 1 load to P_pick3% F. G! F! h/ \5 x) g' p! [
end" s- ~5 ^+ g& d7 {% f! ?
) d2 a) o3 h. lbegin P_pick1 arriving
& Y. Z2 R) C5 Y# ^7 ?( f7 K0 Y# H set A_i to 1
$ e7 o% A% w" p6 e0 |' s: R move into Q_induct1
1 m- t$ }0 [5 P$ x/ V' S' T, {" z move into pickaisle.induct1; J, i3 o( B' N/ e3 s9 H
while A_i<=30 do begin
. T: x$ T( F+ B$ @4 z3 M travel to pickaisle.con(A_i)
5 o4 O8 ?* n+ w4 O% O if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
0 `. \( M* E) K# ]" t6 A. A else wait for 10 sec
, I$ J1 _5 E7 d: I% X6 K0 n+ L if A_i=A_leave then send to die
( ^ w9 D! s' h d8 S else inc A_i by 1
4 b5 [, {, H! y end
9 ?& K) R$ ?. Q' c8 {( w3 O8 @end! N; K' \- `; H/ a
: e, @! [% M, K9 J( u6 M: H
begin P_pick2 arriving4 g7 `6 P! C# O) i% x6 {+ Q; _
set A_i to 11
* w0 T) s2 g* a/ ^. T" [2 M* a4 e6 ^ move into Q_induct2% F+ d$ P* y. U6 {
move into pickaisle.induct23 d0 b1 T1 V$ [# t+ g3 L0 A; T
while A_i<=30 do begin
' F( ?: M& ?4 Y5 o1 N& F travel to pickaisle.con(A_i)5 c* f2 z. W3 J$ X7 n$ s- b
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec ]2 o8 D' {4 \) L( j9 F0 S8 \
else wait for 10 sec- F+ B: q# x5 d4 F4 v8 }2 a3 B0 _
if A_i=A_leave then send to die/ A4 v4 W4 `1 B. t Q" o+ P
else inc A_i by 1
* q& y& F3 Q7 b9 w. o end, E8 i5 c2 T2 C9 x) }" T: u
end
M5 F+ }1 t( a2 Y0 {8 }; v0 }# \
. S8 e) K7 e. Gbegin P_pick3 arriving9 j5 W/ H/ l7 `! z7 R% w
set A_i to 21
9 g T9 K1 ~) J P5 C move into Q_induct3) h/ ]* E! L% q, V; ], ?( n
move into pickaisle.induct3
3 N! N; F7 e- r& g2 p" R% {8 K7 u% l while A_i<=30 do begin2 N4 D9 O. x6 y5 p, e
travel to pickaisle.con(A_i)& N% W+ w/ w! S) u4 A' f3 m
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec1 I5 r/ ]4 W) p
else wait for 10 sec
/ S' Y% P5 E& |! t3 T& n if A_i=A_leave then send to die6 ]3 [7 r- ]- [$ x
else inc A_i by 1* p8 j* c6 e2 h+ R6 c
end7 F# I% B% I. j3 h% r5 p
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,其它按你的 ...
|