|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢0 o6 H; g/ x V( O9 j+ b2 L
! y& ]; [' h4 r/ v# ~8 {$ ?我的问题是,在每个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中的数值,不知道会不会有什么不妥。
8 r( C: u7 R7 e; S1 q. {& b1 J. P# N
begin P_read arriving
) W% |6 ^/ a- r% V6 q! D while 1=1 do begin) E9 m2 r! O- }8 P
read A_tote from "data.txt" with delimiter "\n": j, U' I F" l
read A_time from "data.txt" with delimiter "\n"
( H: I0 x6 N' J. ?3 {9 d4 k read A_leave from "data.txt" with delimiter "\n"5 k- S7 j5 B' r; x6 b/ M3 I. `
read A_picks from "data.txt" with delimiter "\n"; ^; K- L1 [5 F% A7 [7 `" o4 x
set load type to A_tote# J9 C' F' n4 I" L" w
if A_tote="tote 1" then set A_induct to 1& y; V# A0 Y' l
else if A_tote="tote 2" then set A_induct to 2
) c4 f% `5 W5 W% \- E( p else set A_induct to 3
+ R" g7 h& Y5 @6 R9 v set A_i to 0! Y; y$ U7 A* Z! R
clone 1 load to P_induction; N `/ Q7 i5 q# J3 }2 W( Q& q
wait for A_time sec( r7 f! L/ z! e+ }$ `0 ~2 n0 @3 i
end
* B6 S1 [* o8 [% d4 }5 aend
u5 ]" f! L) k( Z( P# I- w( n0 M" K* P$ @4 S( }
begin P_induction arriving
, m% s/ J2 T) i if A_induct=1 then clone 1 load to P_pick1
* N7 F& B7 ^$ [; I9 m! D3 d T else if A_induct=2 then clone 1 load to P_pick2
, ], P6 {' I8 y" k( ] else clone 1 load to P_pick3& h+ R0 {& H/ F7 G* q3 n+ }
end5 a: `$ q, R9 j( e. e9 p/ G
9 S; {! O7 u0 F5 `7 a4 g- k( Z: a
begin P_pick1 arriving
& c7 G) A1 w! f3 u set A_i to 1/ b4 a( T( L. J2 X) e
move into Q_induct1
. @5 }' ~9 p6 Y+ U! v1 K move into pickaisle.induct18 Y: \* A4 U4 F
while A_i<=30 do begin
: y8 D! _/ Y- {2 s) ?. i; c travel to pickaisle.con(A_i)- }+ s+ ` Q8 f2 w
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
" p0 V( J2 w/ Y" Y2 B else wait for 10 sec! x) k1 F; ?: ^
if A_i=A_leave then send to die3 O2 Z" A4 B4 M1 }8 L6 u/ t1 ]5 ^0 ]
else inc A_i by 1& r% {7 _& p8 }' Z8 n% a- F! C$ y
end
; Q) b7 \( o8 M# a+ N9 E# r2 H4 zend
" I( f5 a$ J- h+ [
$ u) L3 t/ O$ O4 n0 o; jbegin P_pick2 arriving) L' y; {7 t s- b- _- ]
set A_i to 11! j/ ^% k" `, `" [4 p W+ }4 v; ` C
move into Q_induct2
% q$ p- p0 Q; s. M move into pickaisle.induct2
# r O1 n( a% o. \5 K while A_i<=30 do begin
6 s. F* }7 O4 Y6 D# P# T/ q travel to pickaisle.con(A_i)
9 Y4 `; c k Y6 i( S7 ~% n if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec! @! C& q# Q8 O& C
else wait for 10 sec' q! o$ q4 x/ i: e% j2 Y4 q
if A_i=A_leave then send to die
" \/ q% R( I1 R1 u8 l3 z4 K" A6 y else inc A_i by 1
" d- l* j$ q- g! i1 B& Z' N! n+ p end
+ G: v9 D1 E8 M$ U* ~" Aend( S4 z% J; a3 J8 A
: K8 j: V" }1 v
begin P_pick3 arriving
3 |" x( b; ~% p- p set A_i to 21
/ i# V" `: O; B: @( ?& p" v move into Q_induct32 D x8 [$ s9 W9 {4 o
move into pickaisle.induct3
5 E) j) O) g8 ?( {2 K while A_i<=30 do begin0 S+ F: s: n6 v/ F
travel to pickaisle.con(A_i)
/ s, H6 O1 ~( B* t if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec; ^# h8 z& |1 j6 {6 p5 [
else wait for 10 sec
3 q- s4 n' X5 R" W$ E if A_i=A_leave then send to die
[6 ]+ [8 Y. F2 W% _3 d else inc A_i by 1
" X1 r) w7 f3 O5 y8 @1 F: ` end+ D# E# F! Z1 H2 G
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,其它按你的 ...
|