|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
# K6 E- {/ x- y% c7 q9 w- y$ e2 z8 M$ j: q/ f/ q! E
我的问题是,在每个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中的数值,不知道会不会有什么不妥。! X( g- X( [8 P% N3 [; ?! e8 o
! a6 A2 y" S% j( S8 G/ u2 [; {begin P_read arriving- V% ]; v5 U1 E+ G
while 1=1 do begin
; B; U0 `6 l1 L( v% x read A_tote from "data.txt" with delimiter "\n"* Z/ T" B$ N1 M2 v; {$ f+ d
read A_time from "data.txt" with delimiter "\n"
_3 C. m4 S- o. p/ }& u read A_leave from "data.txt" with delimiter "\n"
, {2 b3 u7 S7 f0 [3 o4 ` @8 c. G. U read A_picks from "data.txt" with delimiter "\n"
! A2 s4 Q9 h/ k5 ^6 v3 q set load type to A_tote3 l1 R' r0 S& J, l* b" J; P! H" n
if A_tote="tote 1" then set A_induct to 1
$ w$ `2 K/ q. D( U else if A_tote="tote 2" then set A_induct to 2
( K+ B* O5 @" K! a: k" P( S+ K else set A_induct to 3 9 r9 \* f: k _( v& e+ p; k2 ^
set A_i to 0
& H' f" H0 D0 D& x5 F1 I clone 1 load to P_induction
/ J* o; K% G( v; q' \ wait for A_time sec
: @6 w k9 b5 U4 L" F; p end! K; p0 } H; m+ }7 {+ J6 p
end( ^# `1 r* q$ B; D# V& Y5 M
9 J' M' g$ p7 `7 M
begin P_induction arriving
$ T9 M3 X J" Q. i. S/ d if A_induct=1 then clone 1 load to P_pick1
. _$ d4 ^* P: j, F3 v. D else if A_induct=2 then clone 1 load to P_pick23 E$ r2 w/ H: A/ ]
else clone 1 load to P_pick3
" a) ~+ \5 N4 D2 |4 ^ _6 y2 Rend J8 x! J2 x8 B1 @* r& o0 L9 o5 i
F: x5 W3 ]* q0 W/ G A" x" m% r O
begin P_pick1 arriving- N( i4 [, {. L0 d j
set A_i to 1
; t/ o$ u( F# Q8 i, e' z* K move into Q_induct14 C. l' Y" ?% p# G
move into pickaisle.induct1" ]6 e" A1 p# |# q# N
while A_i<=30 do begin7 Z+ W( Q7 q3 V# J: ~% S+ A
travel to pickaisle.con(A_i)
8 b# ~( `$ Z3 L' @4 h& d' l if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec" n8 Y& V+ W* @4 G. E
else wait for 10 sec% S. f: W: @" S% K
if A_i=A_leave then send to die
, C5 X% o) i& J' q" ` else inc A_i by 1
3 P3 i( k) ~3 r% G end" G1 T- N/ p. r% w+ M$ _3 t9 ~' }! s
end- W1 ^; k, G' g: U b: l
" W3 ?0 J% F# p3 z' S& n9 ~begin P_pick2 arriving
/ c8 v: o# J3 C- h7 {! r( Q set A_i to 11+ M$ Q7 g) i* D" A# I# r: h4 T/ A
move into Q_induct2" S) p! r" S; r
move into pickaisle.induct28 f) p$ J' ~8 y: j( t4 \: k
while A_i<=30 do begin
* z8 Q0 k0 c9 v2 ^6 ^ travel to pickaisle.con(A_i)) i/ c! M+ a( R
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec2 {# |2 I K$ T. n* F
else wait for 10 sec
0 D1 a; G9 w$ B( ^2 b if A_i=A_leave then send to die6 P% S9 y0 {# [% f3 k) m
else inc A_i by 19 t5 o4 H! t; J
end; C/ D5 N# W; s' F! S0 W. P
end
6 q9 F8 F2 p" `4 S/ }% A1 z+ N. @6 N* d: e; s8 w! e0 x
begin P_pick3 arriving O, X, a4 S$ ?5 J8 c) o$ p! `
set A_i to 21& _/ d. k* {( y, n1 d
move into Q_induct38 c; m' m5 Y% M4 |
move into pickaisle.induct3
4 M% N2 u( l0 ]3 a+ z( z* O while A_i<=30 do begin
7 p" k4 S, W- b5 p( g( l travel to pickaisle.con(A_i)5 N n0 T% W. y& y* E
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec5 p4 F# W" T* w4 @) `
else wait for 10 sec
& x1 `% ]) O4 z( @ { if A_i=A_leave then send to die: M2 U$ m: U. U1 R# C5 T% O7 i
else inc A_i by 1
0 |: B& ^ a/ j4 P: S end
1 G. Q1 d9 D0 G, ^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,其它按你的 ...
|