|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢$ m- A3 z2 T3 o
2 E$ o6 N. J: F1 i5 M: S
我的问题是,在每个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' h1 j% x% D- p8 a. u* b% J* i; P7 }* w
begin P_read arriving
0 A( X/ Y4 H$ g) L: R9 X while 1=1 do begin
- q+ q, n+ q9 V8 E3 {6 h1 G" N read A_tote from "data.txt" with delimiter "\n"
% q) T; k+ w5 `1 o read A_time from "data.txt" with delimiter "\n"
. T. Z- q; {9 `) @ read A_leave from "data.txt" with delimiter "\n"9 R) l2 k8 d- m; ~
read A_picks from "data.txt" with delimiter "\n"
/ p/ ?0 N' y' [, J: ? S set load type to A_tote$ X% T' Q Q( b3 L% f7 h
if A_tote="tote 1" then set A_induct to 1
6 `1 z3 M9 q6 u/ o- O4 E else if A_tote="tote 2" then set A_induct to 2* b1 E0 O& p3 t/ n& W2 _
else set A_induct to 3
9 P4 ~. |. o* _; e8 N2 B, ^ set A_i to 0
& T- m1 X4 W8 M L1 O5 i3 v* L clone 1 load to P_induction
3 c3 `9 w5 U. p& l: I! l& k8 i wait for A_time sec, j/ V. m: `* F q: ~
end6 f* J! x- R# c0 e/ t
end
6 p. K! T. T; u% n( ~* ]8 u: X& ]+ ~3 e) r) T
begin P_induction arriving7 ~* p$ D* W( |4 [5 C. k; l
if A_induct=1 then clone 1 load to P_pick1
B$ W8 t, y: { ] else if A_induct=2 then clone 1 load to P_pick2
: v0 P; A7 R$ | ]! Y8 V/ e* G else clone 1 load to P_pick3
! ?+ A7 m3 i! b$ zend5 [& g' ^* N" S( h- B
, M9 g$ N/ r6 l! m
begin P_pick1 arriving
1 R( I3 V' X$ e& O set A_i to 1- N2 Q" {% Q, d3 v j
move into Q_induct1
5 @/ w0 N; v! X8 a) P. r3 Z4 q move into pickaisle.induct1( n# [# V: Z* n
while A_i<=30 do begin" W0 W7 C' r6 v% T: w. d+ @
travel to pickaisle.con(A_i)
5 L! }$ H* `. [& b- R if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
( _6 @) I) X2 d2 c! q3 X else wait for 10 sec- S2 Z6 d, U! w# G
if A_i=A_leave then send to die
9 t8 |0 g) } m& a4 O+ q r$ T5 {6 \ else inc A_i by 1
: x( e j$ w# F5 e" M end; q$ m) \ m) k6 d6 J
end3 }6 p% d# Y1 D3 ?
4 Z j! v4 _7 ybegin P_pick2 arriving
, {6 M; x9 q3 t5 I( S4 l; T- z- c set A_i to 11
; b& ]* W: p! \ move into Q_induct2
2 q9 s8 s( Q5 |. J# K' S- q2 `0 { move into pickaisle.induct27 D' [( H# ^ l, Q7 X. [' A# h: \
while A_i<=30 do begin
4 { N7 F$ j0 H9 M; U travel to pickaisle.con(A_i)$ K2 }0 ^, M8 Y: W, }# [
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec! F9 {, ^" m' \) p- d- x
else wait for 10 sec
- C) u3 `7 S; w, G8 d if A_i=A_leave then send to die
& v7 R2 ^6 \/ X% N else inc A_i by 1+ N8 Z# ?# J- Q+ N/ `
end8 C5 L2 j. m, x5 ~
end
2 R0 i s8 ^) |* B" y
' N" o* @5 ?0 ~begin P_pick3 arriving+ T# w% U3 A) Z8 t1 T
set A_i to 21
) R! J. `1 G( ]: [# @3 | t" z7 W move into Q_induct3
# O1 b% z9 z6 P, ]3 }, C move into pickaisle.induct3
$ S c; ]9 v: T, E! A while A_i<=30 do begin9 Y$ w2 q/ Y4 }3 i
travel to pickaisle.con(A_i); ]9 P5 J8 r% \$ k/ o, ~$ |
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec7 z$ T% D+ L2 W& I. v
else wait for 10 sec
3 B" o8 x8 c. {1 x8 [/ n6 F if A_i=A_leave then send to die
0 {% p% a: @. o6 X# i else inc A_i by 1
2 b& K5 F' Q1 T5 u% y+ W( X end; F- N4 m0 d8 [
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,其它按你的 ...
|