|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
5 w2 I. ?* f$ s8 R& Q3 a
; n+ H6 \' ?8 r4 \- 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中的数值,不知道会不会有什么不妥。
! Q0 V6 b3 E( Q1 N: c
z( x* H. l! l7 k9 l7 J% a/ Zbegin P_read arriving
/ W' H; k- b9 s. [, F' d0 C while 1=1 do begin
: y! H+ [9 m1 F/ f, j read A_tote from "data.txt" with delimiter "\n"' l1 C) E2 n) |
read A_time from "data.txt" with delimiter "\n"
7 D! k: D2 g( M* t read A_leave from "data.txt" with delimiter "\n"
6 x! c( i) p- U0 _ read A_picks from "data.txt" with delimiter "\n"
/ J% O# w9 J" `* Q7 K( ]5 N4 O( W, ?+ S set load type to A_tote, c+ g" b' a6 R: L5 n: n( ~
if A_tote="tote 1" then set A_induct to 1
/ y$ v7 V0 t Z+ Q3 d9 z/ a. l6 C) M else if A_tote="tote 2" then set A_induct to 2
* E6 @0 u" g2 q3 U3 J2 a9 q% g else set A_induct to 3
- M5 x* F0 W% E" k r* a set A_i to 0
+ X1 r5 a2 [/ v# m, P5 m! J clone 1 load to P_induction8 d9 D% c M; l- k
wait for A_time sec" u. @+ P1 o! o5 p$ q
end5 L% O& C M) W0 X6 H0 ~$ F/ J' C
end
A6 f5 u1 W% l) [, z q7 t$ ~3 Y5 ^$ j+ }: s4 z6 o* a1 w: k
begin P_induction arriving( x% d7 [1 _ W& W, Q, S; J! a* k
if A_induct=1 then clone 1 load to P_pick1+ s7 |% ]. E2 x3 K1 g4 s
else if A_induct=2 then clone 1 load to P_pick2# `" { M8 Y; K: q
else clone 1 load to P_pick3
( m8 [+ u8 [( Y4 z7 Lend# H: v, {6 P. R& D. e5 ?
% D; h6 G, h' x, }; y
begin P_pick1 arriving" Z+ B* U3 V* [0 N9 G
set A_i to 12 s! `7 ^2 K& }% m8 ~5 }6 x% O
move into Q_induct1
7 W K8 u' J1 i9 L/ v2 o move into pickaisle.induct1. ]; e) V' K3 d7 c0 w' h
while A_i<=30 do begin
. C. U5 p6 ~3 U) V" V travel to pickaisle.con(A_i)) w' U6 c' x/ I' z. `& T% B7 Z
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec% }' H1 i. S2 F. D& V
else wait for 10 sec
# ~4 a. z1 y# R& T, j$ J# t- X; e- M if A_i=A_leave then send to die
% K# k! M0 y0 s: m else inc A_i by 16 r) o1 E- ~( d* v- V
end
9 L% F" ^3 b$ G! F" v0 }end9 H+ A6 G7 _6 Z
" W' h! u4 I7 C* l
begin P_pick2 arriving* \8 J7 P- c$ X, T" Y
set A_i to 11
2 l. A o/ [4 D$ s* ^ move into Q_induct2, F) @( B. N) O2 E
move into pickaisle.induct2/ ~5 J6 H" Z8 A$ }2 e4 @9 J& h
while A_i<=30 do begin
& z, g: I4 p3 A3 s$ y travel to pickaisle.con(A_i)
2 q: F2 L2 B, r1 K9 ^" d if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec h4 i+ [2 i- _. ^: y5 n
else wait for 10 sec/ F& D" a& s# P1 {" M
if A_i=A_leave then send to die/ j/ Y8 U2 N0 A; J
else inc A_i by 1
9 q j. Q) e3 I! |6 ~ end
4 Z4 d4 E3 K% l, m5 gend/ {% I+ k7 ^9 c1 m
5 o8 f+ l+ ], J* Z) z7 g
begin P_pick3 arriving( M8 \' z; y! X
set A_i to 217 @& o ~ B5 L( b( v
move into Q_induct3' v* T) N4 U( ^( i) W: g. A
move into pickaisle.induct3
3 j9 C; ^- E4 u8 M while A_i<=30 do begin
, U2 \3 Q; F0 }! F q, L& R travel to pickaisle.con(A_i)
2 E3 Y" {& [3 P9 {8 R# ?6 w7 ~ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
9 K& d* V% u2 s1 A3 d. Y8 K3 ` else wait for 10 sec( `3 Z$ \) T8 W+ T7 D
if A_i=A_leave then send to die7 ~) @2 U! R& K+ W
else inc A_i by 1, M, T; A7 F1 X J
end M; v; n8 ]" @# K% _
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,其它按你的 ...
|