|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
& I+ @( w- ~2 b/ ? O7 X
; U: P4 S2 \9 D8 K/ ?我的问题是,在每个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中的数值,不知道会不会有什么不妥。5 V% c: f$ p& Z' l) {/ o$ \
% M- X' Z" M$ p; e% F* ~- }
begin P_read arriving
9 o8 O; Y0 R7 Q$ e/ O: ~, ] while 1=1 do begin n2 y9 v. }! T4 N7 W1 f/ b3 f/ Q
read A_tote from "data.txt" with delimiter "\n"
2 `4 Z5 p1 ~! @( H" b. a; b7 R read A_time from "data.txt" with delimiter "\n"( g9 p4 c) `- I ~
read A_leave from "data.txt" with delimiter "\n"- ~8 O" x: k" o6 G4 \0 O
read A_picks from "data.txt" with delimiter "\n", f. v) q$ X2 ]
set load type to A_tote. W* u8 }% V1 j
if A_tote="tote 1" then set A_induct to 1
9 M2 m. B' s( d, y' {$ Y; \/ ? else if A_tote="tote 2" then set A_induct to 2: G6 Q) m1 @, i1 ~1 y
else set A_induct to 3 ^1 v; Z7 z3 q& p
set A_i to 0
) V' u9 u+ E) v* h1 ~, ? clone 1 load to P_induction
" D1 ]- M. E6 g: F0 W wait for A_time sec
# Q: q* k2 y3 E7 g3 A F1 Q end
( b1 Y) {: n- {end
8 Y6 Q6 ]' s+ Y y# V" v
7 Z% @/ r% ?$ b' pbegin P_induction arriving! T8 T; c. U9 B1 D1 A2 J2 p& O) C
if A_induct=1 then clone 1 load to P_pick12 Z: T3 s P5 c
else if A_induct=2 then clone 1 load to P_pick2( Q1 @+ r8 ^8 X
else clone 1 load to P_pick3* d/ N/ N6 w; R" L* y
end9 ]) m \5 r2 P; t7 R) l
$ @9 J( r# l# E4 L) b( g* q
begin P_pick1 arriving
0 k1 O* a9 i$ v5 s: a! V ^0 B set A_i to 1; d1 n8 w5 E/ W5 I, S- H" Z
move into Q_induct1
: m) y) D. S) g, d' A: \# E move into pickaisle.induct1/ F' F9 y$ f3 u# f$ p( H. ~
while A_i<=30 do begin
+ z8 S% u' B5 w, ] travel to pickaisle.con(A_i)5 _1 v7 ?& d# `+ j- W- T" y
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec0 z( q4 _6 f* u# k" Y; G
else wait for 10 sec
; c) ^! M* [" Q# Q if A_i=A_leave then send to die
! Z0 _8 F; R* m7 t else inc A_i by 1
7 a1 K! u' y$ M end
4 @/ F. I8 ]7 L" yend7 z; ]4 f$ k# z* i9 S8 B/ d
Q: G9 R6 C7 f; b" obegin P_pick2 arriving
5 w1 X% z8 D4 t3 v set A_i to 11
# ]' Q: e3 G9 W! f move into Q_induct21 I# O; j/ Z7 U' O
move into pickaisle.induct2
1 J# O" c$ L" y2 @$ @% k while A_i<=30 do begin6 \( |% D; ]8 z2 u, [7 U' E" U5 V
travel to pickaisle.con(A_i)
% C2 K d) ]- m. t/ `0 R if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec1 k& E7 v" B' `/ k7 U
else wait for 10 sec
5 W9 d$ f* i8 O9 D" U if A_i=A_leave then send to die- h% n! w W1 k& z
else inc A_i by 1
* T: S0 I/ P8 z: \6 L% V4 W0 E end
8 q2 v. Z1 m6 I! v) D9 iend- u. E) @6 J6 S$ A
: ]* Y. p* }+ O+ J& {begin P_pick3 arriving+ H' T3 @7 h9 c, l) ]0 K& b, Z
set A_i to 21
" z7 @5 w, V& m; C1 N7 _ move into Q_induct38 q# R, m7 j3 P* i
move into pickaisle.induct3
" X6 D7 }4 y6 C1 ]& Y: f! v while A_i<=30 do begin
2 p* p+ \5 @2 p9 ^ travel to pickaisle.con(A_i)
5 a; Q0 T1 h( h9 G( Q; a* |* d) } if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
: ?1 o4 v" B7 Q% {; B1 Z else wait for 10 sec. F: [9 a, K" ?+ e- f5 ^: B; O- x
if A_i=A_leave then send to die' G$ r$ C, I. \) b3 ^" `
else inc A_i by 11 p! d& |' Y8 u8 _$ Y/ q# m
end5 e- S$ J* w3 g* k9 H+ _
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,其它按你的 ...
|