|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢6 q/ y" x# c- D8 |
3 w, M R* [; \( N1 G我的问题是,在每个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中的数值,不知道会不会有什么不妥。
( F: M: u5 m+ S6 U& `6 B1 p% f! t' E* F+ g& x$ f
begin P_read arriving+ h5 j9 |% U( P' [( J
while 1=1 do begin- L1 o% d. }+ l& o/ K: I4 |, p
read A_tote from "data.txt" with delimiter "\n"
5 P% ~1 i, N0 \6 H6 E read A_time from "data.txt" with delimiter "\n"
% ?( l) f2 \4 s# T( Y% g9 G! Q& y2 R. | read A_leave from "data.txt" with delimiter "\n"
3 E+ r% j2 F' { I) P% x1 G L read A_picks from "data.txt" with delimiter "\n"! L& @+ f2 T4 Z3 C* K; f
set load type to A_tote( }* C+ S% F7 |# T
if A_tote="tote 1" then set A_induct to 14 R! ]8 d; P7 X1 X& S9 H
else if A_tote="tote 2" then set A_induct to 2
: `+ _6 V* A' z; v0 y else set A_induct to 3
+ S o1 J; T0 }, V, P7 i' T9 g) Q set A_i to 07 s# f; K0 O% S* m0 H- i' L
clone 1 load to P_induction' D/ [ ]% o6 z" j% m& J" O
wait for A_time sec0 g* o, R' U3 W& Q K( a% ]% l0 h
end
; n" Q9 x/ E! A( Nend
% r; a6 d1 b5 q; Z. E
! g, R. ?1 A: t" Q' Ibegin P_induction arriving
3 p9 G, c5 x$ M if A_induct=1 then clone 1 load to P_pick1- g( C8 z8 j: w0 }# v# K9 _
else if A_induct=2 then clone 1 load to P_pick2) g P' \0 d o8 g# r$ O
else clone 1 load to P_pick3
, ]/ F* \3 R" ~7 }8 o" T n9 Tend' r; [4 X# x* \9 s7 b
8 U* r' k% v$ P) I% }9 g" O
begin P_pick1 arriving
. r+ j$ I4 A0 ?7 I/ Q$ w set A_i to 1
, L; E7 K& l6 ?2 Z7 D# i9 O# m move into Q_induct1( ^2 A4 i' J$ f2 [+ Z! o; w: v
move into pickaisle.induct1$ {6 J5 G. y" ^+ y V
while A_i<=30 do begin
! Y: n) z- i, p9 Q travel to pickaisle.con(A_i)( e& v4 E. o p+ B# O
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
8 H `- P( L$ _4 k else wait for 10 sec
I" | ?9 S! U' { if A_i=A_leave then send to die, |% y( b! }3 n9 d) H, u
else inc A_i by 1
! c8 R( j6 x. a4 n end
! a7 M H! T- jend
6 c- R: P8 N# ~
$ k* U- E% [- H7 _begin P_pick2 arriving) ~, Y- E2 S+ g: v& }
set A_i to 11
+ Z# Y L# L5 B p1 j6 U7 k( j move into Q_induct2
' W" N0 J. x1 h7 X7 b move into pickaisle.induct2& H7 z7 O3 b. J; n; p' E
while A_i<=30 do begin
' }4 U7 f1 n/ t travel to pickaisle.con(A_i)
2 t1 {- v8 | |9 N7 U% V! h, L if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
' F- Y& d5 ~# P% F/ g9 ~ else wait for 10 sec
' p }" ?( ] V( y& y if A_i=A_leave then send to die1 l/ D1 l- {, p
else inc A_i by 1% G, A$ i* w0 m, M9 z; I) R
end1 v# Y- N5 O+ [$ q" h9 ^
end
" `$ t( o! z4 M/ i+ M/ R+ Y0 Z! y3 o: B8 M8 S
begin P_pick3 arriving
# ^% ?+ F8 _- W# k3 p2 p6 l set A_i to 21
W6 _& i2 v5 Y( t5 _6 U, p% X5 @# |* W move into Q_induct3* n' m% J/ ^# c! Z+ o* e5 o
move into pickaisle.induct3) _0 {, e' W: s+ Q
while A_i<=30 do begin- V9 k* s, O3 J `* K
travel to pickaisle.con(A_i)/ r. t7 E! O- e& i; @
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
4 D% M4 N t. D else wait for 10 sec
3 r- C; M; ^/ U S/ _ if A_i=A_leave then send to die
& V! u/ ^. s4 o/ j- X else inc A_i by 16 `3 F9 O. w& J U
end) X1 [+ u+ n* T: ~
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,其它按你的 ...
|