|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢% Z2 D- V5 |" s6 `$ ^: u4 p
! Y: J; H- H; v$ m+ _' p, O! T0 ^
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
3 J1 R. h' V+ b- E C6 _0 {, s2 @, H! a8 f9 X2 l M# W$ O" G3 L+ @
begin P_read arriving
! e) N# e, f; A) ]; z% }) f4 L: O while 1=1 do begin& _ {/ j4 n' i/ f; R
read A_tote from "data.txt" with delimiter "\n"% H5 U6 n( G; X* z7 C- T9 C5 `
read A_time from "data.txt" with delimiter "\n"1 I' N$ V" E! ^/ U
read A_leave from "data.txt" with delimiter "\n"
% N9 N7 Q( B+ y! C! _1 b read A_picks from "data.txt" with delimiter "\n") m4 {# k4 v) s2 v3 w
set load type to A_tote
8 D- i' W- G" k, X if A_tote="tote 1" then set A_induct to 1
8 a# t4 V; J$ v2 N8 Q0 A1 s# A else if A_tote="tote 2" then set A_induct to 2
3 a4 ], |5 B1 R( Z9 N- o0 ^ _ else set A_induct to 3
: ^6 ]0 `0 P' }& h" L/ \; {( v) C' M# k set A_i to 0
J. Z+ |1 q/ N clone 1 load to P_induction
! c( u+ ^% d% q2 O# P% i wait for A_time sec
+ X3 e- n# P1 O# S { end
9 M( t% v- B8 c. M% L: }end. ]8 @; U# y: h9 W x
& D& f6 g8 u( V
begin P_induction arriving5 c% _) o T: _: e
if A_induct=1 then clone 1 load to P_pick1& v2 U% p4 D6 W1 o6 B3 |7 O- F+ W# X
else if A_induct=2 then clone 1 load to P_pick2/ r3 ]1 g) S0 {. t; {
else clone 1 load to P_pick39 |- T7 _ A1 a+ p$ i
end6 Q# A0 `. P1 C3 w
6 a; C% [! u2 f1 v3 x) Hbegin P_pick1 arriving2 q) l3 o3 Y- ?, [
set A_i to 1
7 t( F& _* |& B' f; {2 R. O move into Q_induct12 N2 Q9 v% o! M0 t
move into pickaisle.induct1' ~6 g2 K3 t3 N
while A_i<=30 do begin
$ x# x3 ?. }. [ travel to pickaisle.con(A_i)
3 W [2 h2 ^5 B+ \+ Y1 ^) J0 \! j if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
% z0 j4 L# `) D) u5 ~/ b* q else wait for 10 sec) ~2 R; \0 \' Q
if A_i=A_leave then send to die
; t% `; Y- A0 v# k, [1 s/ p2 n else inc A_i by 1& v- b7 X" n6 t) \
end; W/ m0 T: q% f3 }
end& E$ v- p9 V8 f4 y, P, ]
, ?; B F" J6 ?0 |7 W: R5 @/ Lbegin P_pick2 arriving
Z- b0 D7 f1 r0 _6 V! n7 ] set A_i to 11& n9 c$ e7 A, x( K5 j
move into Q_induct2
! R3 _7 {1 w* A6 ~. n8 p move into pickaisle.induct2; V& S7 ?' G" U. k; J5 o9 r3 ?( S
while A_i<=30 do begin
; }5 o' G3 H' H. f; w+ ~ travel to pickaisle.con(A_i)) F6 Y/ W- k" H' c
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec0 |$ |) N) T5 N7 G1 j
else wait for 10 sec8 b- u% q0 S$ w( D g+ C8 O6 ~. I: S
if A_i=A_leave then send to die5 f+ e8 V+ Z0 @6 q. g
else inc A_i by 1
& e7 C+ O/ T& t. k5 j* ?, h end
" q6 J9 \2 p! Qend6 y6 t6 m/ O7 i( r9 n+ M" I( o
1 J( P3 i/ ?, p, Dbegin P_pick3 arriving- R: P& u! k9 s/ |- A' @3 ?
set A_i to 211 O1 }; p" ^0 J0 a
move into Q_induct3
& x( {. W4 C ]6 K* r, e6 N move into pickaisle.induct3
0 N8 \% M: P% n while A_i<=30 do begin
8 k; g& i6 }8 h- A9 i- ]/ o3 e travel to pickaisle.con(A_i)
7 r7 y+ s8 c6 t( N, f6 Z+ k$ [" z) L0 l if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
0 n0 B0 {/ m- F7 l else wait for 10 sec: T5 {' S& c1 z& R' J, p
if A_i=A_leave then send to die; e& S0 C, R9 r9 D
else inc A_i by 1* E1 d6 j7 b, Y& y/ P0 A
end1 I4 h6 S4 ^( B3 l0 ^5 l+ S3 O
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,其它按你的 ...
|