|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
: t! n! E$ G6 b0 |+ c5 F l3 T1 h1 k5 t% ]
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
# J5 f6 H7 n/ c8 g6 \3 A. W; ?: H8 s
begin P_read arriving3 H0 G% }5 ]/ m+ ~. ]4 w
while 1=1 do begin( t. Y) c& \: w
read A_tote from "data.txt" with delimiter "\n"
- Q: r+ M, w! \& F, k read A_time from "data.txt" with delimiter "\n"
: G* ]$ U `- N4 @6 {% o: e read A_leave from "data.txt" with delimiter "\n"! ^8 c# p5 x% h9 g
read A_picks from "data.txt" with delimiter "\n"* G+ c8 Z8 i% |6 P z* {. j: E: t" F
set load type to A_tote
' e: o( W- Y/ @2 \0 k if A_tote="tote 1" then set A_induct to 1( R) x2 M' ?4 t* d6 s# V% K; q
else if A_tote="tote 2" then set A_induct to 2
0 n% f1 F. X# C% T, L( y3 U8 W: d else set A_induct to 3
. U h' g: Y" Z: } set A_i to 08 G* ^) l# V3 t5 D
clone 1 load to P_induction/ f. y* L2 E# E4 |+ q
wait for A_time sec. v3 i$ T" B; w+ u( f* ^- Q
end; I& ?0 U4 v0 l- Z
end/ ^$ z* b' _& g
( |% t. w/ a! }3 H( w+ h0 F4 G: vbegin P_induction arriving4 i" d9 {5 Z* O
if A_induct=1 then clone 1 load to P_pick1
, |& d% {) C1 ] else if A_induct=2 then clone 1 load to P_pick2
5 N5 B1 O! ?' B2 f/ ^ else clone 1 load to P_pick3* ^; E+ t- t" O2 B
end
0 X( p! u( K) [5 o7 i$ v3 K2 @3 i- Q2 q5 z6 l
begin P_pick1 arriving
) B3 A& s. _' x, `* x; _ set A_i to 1
& x0 ?; o$ i: U: a move into Q_induct1
0 P, r; t. }" }: m move into pickaisle.induct16 A8 |+ G; l& ~% `8 E& k
while A_i<=30 do begin
4 V" L0 k* S! b travel to pickaisle.con(A_i)
# U) V" i; z6 O if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec* f7 K" f5 t9 ^
else wait for 10 sec
! C+ h7 l, ?3 ^& r' I if A_i=A_leave then send to die" Y: ~2 H9 ~1 U; Y/ X
else inc A_i by 1
) b+ Y$ n$ z' K% L4 E4 v, U) ~0 O end
, F4 z& i# V+ s$ ^6 K. i5 |end
+ d* D& {0 r5 [0 U* q }9 j& ?4 S G( x' v- {
begin P_pick2 arriving2 V" K; S/ i/ X7 n* G( h
set A_i to 11* Y1 y/ Y" a0 c& |, [
move into Q_induct2' R. y# M# ~) J
move into pickaisle.induct2
6 ^( Z' Y5 \9 n/ y3 P while A_i<=30 do begin+ u, Y3 }/ o' i5 n0 A
travel to pickaisle.con(A_i)
. F7 \4 m6 r# U. g) |8 }1 |+ z if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec; n- [) S5 ]/ L
else wait for 10 sec
. {' m/ S7 A" ]3 C if A_i=A_leave then send to die0 J+ B! F3 W5 p! }- @. c
else inc A_i by 1+ Q$ d& _# F. |& b/ M; m+ }& r& ~& Z
end
; |2 b5 Q4 H" a2 \$ L* Tend
& N' I7 N2 N) x2 V- h
; e) o6 _0 M ?: wbegin P_pick3 arriving
+ N5 |2 k! C5 l# E8 s set A_i to 21 |- s9 B% c4 v- _$ Q+ S1 P
move into Q_induct3
* W) e& B1 M" h [9 Z9 Q" l move into pickaisle.induct3
3 S7 G4 N2 R$ B# [ while A_i<=30 do begin- M- q& C3 R2 ]6 R* l, K
travel to pickaisle.con(A_i)5 u$ [& y0 P5 E/ y( ]
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
( v8 \ G# g: V9 @# u! v, b else wait for 10 sec- j' F) m4 i- V; I& k
if A_i=A_leave then send to die
6 Z6 F0 f: y+ d, T9 \4 e else inc A_i by 1
0 x% J* J- _1 y end
2 Y: ?+ V2 O' y- }7 h3 ]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,其它按你的 ...
|