|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
! ~% R' w: l" _
9 T! x0 o: _" r8 W5 n4 ~我的问题是,在每个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中的数值,不知道会不会有什么不妥。3 ~2 R c6 Q0 Y# e$ e: w' p
4 @. v3 [- g! }, W0 t1 d2 w
begin P_read arriving
( r. t X6 s* [/ m, q while 1=1 do begin6 t( m2 V; v; h/ E, s" I) O
read A_tote from "data.txt" with delimiter "\n"( U' {0 [2 ^0 t: ^1 u ?
read A_time from "data.txt" with delimiter "\n"
2 Q1 {! K" ]* r1 [ read A_leave from "data.txt" with delimiter "\n". G) N7 }+ t6 `* u; J% V6 ]
read A_picks from "data.txt" with delimiter "\n"
; L- l& W5 J4 o' S3 D; m" j set load type to A_tote
2 b7 E* S A: |! p% y* ]3 j4 V$ a if A_tote="tote 1" then set A_induct to 1; R- B5 b) o# x$ d$ q
else if A_tote="tote 2" then set A_induct to 2
' W: v3 X! Q8 N# B( W else set A_induct to 3
) n- q3 R8 X* @- I, n7 P. T set A_i to 0
' N' ?) x; n) P1 v clone 1 load to P_induction/ S' ^3 E8 j5 q2 @4 k9 K
wait for A_time sec& b/ J+ ?) T8 j8 Y0 k! q% Q4 e: H$ c
end
) _% `5 r( a+ Q W9 Bend
2 f3 `9 z! y* n5 Y! `, p4 `
4 _+ w: D6 v( T1 B4 u( Wbegin P_induction arriving
8 M: N1 q2 ] D! R if A_induct=1 then clone 1 load to P_pick1
3 }; I' _. r, j$ X" l/ t% r else if A_induct=2 then clone 1 load to P_pick2/ A- ^! A. s! ~7 J$ Z6 x5 h
else clone 1 load to P_pick3% D' q- w& U" s# L5 Z1 V) q3 M
end
2 k, Q C" `- d% A, n8 M9 e, [* z! w- V* F
begin P_pick1 arriving
+ u/ P# c4 G8 s0 U; } set A_i to 17 P4 _* n2 |; {" e, R8 M
move into Q_induct1
% g* W2 b e2 r( H6 U/ x move into pickaisle.induct1
5 e3 _: a3 d+ L; N7 ]; D$ z7 Z# l while A_i<=30 do begin
4 ~1 @7 T; @( X' q travel to pickaisle.con(A_i)% n: H+ C. N/ B c
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
, t( r5 o8 N( V8 A9 ~2 b9 y; F else wait for 10 sec9 c5 k0 ~, h# \$ e/ z( A9 r
if A_i=A_leave then send to die, F: R# ?0 d, }) `) R- }9 W( m
else inc A_i by 1
6 f. a' [8 I7 A3 Z1 D end
+ T# v2 V# \8 W C; Wend. l* e6 d6 T7 X+ g* E
: [6 @9 v8 y* s' D1 O+ j" N/ obegin P_pick2 arriving- P( L$ d4 m8 R2 B. @ ]
set A_i to 11
. T2 V6 f ?( q4 R move into Q_induct2- r4 d6 P& e% B
move into pickaisle.induct2
: R3 x- G% `/ ?1 `) e$ g while A_i<=30 do begin6 @: F& h! [3 @( c: k' x
travel to pickaisle.con(A_i)
% X) k- h, j2 k6 s6 W/ r( r if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec' G$ A9 `& T: G3 t6 ~% m
else wait for 10 sec o9 ~4 q" E. B( p
if A_i=A_leave then send to die
* t, P; E, h' a* O else inc A_i by 1
+ B0 s3 r; B2 O' E" ~+ o" ^ end
' H$ F8 I# ^: e2 B; w; a9 uend
5 P- v1 M. _: r& ^ g- l! B( P3 L' S1 |2 Z) d L& { v
begin P_pick3 arriving
9 W3 V. y- H7 b% S set A_i to 21
# a, d: C9 O' O1 b, c move into Q_induct38 ?6 q7 {9 m+ S; E u. n, N% z
move into pickaisle.induct3
I( t; f/ ]; `2 Z# k while A_i<=30 do begin
2 C% B8 Q+ C& c. D# E travel to pickaisle.con(A_i)* {5 E4 z( ^. e2 K2 _. m3 C f' B
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec, k/ R. v) W) H
else wait for 10 sec
$ f) v8 y' J7 F( H4 V9 U if A_i=A_leave then send to die
: Z9 g% `7 R) }: W8 ` else inc A_i by 1& U2 G* D# u9 l, {' p+ S/ W
end
0 ?3 t3 G" @7 _' U8 X2 R0 T T$ Y; Wend |
最佳答案
查看完整内容
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,其它按你的 ...
|