|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
' T* B6 m, d( t. h' g- F8 h' [" \* s- \; j; T
我的问题是,在每个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 ]6 ~: ]; ?# t0 F# ?; @# r! a9 f" c" Y, U
begin P_read arriving
/ o( z) m/ L& m \! ]! H- p while 1=1 do begin
% X: |0 ]5 u3 m- @! ?) { read A_tote from "data.txt" with delimiter "\n"( k g- g6 W: d% z( w4 W; W
read A_time from "data.txt" with delimiter "\n"( u; ^. }, ]/ F, r9 l' ]3 U
read A_leave from "data.txt" with delimiter "\n", c2 J0 t8 o6 r
read A_picks from "data.txt" with delimiter "\n"! w& z0 e$ M P' `: n0 b
set load type to A_tote
7 H3 L5 }& R) G' O/ K if A_tote="tote 1" then set A_induct to 1 i/ C9 a6 S; d" e9 I7 N
else if A_tote="tote 2" then set A_induct to 2
& O/ Z/ l/ c+ u else set A_induct to 3
$ C: L. V3 m; m. V" H! S2 S set A_i to 0
& h8 \, F" Y5 d! k9 _" J# Q; ~4 y clone 1 load to P_induction; z# O6 j% G) _5 ]7 v
wait for A_time sec+ j) d# m; Y* ]) ^( j8 c. |, `
end
3 F; u* C4 q q* ~end
6 K) A5 y& A7 I6 x9 ]( i N
( N' C1 F6 X# d& }begin P_induction arriving2 _7 r3 k/ ^& H8 G' N8 I
if A_induct=1 then clone 1 load to P_pick12 u) S, ]" r' W% ~4 @
else if A_induct=2 then clone 1 load to P_pick23 A, P) e0 S8 k0 T6 \) M
else clone 1 load to P_pick3$ }) c6 R9 K# a9 O; |
end6 @. q' y5 w8 ?% N
5 t M+ g4 K( b. d5 n- D; I' a4 H
begin P_pick1 arriving. I2 W4 R- ~" { I( w6 B
set A_i to 1' B6 I( z2 ~- T5 }1 Q+ J
move into Q_induct1
0 \# N% K; v. q4 t1 F: g move into pickaisle.induct1
5 N% v: q7 M: ` while A_i<=30 do begin
( h9 w- @) i" z travel to pickaisle.con(A_i)2 v2 O+ N1 [- _( p
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec) K+ a) L2 m9 R. f* g
else wait for 10 sec
/ q$ w' d$ D9 v6 c+ A% j: E$ e1 Z if A_i=A_leave then send to die Z4 }! w% t; s
else inc A_i by 1$ [* t0 C( j& t [1 w6 ?
end6 F; p0 |8 W' X3 @; {$ p
end
# J/ \' t! l; n( I5 ?; b# d7 P( ^0 C7 s( I9 k% C. U5 k+ E, ~
begin P_pick2 arriving
8 X2 [4 Y8 }/ m+ _ ` set A_i to 117 c9 |* L3 g+ S: y4 d/ h" O1 J
move into Q_induct2: `6 P8 F) ?! L# V0 a3 E7 n# G
move into pickaisle.induct23 j* F# w9 a- S7 a
while A_i<=30 do begin3 {3 ]$ l' {5 i- J
travel to pickaisle.con(A_i)
' }% Y$ f( s8 k X if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
+ C# a7 t v& t7 m5 [' b$ A else wait for 10 sec
/ ?8 X; _9 k* v: o% g if A_i=A_leave then send to die
7 V; l$ S; }* ?9 I else inc A_i by 15 V0 i$ b4 ~2 R' {5 C& h' J9 ^
end
0 Y6 T$ y! l5 C7 g' N. Hend
0 G( j% ]1 M3 i/ o& h* e+ T0 Y, z! T# I* C& R2 `0 d' S/ E
begin P_pick3 arriving
; S$ f' n: t d1 W- S# w set A_i to 21" S0 {) u" Z0 a5 {8 T! G$ h4 J% l
move into Q_induct3( S7 {9 [+ d4 P2 {' `+ {6 J* D8 n
move into pickaisle.induct3
$ C9 N2 @) p- d while A_i<=30 do begin
1 s) B/ p8 _+ ^4 K2 c$ |0 c% M travel to pickaisle.con(A_i)) h6 G1 |2 t; ^4 F+ R5 g
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec/ T, q) o4 g6 l1 c/ y) p
else wait for 10 sec
. i& q% j+ V3 B if A_i=A_leave then send to die% ?6 j' A* z( F6 s0 q ]
else inc A_i by 1
- ?2 i* l' g( K' S8 n3 H$ G end
6 n* g# ?+ }' o- k. D0 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,其它按你的 ...
|