|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢+ v% [) I+ N" E
1 f. g+ k1 o4 [" u# n我的问题是,在每个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中的数值,不知道会不会有什么不妥。. `+ ~/ M8 u7 R5 y' v* `
) C4 c* J$ q8 i9 F* abegin P_read arriving2 g0 k( u1 F. W. I
while 1=1 do begin1 n ]- n, @! a0 i; Q
read A_tote from "data.txt" with delimiter "\n"# c4 B1 t6 Z0 L" D
read A_time from "data.txt" with delimiter "\n"
! \9 E& R$ ^# j- e: w read A_leave from "data.txt" with delimiter "\n"3 O D( u- D/ ]
read A_picks from "data.txt" with delimiter "\n", p9 w/ F1 ], X! D6 U5 x
set load type to A_tote
8 C9 i8 b( u" i0 q; S9 r4 t if A_tote="tote 1" then set A_induct to 1, t- @& v+ ~% B( e9 X. D4 a( p
else if A_tote="tote 2" then set A_induct to 23 d* T _5 ]% c9 |0 s4 q
else set A_induct to 3 ; [8 N7 Y8 W' M& B, K- Y2 S
set A_i to 0" o0 A1 i# X$ y6 ^7 m1 B. X
clone 1 load to P_induction* J& } a. I+ T; u
wait for A_time sec
) C; c6 ]" ?( q& ` end
; Z t+ v, L+ M0 {end+ o- b! S& Q# e$ r' }1 U. f. E
5 ]6 T' S" {" ?
begin P_induction arriving
3 o: ^! m1 q& T if A_induct=1 then clone 1 load to P_pick1
. D3 p- `' @8 y5 J) c else if A_induct=2 then clone 1 load to P_pick2! E% n' X+ \8 G2 {5 b
else clone 1 load to P_pick3( K( A6 z$ u1 n. w! M" A8 x( g, Z* w
end9 |' ~- P! Z! S5 L1 ]4 u
1 P3 r# T6 n. [% e; n, u, U
begin P_pick1 arriving3 }% m) F. l" B( }) g
set A_i to 1
; _: k! s( ~; f2 h/ G5 X' D move into Q_induct11 H' y/ X: v0 ~* N
move into pickaisle.induct1
g+ G. {- ]% y s; x while A_i<=30 do begin
4 A1 q) x! E9 w* B travel to pickaisle.con(A_i)
% d0 ^- J/ `( K' F- }( S. p& H if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
1 K, H5 g0 y1 s1 | else wait for 10 sec2 f5 {; E/ T$ f `# E
if A_i=A_leave then send to die
' o) R* c6 J/ |( B else inc A_i by 1
* y8 o( Q* s: h1 K# ^& I" d8 u/ w end2 U1 n5 l H3 b: ^# P
end
; H% y* X/ _2 X: @, I
# Q: W2 Q. H2 F5 Vbegin P_pick2 arriving
5 @3 n1 j6 J2 X) x- w% s" W# q set A_i to 11 g! P& O% `# I/ |0 E% d) K/ B
move into Q_induct2 m- F$ }4 s8 ~+ A% ? i% H
move into pickaisle.induct2 m, `- Z" v# M, ~
while A_i<=30 do begin' `% j$ j& j1 ]: r- g
travel to pickaisle.con(A_i). H7 A! I* ^, H3 j, r2 V
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
9 M3 q3 D$ G0 \8 f( W5 h. ^ else wait for 10 sec
; H/ D( E' ?! w. d1 `- ^1 p# a+ ~' E if A_i=A_leave then send to die
) e* k+ w. A5 E+ a( {* O2 P( @ else inc A_i by 1, h; h6 E" p% f: w6 U$ m# [( |
end
' [0 g; z; S% O! c9 i' oend+ X1 K( `& z( b) V0 L# w7 u
! O- d( i) d) `5 S+ ?
begin P_pick3 arriving' I" ~5 L) H" K8 v k
set A_i to 21
2 M$ b$ Y- t2 G" c" X move into Q_induct31 s* n2 j7 |* E. q1 |( ?. t# r
move into pickaisle.induct3
/ ]& h/ Q* d' ^0 t while A_i<=30 do begin
/ c, p1 u- W8 l2 v9 ^. Z travel to pickaisle.con(A_i)
; [7 C2 b3 x) r0 s Q0 N if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec Z1 \* B }# ]. |4 }. U0 h9 s' W3 m
else wait for 10 sec
: W8 G0 u: o7 Z& G& P9 L% e7 l4 G4 z; [ if A_i=A_leave then send to die
# H% K1 P; \! I2 `8 @ else inc A_i by 16 \# r6 x& ^6 n
end
+ x& Q0 P0 o) h/ T2 m" Fend |
最佳答案
查看完整内容
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,其它按你的 ...
|