|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
5 k( \: C) y1 O6 [) H6 O2 K* m: b z0 U1 t3 y, T+ 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中的数值,不知道会不会有什么不妥。
9 }) h1 z0 t% w- p, {: H, R' h
9 T3 V/ J0 d0 D7 e6 b Ibegin P_read arriving Q9 t4 K. @! ?6 N
while 1=1 do begin
) u6 r) S9 `9 r4 b& W" C. z( P9 W6 I read A_tote from "data.txt" with delimiter "\n"
6 Y' M/ Q4 h1 @ read A_time from "data.txt" with delimiter "\n"5 }/ O& j# T7 i7 d
read A_leave from "data.txt" with delimiter "\n"
0 U$ Y* H4 |6 u. e read A_picks from "data.txt" with delimiter "\n"
# o5 X6 q v- W& u set load type to A_tote- j1 |, ]! D5 h
if A_tote="tote 1" then set A_induct to 1
. P4 f! Q9 |% f else if A_tote="tote 2" then set A_induct to 2# a$ ]+ I s8 ^
else set A_induct to 3 K( ?, y2 `) H0 L' l
set A_i to 0( H5 \; p$ I6 G& T- U# D% h
clone 1 load to P_induction" H" F3 j* N# o7 X3 {) [
wait for A_time sec$ Y+ X4 h% Q ~- I) h8 i
end
! Z- b' S+ o7 h5 J6 J# Wend2 y5 L# h: R1 D6 X, ^/ o6 C
. ~5 W+ f7 ~% j1 `! u* O% J
begin P_induction arriving
4 [1 x% L3 Y* C5 Z# M& f& p if A_induct=1 then clone 1 load to P_pick1
5 a* Z" J/ @" X else if A_induct=2 then clone 1 load to P_pick2
! F5 k, F% B* A2 ]) q3 T0 ~ else clone 1 load to P_pick38 k' t) X1 K) n1 [$ w
end
) A/ u- n/ i4 z4 L0 J* W) i+ B( t2 e& Q5 u: {
begin P_pick1 arriving
2 S, F9 C7 n% J' ]9 @+ F6 D set A_i to 1
. r/ g6 R( _4 ?" n0 p E, U! h$ A( i move into Q_induct1
" Y, s( F. _% m; S move into pickaisle.induct1% U2 U! { a% ~/ H$ l i% z3 M
while A_i<=30 do begin
# R" ?1 k- y: J/ q o travel to pickaisle.con(A_i)
* A0 ?, G" i' L if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec' E$ }; b8 _5 L& o
else wait for 10 sec
! I, H% J" N8 V0 n& F: j if A_i=A_leave then send to die u+ K4 \. W8 E$ S" Y3 e- ?
else inc A_i by 1
: N5 J! C+ q3 W2 B) R end: I5 H3 N0 j6 a) t9 m
end. f7 d( U7 @) f2 K, w; a& a7 R; v2 }
" y" E' L3 Q9 b$ Xbegin P_pick2 arriving5 |+ D c- m3 B
set A_i to 11
: n/ K7 E% ~8 y& ] W# p, ^ move into Q_induct2
: {9 ?3 ]9 O' b1 H move into pickaisle.induct2
" [* Y8 X I# P. L4 h1 m while A_i<=30 do begin4 Q: q# h5 ?- w7 W
travel to pickaisle.con(A_i)4 {- j2 B( U# h6 f: |+ y% y3 e5 P, ?
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
3 M/ g. K' Q/ o5 }- c' L1 x/ M- E else wait for 10 sec7 t% ]& l5 ^) H1 ~: ]7 E# A
if A_i=A_leave then send to die) }3 r2 n- `8 e6 Y% j9 {; w# K
else inc A_i by 1
/ @4 c4 |# L# \0 B$ ~ end8 }6 X8 u. L1 ^% R
end
/ m) C& p( [; }9 B* N1 Y0 f, x
, P3 {3 z9 d% \0 D8 ebegin P_pick3 arriving' T' @' J5 b, H
set A_i to 21: L" O' P0 ?* F/ V2 }
move into Q_induct3
% z7 T- D6 p; r' w0 e move into pickaisle.induct3
: y) _$ j0 ~8 y7 n, j7 E while A_i<=30 do begin0 j4 c) A0 {$ f+ Q% Y
travel to pickaisle.con(A_i)
1 Q4 O! N7 y$ Y* R& t* r4 o if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
( O: t: h4 b; l" @6 c, d& { else wait for 10 sec' i+ B6 r9 o9 ]9 c
if A_i=A_leave then send to die
8 M$ Z" b7 p3 M, ~ else inc A_i by 10 X; A4 v! X! D# U+ B T
end
. M. _2 d( J R$ Dend |
最佳答案
查看完整内容
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,其它按你的 ...
|