|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
& i+ c" c4 l, K6 q+ c" K8 J, d* \9 ^8 X/ l3 B1 b# r) R* T" c0 T. v
我的问题是,在每个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中的数值,不知道会不会有什么不妥。$ m* T+ j* I* z5 d6 s a8 A
: E7 ]0 d7 u6 n8 w8 I+ R9 J0 H
begin P_read arriving
8 c3 x% D' o! b9 M, v while 1=1 do begin( H) ~9 m$ M! |+ y' w" R- i
read A_tote from "data.txt" with delimiter "\n"( R* X. R4 ^; @. O( Z9 s. f
read A_time from "data.txt" with delimiter "\n"
, O R3 k- g" W% x& H read A_leave from "data.txt" with delimiter "\n"" x( Y* Y* F' i; d8 j# E$ ~
read A_picks from "data.txt" with delimiter "\n"
( M! J( H9 I1 W set load type to A_tote
, z2 O' i5 C$ d/ c if A_tote="tote 1" then set A_induct to 1
& z; T6 u9 `! L else if A_tote="tote 2" then set A_induct to 2
/ K4 i" n; F9 ~$ f+ ^) j else set A_induct to 3 6 ?5 J7 Y2 V B3 \" ~9 |
set A_i to 06 I/ z# S4 A* r$ I
clone 1 load to P_induction
; w+ N ?+ _0 Z; u: T( u. S1 C( V2 r wait for A_time sec
$ L( G: V+ [; R y8 @ ]6 d1 d end
7 d' J' o8 a) M: W$ J3 A, H7 eend
. G4 w3 @. y( L L& W9 Y8 ^* K( P; X9 H* q& n: J/ D
begin P_induction arriving
6 Q1 B7 O' }: M2 F# N3 E if A_induct=1 then clone 1 load to P_pick1
2 f" o3 Y7 s( h1 { else if A_induct=2 then clone 1 load to P_pick2* c* e2 m8 ^; i: p; o, @8 n2 V
else clone 1 load to P_pick3" T, z# J$ Z" i
end: h3 d/ r& {; ?" j: O# h
; W6 P w5 F! i0 a) P3 u3 O1 fbegin P_pick1 arriving4 x; C5 i) S8 w( q D
set A_i to 1* W1 s* |+ e7 H7 ]1 o' S$ W9 b
move into Q_induct1; Y/ i+ c; V- L, t5 Q1 U
move into pickaisle.induct13 M/ B. \6 O, C1 H
while A_i<=30 do begin6 h5 a2 k" j1 [2 v& h! _
travel to pickaisle.con(A_i)
: K2 S3 E- M) ?# q if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
* y1 j. x# x0 R3 J; U! a else wait for 10 sec
, L. A$ j5 @2 w" J; ?) T9 N6 [ if A_i=A_leave then send to die1 n% v# N6 q2 Z7 _* v
else inc A_i by 10 q3 j! y u, e' u6 _: [/ P% K
end
1 ^; W+ g& V5 Yend
5 t3 Q, a, C, ]# g2 u
4 X4 i- r Q$ H5 ~4 t$ Dbegin P_pick2 arriving" h ?+ G8 k l, X( M7 G# m6 [: W0 k
set A_i to 119 f$ g3 i6 U5 ~5 a6 F: v9 ^6 A
move into Q_induct2 ]9 Y) _9 c2 `$ o
move into pickaisle.induct2" z( [# j; h" Z
while A_i<=30 do begin
) _/ B" X# Y$ x" U travel to pickaisle.con(A_i)' R7 ^2 t6 F: W7 N( P9 }) e9 Z
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
1 ~; }; r+ V* t2 v/ a7 y else wait for 10 sec* H, u0 O. H( a& g1 A9 a
if A_i=A_leave then send to die
9 q! H" u8 {- b- i/ \, K7 D0 R: `) ^/ h else inc A_i by 1
- U" @# j+ {; n5 t$ u) I end. X. C' @2 W4 `" l
end. X. f5 J9 `$ F P( }' S
9 X$ Z% j! ?8 e6 H3 @begin P_pick3 arriving3 h* D, f7 c+ D# q% R& @( N* V
set A_i to 21
8 f6 a$ v( ~0 ^* k, m+ T move into Q_induct3, W! W( o. C* ^; f5 |) ]& k
move into pickaisle.induct3# Y7 [- Y! h* }" |& o
while A_i<=30 do begin, J% x: r% |! `* D# b# u6 |
travel to pickaisle.con(A_i)
0 j b% L1 w! v' ~! ~ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
1 }8 r$ H& r9 U, P5 T+ x else wait for 10 sec8 d, a+ I3 l |% L S7 y
if A_i=A_leave then send to die3 A6 Z$ L3 d3 G7 \; }. G+ R7 z0 \) n
else inc A_i by 1
1 p5 e( F8 V/ I end
/ f( J1 ^4 D2 s; Send |
最佳答案
查看完整内容
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,其它按你的 ...
|