|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
2 a" C& Q0 D# L3 F, t
. Z& i5 t3 o$ F# T' n/ j我的问题是,在每个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中的数值,不知道会不会有什么不妥。
+ }& [4 Y# @0 b& z
! Y5 ]. j+ |" y& ~begin P_read arriving7 I. `: A; Y+ e3 e8 f. q N
while 1=1 do begin
+ v& _$ |$ h, ^' g! ^6 w: u read A_tote from "data.txt" with delimiter "\n"
/ c. ^( i i$ s$ l7 t. D# r read A_time from "data.txt" with delimiter "\n"
2 j! e, H/ i; p* J0 b read A_leave from "data.txt" with delimiter "\n" M) n+ ?; [0 T V+ B/ V
read A_picks from "data.txt" with delimiter "\n"; e4 ~1 k- M Q1 p# I% k1 N
set load type to A_tote
5 m8 E" _0 G& ]' _( v if A_tote="tote 1" then set A_induct to 19 |: k, f# O7 H
else if A_tote="tote 2" then set A_induct to 2
$ ^! @9 M& a0 R5 w G' G else set A_induct to 3 9 j6 a( R0 ^- _8 f$ z, g u) v
set A_i to 0% _, _* h1 [* Q7 h3 f' l
clone 1 load to P_induction
% B2 L7 }/ c4 S h) g4 O8 R/ c# E wait for A_time sec
4 Q5 `4 R8 D: E) O |/ R$ ? end
* S" s* v* D6 W4 J( Uend/ q2 p: O2 t1 i! U- L6 z) }7 t
9 J9 ~1 L% _- i% a7 W$ R
begin P_induction arriving
' G1 s7 F4 D8 ]: \. Y% z# l* j/ W) ~8 z if A_induct=1 then clone 1 load to P_pick1
3 J/ I% |3 Y. O z# F ] else if A_induct=2 then clone 1 load to P_pick2
: u1 Q2 _4 W& o+ r0 h, `3 G else clone 1 load to P_pick3
( S9 A/ l/ ^8 C- Wend `* o% @0 e" A" a% Z
( C8 A% x4 l8 j% f6 P+ Pbegin P_pick1 arriving
0 q1 Z, q/ [& W0 ~0 Y" @! B3 p set A_i to 1* E) E8 I6 \- u
move into Q_induct1; q/ ~2 c8 b) r# K
move into pickaisle.induct1
: G( I @1 g9 U( W( w) p while A_i<=30 do begin6 @3 ~* ^7 X7 P! F+ f
travel to pickaisle.con(A_i)
5 }+ M1 m% S5 e# f: ~ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec& h u1 v, c/ c
else wait for 10 sec8 d$ O$ \# M2 G
if A_i=A_leave then send to die
$ `: j! ^0 A$ E; O7 p2 [+ Q else inc A_i by 1+ T9 E; v v' B! f' g
end! p$ C9 c+ J" o2 K! p9 O: C9 B
end
/ m) T/ b3 q# I% Z
0 M [* N- h4 R0 x: U) ]begin P_pick2 arriving @# w4 M$ p3 C1 ~! D: N. R
set A_i to 11; _6 Y; f! B6 {$ I- T5 S
move into Q_induct27 h+ x, i& e2 J
move into pickaisle.induct2/ v- b( l' U! O" o( r. {/ B
while A_i<=30 do begin
" f4 s# _& D' Q& @/ T5 m9 } travel to pickaisle.con(A_i)1 @3 z1 p" a. ?. p! f( i8 {
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec+ L. Y& m' [. o4 o4 h' R
else wait for 10 sec
* J3 }. L% v6 x: K1 {0 k if A_i=A_leave then send to die3 @& {" i8 b: ]- [% m6 _
else inc A_i by 1
9 i$ N) y7 L1 Z J end) S$ y) _. h/ v$ `$ U# u5 Y+ L
end
) d# p4 V, J4 @) m+ j# L3 {- A+ y. X) P7 A: N# f8 [/ o
begin P_pick3 arriving
3 G2 P4 I) ~! p set A_i to 21
4 E) {2 i( \. x, H move into Q_induct3% ]" e0 U/ G v; D5 G
move into pickaisle.induct3. f" I9 z2 @$ c s8 D
while A_i<=30 do begin
0 N8 t* E- L4 R: C% C: k travel to pickaisle.con(A_i)# L6 \, p+ V7 b6 ?
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
' q5 r6 d& I8 d+ v- A/ \: I* c else wait for 10 sec8 h9 r3 f# p7 T$ a' L% M
if A_i=A_leave then send to die, x$ z" e" V/ u. |0 R$ p
else inc A_i by 12 j4 l& \! t+ W" {
end
& c/ e0 d/ U& x9 Aend |
最佳答案
查看完整内容
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,其它按你的 ...
|