|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
4 ~% I9 T4 s5 X/ k. {$ P1 j) }8 W! M
; t5 y- i' e9 ~. r3 E3 {' {我的问题是,在每个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中的数值,不知道会不会有什么不妥。
2 G/ ?% \' u" K" [9 Q) C# `* T. {6 f3 o4 q! ^# F1 T
begin P_read arriving
7 V$ K, x1 J% L! Z. W9 s& o. B while 1=1 do begin
8 m# Z/ c' ]7 ~ read A_tote from "data.txt" with delimiter "\n", v5 R; x: E5 |9 z. {. ^9 v
read A_time from "data.txt" with delimiter "\n"8 f( w" S, t0 c& j# Q$ \
read A_leave from "data.txt" with delimiter "\n"5 J/ _. I+ V; h9 u
read A_picks from "data.txt" with delimiter "\n"
( n* M/ Q; V3 ], d2 B$ K3 @ set load type to A_tote! N3 i, p8 n* M1 J9 ~$ k& F$ T% g
if A_tote="tote 1" then set A_induct to 1
% s: Y. g2 O- ~ else if A_tote="tote 2" then set A_induct to 2
. ~2 M# r( f/ i$ [ else set A_induct to 3
' J" I) s) [5 r$ q7 B5 ]. X set A_i to 0
f% R/ u% I) F2 G# A clone 1 load to P_induction
, t/ l2 O% {5 H( D+ D1 Q" v wait for A_time sec; ?# i' T) [0 ]# I
end
! Y* F# Y% N! }& k( Yend' D+ V% g4 A5 X; \- t& L& B
, T7 M* W5 z7 A s, c+ G1 Abegin P_induction arriving% I# Y& I6 f" o& U3 ~4 }
if A_induct=1 then clone 1 load to P_pick1
7 V/ m% g' _- x) d1 m0 O, W else if A_induct=2 then clone 1 load to P_pick23 B" i# m; k2 Q. b- e: Q% m2 u
else clone 1 load to P_pick3
- _* T1 M6 Z$ I6 v. j1 M( X: Wend
& w: U3 {5 i) I* t' w
0 A4 z6 P1 a: s4 _+ U4 W0 v+ mbegin P_pick1 arriving" v" |8 e* X' l0 W" T I
set A_i to 11 G! |7 {% e* O, D, ]. m7 q
move into Q_induct1
. F6 a P0 U. X7 ^. _( U4 f move into pickaisle.induct14 e, j3 F* Z+ m9 e& A& u2 R; P( o# a2 Q" W
while A_i<=30 do begin0 d3 b/ X; A7 ^( B0 |: j# O
travel to pickaisle.con(A_i)
+ M' z7 F# u% Q8 | if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
& |6 o# C+ b, o# i else wait for 10 sec
0 n; x% Y- N8 g3 D I5 X if A_i=A_leave then send to die
0 u" ~2 [; g" B1 ^, ] E else inc A_i by 16 x2 t7 ?3 X; ~9 V3 S
end; \- D. ^ t2 s; n
end1 {4 ?) }; [2 o+ q8 w
r# _0 s% ` T7 r9 Gbegin P_pick2 arriving! m( z; l/ a0 J, j
set A_i to 11% U7 a! s' W, a
move into Q_induct20 r$ K Q0 v4 \# Q5 r3 E+ J
move into pickaisle.induct2
8 }$ W, X- f& d' b while A_i<=30 do begin
8 D- J" ^$ Q+ X& i: S travel to pickaisle.con(A_i)9 O6 n4 u+ g* Y; m9 z( u
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
7 j6 R2 a% [' n5 g1 A else wait for 10 sec0 k t5 f' b$ v
if A_i=A_leave then send to die" F3 D5 `$ Q- t4 R( p' |0 Q
else inc A_i by 1
) `- l, l& {+ _' g. U: Q! { end: \8 v n% S5 `- E. F8 l3 o8 e
end" x0 |* E+ u9 n, W2 C( d9 p d
! H( i/ }3 P. o. a! }" sbegin P_pick3 arriving* M/ k8 o( y$ `# R* w( E W5 B+ O
set A_i to 21
* x) v" e! O' f a move into Q_induct3. X+ J! z+ u4 x2 V. b
move into pickaisle.induct3
; e; M. m/ k( E/ ^; M7 t while A_i<=30 do begin- q& c8 B' [6 @1 u. s
travel to pickaisle.con(A_i)2 n3 V9 ` m8 I/ A& W, m' ]
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec( G3 V" p( D# n8 q& V
else wait for 10 sec
$ {8 u5 r2 z6 s& ~ if A_i=A_leave then send to die/ F! i. g4 f) H1 ?0 f( a, Z
else inc A_i by 1
1 q! k j" G7 y; q end
x$ K. d% l+ v9 K+ O5 S' Nend |
最佳答案
查看完整内容
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,其它按你的 ...
|