|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
g9 ]! f+ P! i! f. B2 @( P+ m3 A7 w4 m/ ~
我的问题是,在每个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中的数值,不知道会不会有什么不妥。' ?6 E( ?8 h; V" c) b% S
9 u' x% Y: W1 B6 l2 g
begin P_read arriving
4 J. \ j6 N0 `+ u& h while 1=1 do begin- N# v; }: D" v8 e
read A_tote from "data.txt" with delimiter "\n"' U% W g2 J& Y; N& d
read A_time from "data.txt" with delimiter "\n"& u4 h o7 c7 B. a) x
read A_leave from "data.txt" with delimiter "\n"; `: J6 V/ Z* T8 i4 V/ ~5 N' k1 n
read A_picks from "data.txt" with delimiter "\n"
% b% N# `9 @- }% m( r set load type to A_tote
G4 x8 F# h* ^ if A_tote="tote 1" then set A_induct to 1
5 C- k3 o! A+ H z/ N0 l, t else if A_tote="tote 2" then set A_induct to 26 d6 B8 C9 [5 z# Y
else set A_induct to 3 3 H: j! e. `2 L, C! E% |3 a
set A_i to 01 \7 x: }" c4 Z
clone 1 load to P_induction
$ v% g! P+ d: m- @8 C* e% r wait for A_time sec" q l8 O5 b# W' `2 j7 E0 J
end
* ~1 Q9 S5 ?$ |% _0 h1 ~ Jend) e( T" C0 |) B/ X; b9 O' l
% _) ]1 u; x' B) Cbegin P_induction arriving
^8 U5 F5 V5 Y* J8 ^/ ?$ z5 a3 g2 [ if A_induct=1 then clone 1 load to P_pick1$ k7 b, N+ k. o' d1 v+ N2 B4 i( u
else if A_induct=2 then clone 1 load to P_pick26 ~" z, m8 [1 T* P
else clone 1 load to P_pick3
/ V' W5 f* Q3 t6 n& Send2 g6 w# t3 M9 g: z+ J$ D1 h- r
/ F1 z5 j F4 i* O
begin P_pick1 arriving9 Z6 i7 @8 J6 ]' h% U* s
set A_i to 1
6 I6 M9 `" e: ]1 q2 j move into Q_induct18 v( G7 w: S$ G( n1 o
move into pickaisle.induct1
$ c8 q' U c; ~ while A_i<=30 do begin* i4 I+ O) z. w9 l) C
travel to pickaisle.con(A_i): K" p0 y+ e; c' q0 ~4 f4 h; P
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
2 ~4 V3 {# x! W# {3 a* a else wait for 10 sec7 Y+ Z# q, p+ f3 c' G* ]
if A_i=A_leave then send to die
. S) [) v1 R% S2 h6 E else inc A_i by 1
. g% `' I* R1 o# T end3 D2 j3 g% l M0 K( j: | F
end
' b4 U/ X& T1 {6 e* G+ o8 z' V# d! D
begin P_pick2 arriving6 [0 t! v! i9 o7 ?
set A_i to 11* i6 M: ?. F$ o0 @6 r
move into Q_induct28 R0 z9 Y m% L
move into pickaisle.induct21 b* B' Z1 H7 K
while A_i<=30 do begin
8 u* [6 L! j8 V5 _% A& A9 k travel to pickaisle.con(A_i)
3 [" }+ v, E! w/ L+ [ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec( X# o/ ?/ H4 [' g; W1 W
else wait for 10 sec# D, O5 r3 X; B- w/ B4 l8 |9 X" k
if A_i=A_leave then send to die8 o0 [5 J [. ?
else inc A_i by 1# i" q# c/ c9 i3 b
end" h) h* ]0 p. y
end3 Y% U- L+ j3 k! X4 o
& U: C* ^5 q( x" D* f& X7 o
begin P_pick3 arriving" @7 W2 N! a" h7 y8 B; j7 z
set A_i to 212 b! q! _5 I1 g6 x" c) K
move into Q_induct3) Y* C: `" u z
move into pickaisle.induct3# }& X' N& S6 c0 S
while A_i<=30 do begin, q, e# Y6 G7 s* r- B0 k9 w
travel to pickaisle.con(A_i); z# ?% A d% K" B& r
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec# |/ ?5 C! A4 _5 |0 ~9 N; C; U
else wait for 10 sec
G! ^& [+ V% r" `# [ if A_i=A_leave then send to die% _8 ?; F# Y* x% H. x; _5 ]
else inc A_i by 1
" s! h9 J) v/ ]& i" D! B+ r3 K, _- J# o end' {6 q8 V7 N9 c* V- Q+ o) z
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,其它按你的 ...
|