|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢" W+ p; J; Q3 r, |
! a: }! S# ^& `
我的问题是,在每个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中的数值,不知道会不会有什么不妥。7 j+ u5 }1 c0 H! k
8 Y" y6 D1 g0 D. c/ Z- Nbegin P_read arriving9 _# L+ X6 o: u* J
while 1=1 do begin
/ h* J b& @0 D/ @, n read A_tote from "data.txt" with delimiter "\n"
0 d4 T/ ~% U9 Y read A_time from "data.txt" with delimiter "\n"
" ^: x* Z! D( i: k2 A: x read A_leave from "data.txt" with delimiter "\n"
6 Y" e1 H. C- I! ~$ @0 v read A_picks from "data.txt" with delimiter "\n"
" D2 O8 n h% R1 s! ~" T; f' ^, L/ W set load type to A_tote, o1 v% Y* M: `0 J* ~, r
if A_tote="tote 1" then set A_induct to 13 W" m: I$ y: m3 v/ E& R
else if A_tote="tote 2" then set A_induct to 2
; @: q; h- ~; s. E+ r else set A_induct to 3
: N" c( r1 I# S# W set A_i to 00 V/ g) l" P8 n g9 U: A
clone 1 load to P_induction5 ^# s) z% g1 w' S5 p9 N* N# Z
wait for A_time sec2 `, \" W* \9 f! q+ G
end
; C! p( \; X1 |( yend" t, J7 d) S- d2 u( p9 y- u& K
7 ^( k! p! [2 `/ B+ x
begin P_induction arriving3 k* b6 F+ W( [! e, T3 U
if A_induct=1 then clone 1 load to P_pick1) M7 w$ Z0 ]. |: {% n
else if A_induct=2 then clone 1 load to P_pick2
6 ~$ O' J' o+ j' g2 p4 ~ else clone 1 load to P_pick37 A8 n4 |! d! h8 h9 F
end/ E+ J1 k1 k( y" f- f# |, T
8 I+ B6 C/ C7 t0 P6 e
begin P_pick1 arriving
% b' r5 L( ^4 Q7 M3 ]) T7 J set A_i to 1+ f/ t H1 Y& E! a4 B
move into Q_induct1
+ `: X" [8 w P, m5 q' [( D$ ? move into pickaisle.induct1
& C0 h4 q) R- s% p while A_i<=30 do begin
4 j9 ?/ u, ?% ^4 s$ \% t3 g/ q travel to pickaisle.con(A_i)4 y: f5 Y0 |# W7 I- m
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
& `) ~# E8 j2 e; ]2 a else wait for 10 sec
# c* B# e% n' y; D) W# _% d; ?3 ` if A_i=A_leave then send to die
% ?: L) F# H6 U3 m% z) I, M else inc A_i by 1! K ]+ n% s I' S% f) H( ?
end
* Q, m4 y. R5 H+ Jend
1 T4 u9 @2 Y( H# {: a
7 c- |+ V9 ]: p3 F Abegin P_pick2 arriving
1 w( p! C" f: ^. `; | V0 m$ b set A_i to 11$ x# k" b @0 a' m2 a" P3 Y
move into Q_induct2) y0 V# X7 }, g3 P$ H. ?/ `
move into pickaisle.induct2
" ^4 V X- z$ j: q& I while A_i<=30 do begin& j0 y* ^1 v% O% g. W: Y
travel to pickaisle.con(A_i)
# X6 p: J0 y" l" k5 X if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
9 B9 [5 z z8 t& F4 C0 A3 y else wait for 10 sec
N T4 r* X; N if A_i=A_leave then send to die" P* {/ X: x0 r$ \ ^" L% y k: Z
else inc A_i by 1- K7 P, S, `8 g% W2 i
end
! }9 |- d6 B7 { I1 |end6 ?+ S, a4 Z. b% e2 d$ D
. n d# f" P" Qbegin P_pick3 arriving
" S/ |6 P+ e3 ~( n3 A set A_i to 21- M6 |' ~3 q' e9 @
move into Q_induct3
2 e' j) p' ]6 N, P8 r& U3 j move into pickaisle.induct3
# }2 f5 J% d7 V: g while A_i<=30 do begin2 A b/ B' z+ Q1 ?3 Y( E
travel to pickaisle.con(A_i)
9 I) E( f+ E" `( d! n4 e if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec% W' ~9 }) W2 B7 `: a3 H1 q
else wait for 10 sec3 r" t9 U4 K3 ?0 P* p
if A_i=A_leave then send to die; S( G- m+ e9 N, ~8 v4 z
else inc A_i by 1
6 J9 f( V: O+ n; v0 y! R) p end
* e1 {# v% R( `' A* R5 R. l# kend |
最佳答案
查看完整内容
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,其它按你的 ...
|