|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢8 g/ s( X- X4 E+ U8 Z
' f6 _7 U& _* ?7 U- @& B* I+ 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中的数值,不知道会不会有什么不妥。' F9 Q" ]0 ^) @( T/ `
/ n$ A6 G& Y; Q& T
begin P_read arriving4 o! I) W+ b% B) U( C$ |, ^
while 1=1 do begin
0 c' R+ L( j/ s0 b3 Z: M! ? read A_tote from "data.txt" with delimiter "\n"
" t/ u( A- \ Y8 f8 {* G) e3 S4 H read A_time from "data.txt" with delimiter "\n"7 e3 s, x- ^( m# N
read A_leave from "data.txt" with delimiter "\n". {& q3 V: ~+ P1 x' W' N4 u
read A_picks from "data.txt" with delimiter "\n", \/ _6 Q# k5 ] r: y) o* B
set load type to A_tote
5 L Y/ J- }, A if A_tote="tote 1" then set A_induct to 1
# t5 `! r5 L9 D* _6 r# w0 r. z {7 V else if A_tote="tote 2" then set A_induct to 2
+ O1 {2 o: i+ d' F2 ~) @' Q else set A_induct to 3
# C$ f$ }* x0 o9 R( ? set A_i to 05 l/ u2 }' V& _+ k5 d: m
clone 1 load to P_induction
- A8 e6 V$ t" e- [1 L wait for A_time sec
* a1 b! y* T6 f5 L5 k, }8 i end
$ p+ w8 H' c& B, bend
& M7 {* y) c2 R" }: t% O8 K+ y0 V# A: H/ K" Q
begin P_induction arriving" ]% r* T- [: U# ^( x' W
if A_induct=1 then clone 1 load to P_pick1
. k2 O5 i6 e* p7 B# L else if A_induct=2 then clone 1 load to P_pick2& @5 }( u( r" ^0 t' w. l( k
else clone 1 load to P_pick3
" y) y5 ?" R) N9 K. l9 `; k Aend7 G! _7 `4 }$ h" }; a6 Q6 [% U
% f `* n9 n/ C ^/ r
begin P_pick1 arriving
9 O+ f# \ l# q2 f5 `, C6 \ set A_i to 1
7 C0 }' _" H$ x3 M* n A# |2 e# ` move into Q_induct1$ y' `% }' H! K7 |6 @4 @
move into pickaisle.induct1
& V3 { z o; k5 ] while A_i<=30 do begin
& y% w9 |6 t2 F( o9 n* c2 l travel to pickaisle.con(A_i)& d. ^; E$ a1 z4 F- O" g% N+ P" t5 ?3 {( [
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec1 @) f+ R% [0 A! @ ]
else wait for 10 sec8 i$ w, ?( v% h3 f1 ] B1 R& T
if A_i=A_leave then send to die
$ K0 t2 ]& D1 ]/ ?9 c7 f8 L else inc A_i by 1* _" [! V* J7 q7 ^4 g8 N/ \ ~2 N
end
9 S3 D% J+ f7 Y3 i0 D' a0 ]end
3 ]0 x p# t2 s' q2 X
1 P, i7 R$ J% E x }; y% Cbegin P_pick2 arriving$ U& W9 K9 I5 s5 `3 R( ]* c
set A_i to 11
2 `7 S' W+ t1 Z$ @' O( m move into Q_induct2
* Z' I: Y1 K; t9 ?0 ^ move into pickaisle.induct2. \5 G- d* _+ C O* ]6 _6 D
while A_i<=30 do begin+ q! L' @! E4 V: D7 f7 y
travel to pickaisle.con(A_i)' r4 A9 G- _$ [9 ^. Z/ _. _
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec! f5 Z }! Q4 X. r' V7 t$ {
else wait for 10 sec- p2 F9 U; w/ z
if A_i=A_leave then send to die/ J# H4 ` h# s* W ?( C; a$ @- I
else inc A_i by 16 n1 _% i4 z! e/ t
end
; }5 P9 h: p1 |& v- Z$ T8 f) mend! L. |$ I# U2 ]) j' h
" G, z: y- X2 r; A3 b% {* D
begin P_pick3 arriving+ {- z# z8 _/ ~& n/ u: p, m0 y
set A_i to 21
Q, E; F- z+ C move into Q_induct30 K- X5 g6 }8 q
move into pickaisle.induct3
# \( c+ g+ _7 U* d1 ^+ V while A_i<=30 do begin9 ^) T4 m, L& U# x. z; h
travel to pickaisle.con(A_i)
B v# N' T, l2 R if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
8 [( O( s0 T" l3 n else wait for 10 sec( N% ]/ V8 j! o" {8 Z" j4 K7 ?/ m3 A, r
if A_i=A_leave then send to die0 o( v1 p3 U( V6 B1 Q$ n& o
else inc A_i by 1
; S. e% {: |3 L, e: t" S( c end$ U2 |$ q) v. m+ B: a% o
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,其它按你的 ...
|