|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
, }& e* q& c& a' f
; l% Q4 z& U- u; h9 i我的问题是,在每个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中的数值,不知道会不会有什么不妥。
8 }$ z: k2 u) `) L6 \! \
+ Q% Q( u- u2 i! Y! v ~# ubegin P_read arriving, }3 ?* d u/ G+ a+ N
while 1=1 do begin+ u( ~8 H: `, T" o$ \) l3 F ^
read A_tote from "data.txt" with delimiter "\n"1 h# D- b2 h! @" v; `; [5 u
read A_time from "data.txt" with delimiter "\n"4 z% F; f& [5 b) H7 @
read A_leave from "data.txt" with delimiter "\n"
6 f8 G9 o5 u/ P6 J% d read A_picks from "data.txt" with delimiter "\n"
% q( }2 ~. |6 T) r1 g set load type to A_tote$ ^2 A; l, A" E) s
if A_tote="tote 1" then set A_induct to 1" s: G; \7 ~4 B( N/ W9 j
else if A_tote="tote 2" then set A_induct to 27 b* {5 X. E8 ]. I7 b
else set A_induct to 3
) b" k+ q4 u7 ^ set A_i to 0
; @( o7 o. j1 |3 l" h; T1 t( \: ^$ c clone 1 load to P_induction
/ M: {/ y- d4 c8 d& g+ q wait for A_time sec. t `, X" m) j9 k. Y3 h
end
$ A6 k/ g3 O5 d* l- z/ V$ w" rend
, v. f6 v* a9 \9 r- I: }9 @
8 O/ r% x0 }1 \; Nbegin P_induction arriving
, Q7 N9 }: ?; @5 ~, i if A_induct=1 then clone 1 load to P_pick16 e6 g6 ?! E: K( x
else if A_induct=2 then clone 1 load to P_pick2; Z8 W1 s, f8 c3 n& h1 h
else clone 1 load to P_pick3
- e$ g; i/ w& n, L- [2 ~end
+ X( T4 l( R. B- n; d7 t% y0 i2 W2 ?' X& J5 N7 X
begin P_pick1 arriving
' s% k2 m7 @2 n5 |8 X+ J set A_i to 1& n A) F( W/ S2 Q' [$ W# ^5 k0 D
move into Q_induct1
7 }4 A6 q2 c3 H/ p. `9 n/ V g; ` move into pickaisle.induct1
" ~4 i1 u0 j' n( c+ M0 N while A_i<=30 do begin
3 S1 n5 V( ^' }5 H) j travel to pickaisle.con(A_i)
( g6 `8 C$ R; s/ R1 A' E if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
$ w" N+ k% ~' Y/ b z5 _& h; t else wait for 10 sec
7 q+ P p$ n: \+ h if A_i=A_leave then send to die
: t: |0 h* K+ F# W. H' p else inc A_i by 1
0 Q4 X. d& T* j! S3 l8 h4 t end
. z. ` |/ h5 G+ E2 B3 ~8 y! Mend0 L" u. n: L" f; N8 q# _6 y
* d& I8 \/ U r8 J+ e4 u9 ~# G
begin P_pick2 arriving
: n& q3 q. t& Z( Z0 c. }3 X$ J set A_i to 11
; D' {# i; F1 v8 d3 Y5 Y move into Q_induct2! ]0 Z! v- k, g* S
move into pickaisle.induct2
. g9 z+ d& E& |+ l2 N: H1 V7 k while A_i<=30 do begin
0 s5 Q+ t4 ^7 U* Z ^( u% e! D+ R travel to pickaisle.con(A_i)
: `& v; J9 o+ b+ W5 m2 e( T if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
+ M; e" l2 P# k/ [; K else wait for 10 sec& D! H ?9 f: q2 y" Z L
if A_i=A_leave then send to die
' n8 s8 c2 A0 q8 v! P& R5 O else inc A_i by 1+ j8 D& F; s/ a9 n
end
( x% y: M! g- {! T& W7 F1 ]end
$ F2 e/ H& L! Z2 q' M7 c3 u$ o
+ h5 H5 G2 a7 Q, Y& Vbegin P_pick3 arriving
" o# k* V& C, j9 s$ w% l# _0 z; N8 X set A_i to 21
2 O) n" t1 A7 Y& V3 ? move into Q_induct3
' ?$ o. @& T0 r# E move into pickaisle.induct3
/ h# `7 f. e" w" p' v5 L* H/ [ while A_i<=30 do begin6 X' ~! B, o. U5 d& `
travel to pickaisle.con(A_i) ?+ b: o& w5 y k; a
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec; j) x! z; d4 g: f- d
else wait for 10 sec
/ k) T& r- Q: Z: u% x' n if A_i=A_leave then send to die5 f0 _& a2 T3 o# r# |( X6 Y" p
else inc A_i by 14 J$ S$ U% q& v3 \
end/ N2 u% L! V) V& _4 k
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,其它按你的 ...
|