|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
" v" f: P( K! j6 c# I9 n4 M$ s2 ^0 X
我的问题是,在每个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中的数值,不知道会不会有什么不妥。 H. h* u* E4 B6 _- L+ h
! s+ f, M4 u* W$ n. s2 g
begin P_read arriving
* c% Y1 \2 Q& E+ o7 c while 1=1 do begin
5 I) s5 O( V7 C& ] read A_tote from "data.txt" with delimiter "\n"
g% Y" L. [7 s- |4 Z' t read A_time from "data.txt" with delimiter "\n"
) C3 \! f! F1 H& p read A_leave from "data.txt" with delimiter "\n") @7 f l- B' A/ I5 {9 P" Z0 ^
read A_picks from "data.txt" with delimiter "\n"( R* l) U' N& \& C( I3 W% h
set load type to A_tote; ?& J6 F( K; R* f! h. @3 s+ G
if A_tote="tote 1" then set A_induct to 1
& ?3 A' T' |+ t- r- w) x8 e3 a else if A_tote="tote 2" then set A_induct to 2
+ h+ ~) R+ |+ Q- G, J$ H; H else set A_induct to 3
4 B4 U% k3 ^) M0 M! N- L h set A_i to 0
% m5 C5 O' q$ [ [: s- V3 d/ k clone 1 load to P_induction
0 T0 i/ ~; r2 d6 V/ G6 {* N wait for A_time sec
s4 ?+ g+ m c. \% X; g. d: [ end+ u" A* Q( R% I
end6 O! V: X, J( t
/ I2 g* p: k y9 B; ?9 ]begin P_induction arriving
) U# |/ Z+ [0 j' u if A_induct=1 then clone 1 load to P_pick1, c3 D& T$ u! B. Q
else if A_induct=2 then clone 1 load to P_pick2& }5 O+ Y$ V. n- p, s0 x
else clone 1 load to P_pick3- V0 c& z& T0 N
end
/ c" S; O$ c+ E0 O; p6 U2 x8 o6 i4 q& D( ?4 y3 O/ r/ W+ N8 H
begin P_pick1 arriving v- Q# g8 S4 b# p' z X
set A_i to 1
" q7 o+ T0 b' m move into Q_induct1
; j- E; H/ A& N7 m0 ` move into pickaisle.induct1
0 Z" S+ B; J/ {) E. _. [+ ^ while A_i<=30 do begin, @" p' Z# e8 a C0 G
travel to pickaisle.con(A_i)8 `, k: [# d9 i& @9 v0 J
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec- m( Q/ A7 ?4 I$ E
else wait for 10 sec- J' n, S7 {" K5 z( F- z* }
if A_i=A_leave then send to die
( P% h4 X$ H) v' a else inc A_i by 17 S" h8 k6 o. U9 x
end
% w$ P, d$ S E* F- }0 z7 pend1 Z2 ]- y& y5 R& }. Z
8 z7 x; R% ~ ?% [8 b2 Y
begin P_pick2 arriving4 [9 Z" n. t8 |6 c8 ?7 w
set A_i to 11; q7 Y) J" T7 W+ k% D
move into Q_induct26 u: H3 c0 J0 |+ {$ \
move into pickaisle.induct2" s5 Z$ z9 E: e- `7 u; u7 o
while A_i<=30 do begin
& R( @: m1 D5 N2 Y/ m travel to pickaisle.con(A_i)- G8 t$ @ {" U( S
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec: y) F& x% m3 ~2 U8 u4 |8 B
else wait for 10 sec; e1 A' k9 u% k4 f; Z9 Z- [
if A_i=A_leave then send to die
% ?" a6 ]+ K, _. W. c( r% k) J else inc A_i by 1( N4 P4 T% U B# B
end
v$ l9 O0 e+ e% e$ Yend
) k2 d' E' k+ i# _. `" O4 @, [% q3 E- G: Q* f: `0 o9 Z
begin P_pick3 arriving
* B4 Q1 x5 p( K' y set A_i to 21
+ j6 H! r5 _! @0 x- K+ } move into Q_induct3
6 L [ A8 r$ I move into pickaisle.induct3
: k" Z3 K8 ~! S* j+ g7 \- m% r+ v while A_i<=30 do begin
7 }5 x2 {: h8 B8 P5 z; X/ P travel to pickaisle.con(A_i)
) [" p- N$ \+ [' z/ e if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec. }+ j7 ? S/ q, |7 A
else wait for 10 sec
) S/ j" G8 @! K& j' V8 w% X if A_i=A_leave then send to die3 q0 l& F0 u5 _- B8 f
else inc A_i by 1% p. L6 u0 r+ d3 j1 L5 K: S
end' i8 X, V# W0 L" D6 M; r
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,其它按你的 ...
|