|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢! E# }- e& d2 F# S
, O1 `1 b7 f3 |' _/ [% {
我的问题是,在每个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中的数值,不知道会不会有什么不妥。. u/ Y, D, L+ l0 h
% ]1 B. C* D" j6 N! B% jbegin P_read arriving
* O9 C$ {: R' `( t W: }. N while 1=1 do begin; \4 r8 d: A7 Z0 P
read A_tote from "data.txt" with delimiter "\n"
2 R, h) \# e1 `% I4 A read A_time from "data.txt" with delimiter "\n"
f" _7 m" `) a7 k8 O$ \+ h' Z' |+ j read A_leave from "data.txt" with delimiter "\n"
: Q0 t; }: n( J" X' w. |8 T read A_picks from "data.txt" with delimiter "\n"! A p5 v0 d+ {8 {- Q
set load type to A_tote- m. c% |( P, p
if A_tote="tote 1" then set A_induct to 1
/ s- F* b' X4 d8 w$ _5 O6 E( p4 g else if A_tote="tote 2" then set A_induct to 2
, ]. n2 C2 d/ a3 A' G* s- a! T else set A_induct to 3
) g' \" \, Z8 W, M set A_i to 0
' a' O( X, }4 W! C3 R clone 1 load to P_induction
! C2 p2 K( |/ ?( k wait for A_time sec/ G* }) j) G, G% P) C& W
end& A$ |3 E# B# u, h: X& F3 H& ]+ l
end, W+ h6 [/ b8 I! S* S+ }- c$ ^
; ]4 c& h3 i" C+ Wbegin P_induction arriving' M: b0 N5 n% t4 t# B6 H( l
if A_induct=1 then clone 1 load to P_pick1
. p/ Y( @0 B; Z5 V- e else if A_induct=2 then clone 1 load to P_pick26 o: X) f6 T( Z* v7 w# {9 t2 N( p& O8 b; S
else clone 1 load to P_pick3
. j% T+ i$ c8 fend
) O( \* k% V K7 i$ ^; C4 y2 \ I, f2 w* O2 E7 d" H
begin P_pick1 arriving
0 F% Z. P# Z, t: s9 x2 j/ ]* F set A_i to 1
) \+ s# j. M2 H# R n4 B! R move into Q_induct1
5 c- k5 D7 l* E- v move into pickaisle.induct1! Z7 g( i- {/ Y/ z- O' n K
while A_i<=30 do begin6 c7 A6 }# h( q; Y+ H
travel to pickaisle.con(A_i)" z) _: I# ]& c) _
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec( l6 n* X2 T3 C$ v% M! t+ ?
else wait for 10 sec# h/ q- s/ z( j$ n8 A
if A_i=A_leave then send to die
4 z5 [, o3 q& K2 F9 h) j else inc A_i by 1- w' V& w: Q& g% V" L
end1 w1 O2 g5 }4 j( J- M/ M
end2 G' F6 i4 O$ X1 n- R
$ z" ], V2 k3 D. v( q. S9 f
begin P_pick2 arriving( V" }3 P# {$ {8 {! T2 W7 U
set A_i to 11# D8 X; _ r) ]1 d
move into Q_induct2, ^) v( B( V$ V" j$ k8 }
move into pickaisle.induct2" B+ `- o: C$ E+ {; o; }3 K
while A_i<=30 do begin# v9 g6 |( A. ^! Y
travel to pickaisle.con(A_i)2 v( g" @. ~/ W: z$ ~
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
$ U4 p1 J5 {( ~& B) B7 z else wait for 10 sec
$ s5 @- }! j8 o0 l8 u# Y4 Q if A_i=A_leave then send to die; S5 F9 Q7 ]% A. S1 I+ V+ E
else inc A_i by 1
" k; `* ^7 m* q; c. f end, Y1 }# k- L; ^/ l9 ^( |$ }; k
end. G0 e5 y; F8 u
* c, s8 K4 g! Y# x* S/ B# fbegin P_pick3 arriving- V% n+ `) D" X
set A_i to 21) U% N& ]8 S7 w/ _( y, x# [9 u1 G
move into Q_induct3
$ s* Q/ Q$ Q0 `2 x" _ move into pickaisle.induct3
' U8 V3 c7 A% u( v0 r3 b while A_i<=30 do begin
) C- B$ J, F6 y5 W' [3 m: N, z travel to pickaisle.con(A_i)! e( R- l0 y2 h- `* T3 W
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec# f; z8 V& f- E
else wait for 10 sec3 R7 ?3 f( X! v* n
if A_i=A_leave then send to die
& e& w; k) e5 G, v- w# I else inc A_i by 1" U2 K# A0 f% e1 o# O
end
4 R7 ^ \& H7 X6 k% Q7 Zend |
最佳答案
查看完整内容
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,其它按你的 ...
|