|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢* D* {' n0 C9 K& ~" K x
1 q" c$ e, Z& s& z: Z2 H- V! ^2 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中的数值,不知道会不会有什么不妥。" [8 y; E1 ^% }' Y ^# x8 A3 U
# T% @ ] E$ X+ Xbegin P_read arriving
3 W) ~7 F8 {& f6 R/ u while 1=1 do begin$ M# o# {% k7 J* s# ?
read A_tote from "data.txt" with delimiter "\n"
+ ?7 m! R5 D7 g" x& t read A_time from "data.txt" with delimiter "\n"
7 m4 J# C4 ], Z read A_leave from "data.txt" with delimiter "\n"% D3 w2 N: d5 h8 q4 g& Y& d
read A_picks from "data.txt" with delimiter "\n"
/ N5 w; N0 V; E set load type to A_tote/ w5 x! X B S c, q: b$ D/ {
if A_tote="tote 1" then set A_induct to 1) r/ Q* J* s( q
else if A_tote="tote 2" then set A_induct to 24 H. {! Q# ^$ L
else set A_induct to 3 , Y$ h' T7 g7 @, y) f
set A_i to 0
% D2 {# n8 e4 ^ clone 1 load to P_induction: w; T3 |# P/ T' W' P
wait for A_time sec# _/ \: g# W: M
end' ^& U* E) L D' ~& r
end4 k" }; @4 l, B( a9 ]$ V! r& u+ |+ @
& P U& |: Y# \* a6 S
begin P_induction arriving
6 l/ h7 z, r2 h$ N3 ~% i if A_induct=1 then clone 1 load to P_pick1
8 k8 U1 g( B& B! Q# @7 p( I else if A_induct=2 then clone 1 load to P_pick2
. k* j2 E1 k7 m3 \0 R else clone 1 load to P_pick3
! ^/ ^+ Y, i$ p) @end
% T: n0 ]' Q. i9 e `8 m/ X8 h! p
2 L9 R+ t6 G* B- @begin P_pick1 arriving
, O8 R! e8 c6 } set A_i to 1; v" U$ r8 }+ R+ D/ X9 ]+ ?
move into Q_induct14 C" K( p0 n, i+ |! H0 q2 U7 r
move into pickaisle.induct1/ a, V, K [; R' Z3 I( j6 l5 f% p4 |
while A_i<=30 do begin1 O E ?1 E& L9 q2 L A
travel to pickaisle.con(A_i)
+ E) K0 R: S* \1 j9 A if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
" u8 k1 d; t1 c5 Y R$ r else wait for 10 sec
0 f6 T3 L) Q. \+ h+ o& p0 r8 p: i3 { if A_i=A_leave then send to die
, {0 y" r: h' q$ _ j else inc A_i by 1
" f2 g! m. o! S7 D7 ^; ?2 u end/ n+ G" t% h9 Q: b( A
end
( k% f1 |0 G% k* r: B
5 E0 j4 K7 k+ ~% _7 p8 c. Dbegin P_pick2 arriving( n+ W/ g% T! ^: z$ {' I
set A_i to 11. K; n# s4 F) N8 r) b+ h7 B5 `
move into Q_induct2
" S, Q/ Q7 K9 N! q7 | move into pickaisle.induct22 Y! Z" X8 `* Y v& R$ b1 @5 d
while A_i<=30 do begin$ U; ]+ [4 c) }# F* m
travel to pickaisle.con(A_i)0 e: I! S _( j* b4 o
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
, ?6 T3 q# T2 p( p else wait for 10 sec
2 t0 J" z# k$ K5 n | if A_i=A_leave then send to die
' Q1 E' u' \% a% v else inc A_i by 1
* @; I3 T8 n) [7 Y1 j& k& |. t+ i end! V7 Z4 H2 D: Q6 T! t$ Z/ p) E
end
& X/ S# Z' j3 _3 u# G5 e9 I# \5 q
% Y0 x1 Z1 d' d$ i P9 Kbegin P_pick3 arriving
! g% J" F2 [8 c4 Z) Y( M G set A_i to 21( P7 \1 A8 d9 x
move into Q_induct3
8 n( G1 c3 T3 e move into pickaisle.induct3
3 g1 I5 `9 r7 k while A_i<=30 do begin
, Y7 E$ t2 h- u- r8 _ travel to pickaisle.con(A_i)
7 v" n: p" c0 r; d I" I, K# r if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec( E3 g- o% z! u! e7 t
else wait for 10 sec8 {' O8 u0 y' _3 k3 q/ K, j
if A_i=A_leave then send to die
) V1 M3 Z, Y# A% v$ F: c$ _' z6 k6 G else inc A_i by 1
b' B! a; [- Z* Z end
3 ^; D8 ]: M5 U7 o2 f8 nend |
最佳答案
查看完整内容
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,其它按你的 ...
|