|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢4 _+ H l& N6 }( |
" ?2 S" q1 R5 q8 ]# h. G
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
1 D4 p- b& |3 n; |2 u
. o/ e, _' H4 M1 F' Abegin P_read arriving1 L1 c% z' D! b1 k
while 1=1 do begin, [ o7 z' o B* N
read A_tote from "data.txt" with delimiter "\n"5 T5 ]% H5 u3 x3 s g( H& z. g% O
read A_time from "data.txt" with delimiter "\n"( {& p7 ^# S2 w- R
read A_leave from "data.txt" with delimiter "\n"
+ { z# H0 R0 L7 _ read A_picks from "data.txt" with delimiter "\n"% I' k$ Y& ^5 ~9 s' _
set load type to A_tote; U2 L- J7 Z: {% m. W" x- x
if A_tote="tote 1" then set A_induct to 1
* @6 o2 _& J E. F# N# O4 B else if A_tote="tote 2" then set A_induct to 2
# r$ P' ?2 H5 U) a else set A_induct to 3 7 o4 h0 f3 ~( j* j. V& B. Z
set A_i to 0
2 a. B9 Z8 j) I' I' ]7 q6 L clone 1 load to P_induction
* p' u, W% x( E' {9 u9 j8 r3 T wait for A_time sec
8 `0 b. Q* `, z8 _; k* g; J end- }6 U, b! p- c- ^- X H
end
" @# A8 U u( b. i! j F" `$ C( o8 w
begin P_induction arriving, g) n& t# h9 w
if A_induct=1 then clone 1 load to P_pick1
5 t* |% D% K) t1 E! f8 T else if A_induct=2 then clone 1 load to P_pick2
* S, T' Y7 R# t3 v# ?' ?/ Z% d else clone 1 load to P_pick3! Z8 d$ r8 {# g1 [. s
end
7 F) s) z: W# U; T8 ? M- Q3 a% m$ G6 e0 a9 e
begin P_pick1 arriving- k! d2 Z' i+ H) T
set A_i to 1
! O9 K3 P1 P6 @8 I move into Q_induct1
$ \& h! u; h4 q: ~; ^' N move into pickaisle.induct1; @' u3 A" [7 J0 v
while A_i<=30 do begin; [. t0 V6 P$ b3 ^, j
travel to pickaisle.con(A_i)9 [% e& v; v, _. }1 H, C2 j
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
b: Y; p% F8 P; m! z else wait for 10 sec
# t4 v- @1 Q/ D; S6 z; ~( v3 { if A_i=A_leave then send to die
0 p9 ^' U% h* J+ K: B else inc A_i by 1
- e1 ^9 W# { B' M" o end
2 [4 g6 J% D$ E$ L( ^2 s3 fend* b$ j& x7 s! n* `8 U! G
4 r. d5 E4 o8 kbegin P_pick2 arriving
5 T. y% X- O$ k) ] set A_i to 11
. @5 j- p. E* w" u) D% y) \' Q move into Q_induct2
; } E2 Q: G% E move into pickaisle.induct2
1 |. G' _& e2 q2 A1 { while A_i<=30 do begin
0 e0 R; q9 V8 ^. a, M+ ? travel to pickaisle.con(A_i)9 l3 D2 J9 g2 @' E3 Q A% t
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
8 j6 O- r* S. m% P1 j3 Y+ \- g else wait for 10 sec M3 B$ k. e, c7 h8 [
if A_i=A_leave then send to die$ N( e& K* a3 S/ c e3 h1 s% @4 ^9 w0 G/ h
else inc A_i by 12 o; Q# T1 m. N! y! | X
end. M- f* ~3 X0 `2 i5 h
end
& \9 r' x( T: n( @# R2 Q: u
$ U1 b8 B. z5 l8 Q: ?begin P_pick3 arriving! V1 N" m! `, b o: l
set A_i to 212 O: m, v- s- n& V
move into Q_induct3
% z' r' h% p; \; n1 j5 v7 a move into pickaisle.induct3; E8 |7 l; y$ J5 X6 d
while A_i<=30 do begin
( L* H; b5 Y' g! A$ P7 E* o5 j$ A5 l travel to pickaisle.con(A_i)
# K" D% G- @. u$ m% {, C6 F# I6 b if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
6 [* r8 W b; U) n: T else wait for 10 sec
9 z/ h) ]- m! K if A_i=A_leave then send to die& Y$ P* B1 A, n+ V) b& e" E
else inc A_i by 1
; r/ p/ W9 W) i: f( m7 `$ n0 I: Q end
( D+ y5 k/ [- ]* M& j, F# Jend |
最佳答案
查看完整内容
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,其它按你的 ...
|