|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢# E* V4 V$ E/ p5 h; @1 G H) b, @+ g
' N! R, k4 z* g我的问题是,在每个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中的数值,不知道会不会有什么不妥。
. j, r. u* E: n1 z: ]/ A# \, l, a- s8 F0 h
begin P_read arriving
* F3 e" m( l, O while 1=1 do begin M8 Q- c5 w, e( ?$ m
read A_tote from "data.txt" with delimiter "\n"' ~. F# N. v) W% K, [1 k
read A_time from "data.txt" with delimiter "\n"
& S" M5 V6 F' F$ u4 o% [: ?; B) w read A_leave from "data.txt" with delimiter "\n"
1 A( V" X# ^2 i4 ^ read A_picks from "data.txt" with delimiter "\n"
( l U' C! Q* Q d5 V set load type to A_tote* Q! E$ u9 w, j* g1 Y' G9 S7 [' r
if A_tote="tote 1" then set A_induct to 1( y+ a3 |$ m/ {: b4 x% ]# x1 q
else if A_tote="tote 2" then set A_induct to 2
' T7 L. G" T9 @0 \7 ` else set A_induct to 3 . l; A7 I3 _4 S6 B
set A_i to 0
2 I3 W, u" I$ }, d clone 1 load to P_induction
D( p$ Y) S: [3 ^* d3 m wait for A_time sec2 T K- e( v# L* h; B: M
end
0 o' e; s) }- w$ |/ cend0 c' Q' O( M1 n8 i3 ?
+ ^0 @- B5 x0 fbegin P_induction arriving/ k1 e* s Y+ y) F1 ]/ o1 P: C
if A_induct=1 then clone 1 load to P_pick1
% ]8 {" v5 q0 z) W else if A_induct=2 then clone 1 load to P_pick2
$ Z2 c! G: p, _0 g! m9 B else clone 1 load to P_pick3
, K3 `2 C3 f5 B! i+ ]$ r8 mend; F! ]7 K) _% S* M% ~
- Y K( b! P6 V0 W8 dbegin P_pick1 arriving: U$ w* {3 d* I7 {- B# Q# j
set A_i to 1! P0 s) N/ q% K5 l- U& T" Q$ I+ V
move into Q_induct1
6 k E* u% B" l move into pickaisle.induct1
/ ]! H; Z+ t6 ^, N! ^/ k% R while A_i<=30 do begin2 m4 n- ^& j0 T0 N
travel to pickaisle.con(A_i)" W8 z0 `3 d: r# G: Z6 J+ U* s
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
h; k* f( I$ L$ \5 B* @3 H: R8 Q+ s else wait for 10 sec
7 ~' v" [. ~( T$ ]) M9 \; g if A_i=A_leave then send to die
+ x! V y6 x! J0 ~- s' W& E else inc A_i by 12 m& M1 M8 }3 E" b; ]" i& m' I. p
end
+ x1 ^4 l9 i( y6 u& a5 [! f9 hend/ `3 R6 _7 r* I9 s
0 X# i4 P- N Q. x! v
begin P_pick2 arriving8 t" J/ E6 C9 v k9 p7 _+ h
set A_i to 114 Z( K7 o) w& _! S* H* [3 b
move into Q_induct2
% Q! T+ E1 J5 Y& o9 b* v W+ ^3 i: d move into pickaisle.induct2
; i; @; r: w/ [: K2 Z. K0 D/ y while A_i<=30 do begin
5 O" R* o( o6 `/ E4 z: ^- } travel to pickaisle.con(A_i)5 m& G' K# u, y0 V$ ^0 a" O5 c
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
* I% m3 @3 O5 E* c8 J: {( I else wait for 10 sec3 N7 A) W" ?; Y9 T
if A_i=A_leave then send to die
$ z6 S+ J) r/ ~9 G2 B! I else inc A_i by 1" u. X: P$ W% C3 |$ y+ P1 A2 e
end) @, V* E9 Z* w) B$ m! A" `; f
end
% P7 a* u; c1 V0 {% |( h9 R: U. n, Q0 g4 e" o3 i5 e
begin P_pick3 arriving6 a+ L" R1 h$ Y6 E
set A_i to 217 I" P3 ?$ V! t7 w \+ [0 X3 o
move into Q_induct3
1 Q, U( d1 D% X& A3 @ move into pickaisle.induct3
& A u: s$ g+ Z8 i1 c1 x while A_i<=30 do begin- @2 q0 d! P5 j5 ^4 Q
travel to pickaisle.con(A_i)9 v2 T6 \/ E# r
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec% `5 [3 y [5 y: @
else wait for 10 sec
2 s& \4 W) E% y8 S% s5 l6 ? if A_i=A_leave then send to die' R1 i0 H$ L7 e8 h$ ?0 W
else inc A_i by 1) \ Q( ~$ U& J8 c3 b' G
end# e8 E9 F+ K. T
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,其它按你的 ...
|