|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢: z7 d! ~2 j/ Q# y
( I0 b) |" I6 W1 k' y' ?; V
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
4 a( }2 T( a+ k' O$ O* u0 ]* p. H+ l0 J W" t; b+ `
begin P_read arriving
+ w# C# K1 U; I0 ]' ^# E8 s3 B, T while 1=1 do begin/ | C1 o3 K; l: t9 Z. `# p) A
read A_tote from "data.txt" with delimiter "\n"" B7 Y% w: y9 s. n/ g$ A7 g$ ?+ j2 t
read A_time from "data.txt" with delimiter "\n"
$ w% I# m2 B. \ I read A_leave from "data.txt" with delimiter "\n"7 Y2 z1 q2 v& B8 O+ K w0 c
read A_picks from "data.txt" with delimiter "\n"" q1 `- X& P d2 i* P
set load type to A_tote
( ^* k, w5 f& ]6 z- ^6 w; g if A_tote="tote 1" then set A_induct to 19 D: C4 ~% s- X& e5 k5 H4 f$ s- e
else if A_tote="tote 2" then set A_induct to 28 ~, ~, q3 \1 G( O# z
else set A_induct to 3 " V p! m8 t) A6 J+ r& Y) i
set A_i to 0' z& f1 {1 h' r- {' c
clone 1 load to P_induction
( @6 K0 X0 ^ M* t. @ wait for A_time sec
% `( U. n9 D6 O6 I3 K end6 X ^1 h3 |* x8 e
end
7 R7 s9 _4 x7 g' e' n$ C
: }4 @: O V: T: m( c) a/ mbegin P_induction arriving
) B8 h, a5 P4 z$ n) Y& k5 {9 K if A_induct=1 then clone 1 load to P_pick1
5 N4 E! I, \. p. M: e3 J* a else if A_induct=2 then clone 1 load to P_pick2
; g* q( C( R. Z" X% p# ^1 z8 ? else clone 1 load to P_pick3
# r0 V- C0 N) H9 l% W8 J7 Qend. @0 T7 I# Y: G" F, s/ L1 `5 T/ s
, m6 a7 l2 v/ _2 r+ Abegin P_pick1 arriving
( }) q. N. T6 i set A_i to 1
6 c, d: P3 u. e6 S. X+ V move into Q_induct12 ]+ O( O# G4 G @9 V
move into pickaisle.induct13 O2 S: u) p/ J: ~, I! x2 ]' e
while A_i<=30 do begin
# }% f6 w# b: e# R9 u1 I3 U travel to pickaisle.con(A_i); A) Z7 U( M& N5 O3 R9 W
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
; `+ q. z( \3 B- X. O6 l else wait for 10 sec3 i; r( x5 O: K! g: b$ A
if A_i=A_leave then send to die
: v/ h. H# A' w. P; J! U& ] else inc A_i by 1' [$ ?8 l2 B- w$ p# c
end) V( A' T" z% V/ L$ B, {. a
end3 Z% _& k3 T3 M5 F
% X8 \5 V5 |$ z, Hbegin P_pick2 arriving% @% Q2 U% I" X j
set A_i to 11
! O# V* q. e8 ~0 v7 B! f8 v move into Q_induct2
5 A& c. N. @& a move into pickaisle.induct25 M- y$ V6 S: O C# e! I
while A_i<=30 do begin ] m$ Z; m. A1 \; s1 @, G% I
travel to pickaisle.con(A_i)
7 Q' K! v% c0 [% _ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
5 A) w/ F* H2 E& U else wait for 10 sec" N# A E- s( V& `
if A_i=A_leave then send to die, P$ w9 k1 ?; H1 J& u- i
else inc A_i by 1& d, d* n* I, d% J
end
) Q" K& @: Z* K# D; b; Pend$ e6 b9 A+ C/ `% E/ ^
" k6 n8 i; C: T7 R# _" {4 }3 Y
begin P_pick3 arriving& g/ `, H& m& ]7 q9 S
set A_i to 21
9 Y5 z: Y. r' `) f move into Q_induct36 d" y, v9 L: }( g: F, O1 i
move into pickaisle.induct3
" k- N( v! f+ v2 a. ` while A_i<=30 do begin
* H! J2 R7 }, j+ {8 y& R2 ] travel to pickaisle.con(A_i)
& a7 d6 k1 o% k8 D! ?8 B if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec7 R3 y7 i/ J/ h
else wait for 10 sec
$ ^5 B' {1 t4 g9 A+ W6 V4 F if A_i=A_leave then send to die
" v1 E% s- P) u4 i else inc A_i by 1
- s+ J# m7 D2 ^9 C; z end! K/ l( w+ C- e
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,其它按你的 ...
|