|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
, B% q( i* i1 {) I+ _* k+ v/ r
/ o+ f- \% X& i( X ]6 j我的问题是,在每个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中的数值,不知道会不会有什么不妥。+ A; Z; b3 q- U, o# }- l2 {
, O: _3 F9 B: Y1 I; D1 rbegin P_read arriving+ Q/ E6 t* ]' q; m+ E( B
while 1=1 do begin
7 x& S) z: _' P' @ read A_tote from "data.txt" with delimiter "\n"+ B! j, X5 x4 D' B
read A_time from "data.txt" with delimiter "\n"( \$ k k6 Y" ]& r- p' V- x3 Q
read A_leave from "data.txt" with delimiter "\n"& Z( w2 c5 [0 Q1 }- ?" S* e1 T
read A_picks from "data.txt" with delimiter "\n") g6 m7 U% T: E m9 O
set load type to A_tote
7 q: U/ i( Z6 | if A_tote="tote 1" then set A_induct to 1
& T. a, M# E4 T6 L' A5 Q else if A_tote="tote 2" then set A_induct to 2
# G. ~2 S4 X4 v% t* \ else set A_induct to 3 % J2 J% p' g$ M `
set A_i to 0' s9 |' v* E; ^: }9 R4 s' x/ \3 r
clone 1 load to P_induction7 s, d8 A9 R) u
wait for A_time sec/ s3 I* w/ Z, K9 o4 a& u, E
end
& I0 A& q& B. D* u1 n4 A! r! ~end
- J/ j7 l8 V0 ]- h* N" N9 j7 |( i4 Y2 c" z5 A! b8 h9 v
begin P_induction arriving
. E' j7 D2 f g if A_induct=1 then clone 1 load to P_pick1
8 c. \2 x; @7 V else if A_induct=2 then clone 1 load to P_pick2/ s( h' W, D9 g( H# W9 W# a
else clone 1 load to P_pick30 w4 o0 V: m5 C4 d1 _8 {5 \
end
$ ?. | R% E3 z& f; K
8 ?2 n+ K1 V1 c1 G9 R3 Z2 cbegin P_pick1 arriving
7 W0 J5 G( n7 }) T/ {/ q set A_i to 1" u8 z: d J7 \& O* M
move into Q_induct1
$ D( `( m4 Q: k$ A: q3 M move into pickaisle.induct1
5 b7 n. r; _4 [9 U while A_i<=30 do begin+ M0 Y( o: j8 e* k( d, P7 I/ e
travel to pickaisle.con(A_i)3 a. g. U% T8 h/ Q2 Y+ D1 F
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
" q% a7 E% `' D' d2 X else wait for 10 sec
- U0 i# T: V: R R: z; h1 U S+ e if A_i=A_leave then send to die
1 N- A4 ]1 K& R0 ]2 n$ h0 x else inc A_i by 1# \5 L/ h4 Y/ V6 V# L1 p& O) _
end
0 E6 X$ _; F& E5 R8 yend
6 `$ _, x6 ?: Q4 {# |/ z, E! b' K. f/ b) o. ?: _
begin P_pick2 arriving' b8 q( p+ D2 e' W5 N
set A_i to 11
. U; @, j" ^; B2 [/ ? g) V" d8 D move into Q_induct2
0 g! z( O# E- j; K. V move into pickaisle.induct2/ w( v/ A6 I5 ^/ L9 L; `" |
while A_i<=30 do begin
( B( _8 e; D. D N2 a travel to pickaisle.con(A_i): l: T; \/ r! l( Q
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec5 Q9 C6 E% B5 p6 o( K: |
else wait for 10 sec; k: M6 j4 L* ~/ K
if A_i=A_leave then send to die/ D* K, _6 M5 T9 i
else inc A_i by 1
: U$ @: O4 s; T. K2 l) v end
% q; ~7 I& p, X& A8 K) Gend4 t& d$ F- Q8 l+ V9 P2 j
$ q5 T4 ?! g- R3 l0 a* a! rbegin P_pick3 arriving) M6 O( |% J4 M* F* R1 L9 l7 K& m
set A_i to 21- W- Y" E1 r% F- }# q- ]
move into Q_induct3$ {0 R; s0 c! G' b) H4 }6 m% `
move into pickaisle.induct3
% c$ U* D9 O' u' {: O, s# W while A_i<=30 do begin) l8 o% F" ~ |2 h: q
travel to pickaisle.con(A_i)1 G1 A9 V: | H* r. ?; [0 w* O; e
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
5 M' _; ` ~3 i/ A% K else wait for 10 sec) m: x- G B* A$ ]# J
if A_i=A_leave then send to die
- @$ N5 j9 }! W9 K3 `9 L else inc A_i by 1
; s& R8 ?5 G% i( c/ b1 c9 d end
4 L; u0 B* E) m8 Q. b. E% zend |
最佳答案
查看完整内容
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,其它按你的 ...
|