|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
% s2 s/ ?! F/ r& g, k1 l; O. r2 l& I9 Q; d/ \# l) R
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
- l/ |0 u/ x: z' q: H6 t1 \- D8 B |$ f
begin P_read arriving
4 w! ]! ^! B% ^% H/ R while 1=1 do begin
9 |+ ^- f) P1 W4 P! K read A_tote from "data.txt" with delimiter "\n"
3 Y. n0 t+ A/ B7 a" Q read A_time from "data.txt" with delimiter "\n"" Q& I+ P$ b7 l- g5 Y+ p+ x6 j8 f
read A_leave from "data.txt" with delimiter "\n"+ n( q9 C8 M$ U3 ^7 ~
read A_picks from "data.txt" with delimiter "\n"
6 E. c2 ~0 `' I6 f set load type to A_tote R: l: T$ b F* E8 j2 e
if A_tote="tote 1" then set A_induct to 1
7 O+ t, _0 Y' j0 u else if A_tote="tote 2" then set A_induct to 2/ H- e- u) y* I* Y- C6 ` A2 i
else set A_induct to 3 + z% M$ D1 D% T9 [
set A_i to 0* m1 I8 D: Q- E' N9 v4 R: x
clone 1 load to P_induction: `1 Y5 M' F* ~/ K: q
wait for A_time sec j' \; M5 `: L5 [' J( E6 f. u' h* B
end
$ i* U0 m# `5 Jend j( h+ Q3 W( \* a$ A4 B
) ^' N1 @% a) {2 F. b# c" D: Ebegin P_induction arriving
9 d% Z. ?# u- ]# ?0 y0 \: \ if A_induct=1 then clone 1 load to P_pick1
% k2 p/ I: \, E) r$ u else if A_induct=2 then clone 1 load to P_pick29 z5 }" O5 ]6 [$ g4 {. K
else clone 1 load to P_pick3
0 n( _6 E' V* Mend4 |3 P* T0 I: t4 E. \) e: j
( I& Q5 {4 h( s
begin P_pick1 arriving
2 t9 f0 D+ ?+ R$ {% T" L# g set A_i to 1
2 \: g* l$ i( `6 [9 W move into Q_induct16 v6 i' } s' V2 D8 ~
move into pickaisle.induct1
9 `9 |* r. {- P& H1 U* q# H while A_i<=30 do begin
& Z( I" [! l3 Q; d/ T( k( l$ \- K travel to pickaisle.con(A_i)
( `* H/ b$ N8 [9 ~ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
! _7 Y2 Y& {5 R" t else wait for 10 sec
5 i }: F1 a, Y. r) S) r$ a Z' Y& r/ C if A_i=A_leave then send to die
8 c/ V- h# d, Y( Y4 {" M$ L else inc A_i by 13 W4 w3 k. ]* m0 W$ y/ ^* S, V* {; `
end1 ~2 y- s4 K- f. X% S' m' u+ R* T
end
0 A8 s, W( r- k5 d% a5 r) K
3 E3 R% w3 A# h) j/ ^) K; K/ gbegin P_pick2 arriving. }0 ]1 b2 A0 L5 p
set A_i to 11& \3 k6 D" b+ Q' N
move into Q_induct2
9 p5 ~. d4 ~ s- Z# j move into pickaisle.induct2
3 m; y) i5 ?' N while A_i<=30 do begin
1 ^( g% n4 ]& V travel to pickaisle.con(A_i)
9 B! U! O' m% w, D if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
* a* v% g: u) b9 i0 u) k4 H else wait for 10 sec% M5 W# Y1 [0 r9 M3 g N7 L; ^; c
if A_i=A_leave then send to die* o; W6 T8 A: v. U0 ?
else inc A_i by 10 l4 a5 ` I! u8 K# T! `: K
end) S. B6 L- `) `* v, _% _
end
# k: x# v3 Q2 N( j/ ~! ]1 |3 X; q- h3 v; c
begin P_pick3 arriving
. K+ R0 I. D1 R0 k3 n& c4 M! w* ] set A_i to 213 c* ^6 C/ I* m: n9 k' A9 z# e5 {
move into Q_induct3
, [8 k0 k! N: ]; E. Q* T( ] move into pickaisle.induct32 e" v6 Z$ P7 p( s2 A6 w# I
while A_i<=30 do begin
+ \( Q4 Z; \7 O+ n w" M travel to pickaisle.con(A_i)
. W% j% Q, [# \0 U u if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
: G& u; l; \6 e1 s1 Y! Q+ [5 W else wait for 10 sec
9 k" F: o+ t% K, E, {# N8 O if A_i=A_leave then send to die# @3 `; x4 }3 B: r3 Q
else inc A_i by 16 f+ D0 q! V" E
end* _/ `4 A6 R' Z1 U3 `+ B
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,其它按你的 ...
|