|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
6 c9 ]5 [, n) ?! |- E) q
3 Y" z& L/ w5 f# n我的问题是,在每个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中的数值,不知道会不会有什么不妥。
. ^5 \- q, m- }6 H# {4 b0 V; O3 x. v0 G" C- z: ?' A
begin P_read arriving% W/ w6 F. k- l8 V' n: w
while 1=1 do begin
5 Y, b' C5 A- @; m( D read A_tote from "data.txt" with delimiter "\n"' p7 S' y( ^- L; u1 K+ n' b
read A_time from "data.txt" with delimiter "\n"6 R& D) u: M; m2 m* t9 g# P
read A_leave from "data.txt" with delimiter "\n"
3 C, u2 S6 N5 c2 G/ E7 c1 ` read A_picks from "data.txt" with delimiter "\n"
4 N# e. H: o' W set load type to A_tote7 H* q4 M' ?( Q
if A_tote="tote 1" then set A_induct to 11 c- Y' S, w% x, O/ F
else if A_tote="tote 2" then set A_induct to 2
5 W- s% `( |0 u o" v else set A_induct to 3 ! b+ r" {: r F6 g g. |* a
set A_i to 0% {. ~) L9 H9 S" ~
clone 1 load to P_induction0 E+ N. l! v3 B/ Z! }$ `
wait for A_time sec# ~: R8 ^$ Q0 d) u5 ~* |2 c- f
end2 ~2 B, \# f# T& P0 A; A
end0 ~( `- e6 M0 X& L% f
8 X' b* q8 R" B, b6 U: P/ h$ xbegin P_induction arriving
( @# T" F- f! j if A_induct=1 then clone 1 load to P_pick14 V" A+ S7 p# v* b3 |6 M( @& V% R
else if A_induct=2 then clone 1 load to P_pick2
' H( s3 {% Q- s4 J else clone 1 load to P_pick3
5 T# E5 y5 P9 _0 `' s4 ~3 Uend
, a& R! L- C/ `) K4 K- Q1 J" r" }
5 B" V" I! i: Ybegin P_pick1 arriving o9 L' B5 } v( w
set A_i to 1
) S) S3 x. s* a; B, S move into Q_induct1
/ F" b0 T3 L+ ]4 v4 s6 z& s) | move into pickaisle.induct1
d# g z7 H( B6 w) ?7 u7 j3 \9 o while A_i<=30 do begin
, @+ c$ `% u8 u( `6 e+ | travel to pickaisle.con(A_i); w8 i6 k4 k3 |5 i1 x f
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
S! x0 a8 w# ?+ {& L+ Z. G else wait for 10 sec
0 u, h& r$ ]6 H# j V& ~ if A_i=A_leave then send to die
. s% Z) _/ X0 L6 H0 ?4 t else inc A_i by 1
( u. ]5 s6 Z7 z# D; i+ r' ?+ N end @6 _! l% e- L, g
end
+ p- i2 m7 h! p' ~4 L8 c+ W2 _
2 d' a. f9 Y' T8 ~begin P_pick2 arriving
8 p1 H: d2 ]: U( x& I. v set A_i to 11( n1 a2 V, H6 w9 p( H/ S
move into Q_induct2
1 A. U; t$ _( u( q) \ move into pickaisle.induct2. E8 E8 ^6 v* }- Q# o" f
while A_i<=30 do begin
1 S! f3 V }. v8 Z/ P' v; O travel to pickaisle.con(A_i)
" j4 _ q! g9 L/ o) s% O if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec! P' A- c/ R. K$ y: \( g- [
else wait for 10 sec3 u0 Y' C, D; M9 X3 D) j
if A_i=A_leave then send to die
8 P9 n- o3 S& P3 s) e7 f else inc A_i by 16 D! \/ E7 D8 k# N5 O
end" P! v9 X& w- {: Z! i
end1 _' G* d& v6 d$ e
9 {, g% ?9 y- X- y
begin P_pick3 arriving
" z; K+ z5 C4 _) P set A_i to 210 e" w M3 T& c- E+ K( Y/ J
move into Q_induct3
& p# \ z. e9 @ Q7 y move into pickaisle.induct3
( `% _7 m1 e! o. `" H7 R while A_i<=30 do begin7 [3 R5 X7 [! @7 A
travel to pickaisle.con(A_i)
+ F) v9 m$ r1 e' k6 _ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec8 p& z' K. D( V$ r8 ~% [! h
else wait for 10 sec0 `4 J- Y! m- G# h: g2 O7 m& W5 z
if A_i=A_leave then send to die, h* D7 [& f- ]4 T6 t" K
else inc A_i by 1
. h v n) a0 M8 j2 l% `0 w# c end
+ a0 [* p2 o, H, rend |
最佳答案
查看完整内容
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,其它按你的 ...
|