|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢8 B5 e/ b, \. Z" ~: b% ?; T
3 e9 A0 \5 k# e% I: K我的问题是,在每个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中的数值,不知道会不会有什么不妥。1 S( j1 ]2 W; Y& a6 _
. E% ~' u$ i& n* O& s6 S' K+ W
begin P_read arriving
: [9 ?/ g, J) h3 [- o0 F- q while 1=1 do begin+ u9 ~$ @4 X, h' F0 B! S' t8 i
read A_tote from "data.txt" with delimiter "\n"
7 J- m$ ]! \8 |# p: P& k read A_time from "data.txt" with delimiter "\n"5 z# t' r, s$ y7 L- R3 B, Q5 m+ {$ |
read A_leave from "data.txt" with delimiter "\n" F0 y* H, N- _, X7 ^
read A_picks from "data.txt" with delimiter "\n"
0 ~/ q' {/ j# v8 I set load type to A_tote
4 Q' p$ x. r: T1 W) [- ` if A_tote="tote 1" then set A_induct to 1. B% U# }0 q% ^# \$ h
else if A_tote="tote 2" then set A_induct to 2
, i8 m7 |$ ]1 }' W6 I/ _/ T else set A_induct to 3
, p0 b% J3 M/ b" {+ r/ } set A_i to 02 O, h4 K4 I! f3 N' O
clone 1 load to P_induction
( r/ |7 i+ T' } wait for A_time sec6 `, l, R7 ~9 \% E2 J; J8 o: y1 l
end; T5 ^. [, M' r" e: D. ^1 O" c
end$ z8 @. S U! j
: X0 g8 G* S: s2 t% ?- N) ]
begin P_induction arriving$ e7 H2 {3 r Q' o+ C6 @
if A_induct=1 then clone 1 load to P_pick1
: e7 ^# N$ P4 q2 D! A else if A_induct=2 then clone 1 load to P_pick2
4 q& |8 S2 Q# e7 v7 k1 I! @( o else clone 1 load to P_pick3
9 \ t8 ?* j0 ^0 R% iend1 x+ u! w. R' ~; ~; `
( n9 Z1 o9 A: z2 Y- ~1 m
begin P_pick1 arriving
X7 ]$ z" ~" e6 a! D e) F* s set A_i to 1
1 S: T% ~) w2 u move into Q_induct19 N+ X0 F8 Q$ e
move into pickaisle.induct1
9 ^$ q, Z9 D' A9 a) k5 b' ]( k: j while A_i<=30 do begin
& W8 {, J- ? Z- @, T3 A1 @4 U- } travel to pickaisle.con(A_i)
4 e* C1 @5 Q4 B% w. S2 J if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
: X) v* H! ~# L# l* g else wait for 10 sec
0 t+ l; l5 O+ N ?" J if A_i=A_leave then send to die
! y5 n1 f4 K$ f, d7 T/ W) F8 l else inc A_i by 14 V6 F0 T9 T7 R* i1 C
end( `. W" o7 \3 N$ v* a8 Y
end
- D* Y6 A2 X- S2 b C B
5 G/ B, \5 m. b6 x+ O' kbegin P_pick2 arriving
) _1 ?& {1 m6 @6 _ set A_i to 11
5 Y- g: R$ Z5 u e4 c& i; J1 I6 {4 b move into Q_induct2
; r4 Y8 T; a/ E2 | move into pickaisle.induct24 \- F- I y2 u" v1 Q
while A_i<=30 do begin
1 k- J! v& b! z travel to pickaisle.con(A_i)' O/ k9 W0 Q2 U
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec6 U/ t% B0 B# e0 R* s; L
else wait for 10 sec
' D" V: R {7 u if A_i=A_leave then send to die
* T' O9 z) R; s+ O% ]3 o! z else inc A_i by 1
1 k3 v4 I0 O8 ]' a end
0 ]% N3 ?3 I5 @- h5 v# vend' ~5 o' n( I! N: r j5 f: H
! j, w3 @0 a/ y: S3 {- [. |$ wbegin P_pick3 arriving4 S) X, }7 C7 |8 s+ D: K: H3 o
set A_i to 21
& s- x8 T8 t, ^+ ] E move into Q_induct3
7 R, Z( h6 r1 Q3 ], l move into pickaisle.induct3
- p$ w Z; a7 N8 m F& D while A_i<=30 do begin
' t* I) y$ W) g) W travel to pickaisle.con(A_i)
, y# y% X* W0 Q# {0 C if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec" N% A: `, l; }4 I
else wait for 10 sec
" u/ `' q' _) k6 d$ H; x if A_i=A_leave then send to die
* G1 f9 N' b% H! L2 a7 b! L* i8 v# W else inc A_i by 1
1 l z+ W8 d9 Y% E( E+ [* o8 {$ K; G end" e% K8 w5 O& s$ j0 @- p2 o: ?1 `
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,其它按你的 ...
|