|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢% f4 B8 D' I9 Y8 [" ]
! u- \2 S8 I" l @1 h7 u
我的问题是,在每个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中的数值,不知道会不会有什么不妥。! m1 V5 w( B- R) F2 [
9 L9 j* {, E J9 G' xbegin P_read arriving% U; W, h+ f7 E" N9 @/ g
while 1=1 do begin+ G2 W" ~- i6 Z8 k$ Q: K, }
read A_tote from "data.txt" with delimiter "\n"( G; f/ b9 V; C" i0 j# @
read A_time from "data.txt" with delimiter "\n" D0 g* H' v* k
read A_leave from "data.txt" with delimiter "\n"2 U+ f+ U) B6 j' i! Z1 C
read A_picks from "data.txt" with delimiter "\n". l1 c3 S" @9 B
set load type to A_tote) n0 k5 X+ u8 c' v4 W
if A_tote="tote 1" then set A_induct to 13 U+ J1 f3 K# P/ h0 n2 [6 }6 Y+ T8 } m
else if A_tote="tote 2" then set A_induct to 2
; f5 ~; l- e0 ^6 T; v5 b/ J5 } else set A_induct to 3 7 I* x- E( F* c+ N9 ?7 [
set A_i to 0& }/ o' P9 K! u( ?/ ~8 |' i# m: t
clone 1 load to P_induction' l6 O! V. M, Y6 d; p
wait for A_time sec+ f4 a- W1 ?( y7 @
end
3 s7 O+ [. z5 ~, r @0 {end" p3 A, M& p5 ^+ m5 R0 [
& O# A/ O. H0 {9 N
begin P_induction arriving) J! g8 s$ V9 w: t2 p3 ]/ j+ N
if A_induct=1 then clone 1 load to P_pick1) X: B% C: v# T: @" K
else if A_induct=2 then clone 1 load to P_pick2( l% ~5 N3 g+ B6 Q0 v% X
else clone 1 load to P_pick3
+ ^, T8 k5 I5 Eend
' p6 b) g1 G: [5 ?2 E( C) j; ^! q' f# [4 I
begin P_pick1 arriving3 c$ D0 _" n& z& ]+ Y
set A_i to 1" I4 B' g9 g% E( R
move into Q_induct1" @1 u5 H( X: T, m* g2 V
move into pickaisle.induct12 k+ c% y& C" w9 v, Z
while A_i<=30 do begin: t Q2 t# o. c% l
travel to pickaisle.con(A_i)0 e, M. C% o+ Y" G
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
' \4 S, P/ z' Q& @# a else wait for 10 sec) {1 S! C+ A. r* n& ?
if A_i=A_leave then send to die
9 h; I6 ?2 U2 X+ o5 y! S else inc A_i by 1
4 n- N H. D% I; A9 A( S end5 E0 r+ q8 M( D2 m
end
6 V/ k; S9 y6 S, y9 p* `+ _8 T# t6 V( z0 w- e
begin P_pick2 arriving
: c$ ?; l* p9 H$ @2 A set A_i to 11" @9 h+ B5 A( X' O, K
move into Q_induct2+ ?9 ^7 T/ e$ o+ P
move into pickaisle.induct2/ P' _) Y+ o( `$ G, d; ?
while A_i<=30 do begin
& ]" z$ s: Q" i* Z5 |9 r0 T3 P& g travel to pickaisle.con(A_i)
8 d* |2 @7 l2 C9 x) R+ e% h' H) L if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec4 Y. E; J( e" E$ c2 F F5 e2 R- J
else wait for 10 sec5 ]+ r/ U* d8 \; v7 W
if A_i=A_leave then send to die
1 T4 J n) l8 t E3 i) p else inc A_i by 1# O$ H# F9 j+ l2 K% B
end
k6 x& a. l# D4 Dend
9 k L0 Y4 `' t" v% ^6 a/ K: m7 l% n( x) q) N& {! Z7 X: E" w/ d3 H* T
begin P_pick3 arriving0 [2 q4 h: [" X+ T4 N
set A_i to 21' ? T% F" r7 i
move into Q_induct3
; k+ s" X% v5 i) S, H move into pickaisle.induct37 O+ {4 P$ Y3 z6 R3 L9 Z
while A_i<=30 do begin; |" v0 g, d8 L& ~: E
travel to pickaisle.con(A_i)( K3 r" u7 O1 `7 y
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec( w" P" F- J& s$ X
else wait for 10 sec
: [) t( ^# h+ D o7 r if A_i=A_leave then send to die2 I* D& F# X/ ]3 r: W8 W* s _
else inc A_i by 1
4 [+ D I& F( u end
( y4 W% I! V7 l$ qend |
最佳答案
查看完整内容
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,其它按你的 ...
|