|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢) A) I! y$ N8 [% |$ v2 m
7 s* A: [2 O' ]! b7 Q l" l4 ]6 v
我的问题是,在每个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中的数值,不知道会不会有什么不妥。( X' a- f% _+ q! y4 l! W
* m i1 J8 j5 W4 M w$ {6 w- [- ybegin P_read arriving
/ F$ L% c: d, T/ t1 V( V+ Z, O Q) h while 1=1 do begin
; H0 K7 s& {- g5 h3 O3 ?1 p read A_tote from "data.txt" with delimiter "\n"
) T. m, v9 _4 ?, e F6 J read A_time from "data.txt" with delimiter "\n"4 O4 b9 u) l) ^( g h1 o
read A_leave from "data.txt" with delimiter "\n"- H: x' Y3 T* f! g& T F
read A_picks from "data.txt" with delimiter "\n"
; O! E2 i3 P' h Z/ Y# Q set load type to A_tote% R0 \4 d: e* c% g9 q/ f
if A_tote="tote 1" then set A_induct to 1
# m- H2 G/ W& Z" ^6 { else if A_tote="tote 2" then set A_induct to 29 u0 y8 a: P8 G1 ?; v
else set A_induct to 3 7 G" _2 ^3 J1 O% |6 s4 X" A
set A_i to 0
% E: a5 t. j$ d& p* c- f clone 1 load to P_induction: N! `1 M5 Y, m; V$ @1 r
wait for A_time sec9 i) i1 D. u- L- h
end3 E2 J9 R8 A1 I9 I8 ^; I/ q/ ?
end1 o! u' k- s" ^# ]/ `% j/ ~+ G
! ~0 O% w, \5 J) s0 Bbegin P_induction arriving
/ f2 W' ^; b7 t e9 |% Q if A_induct=1 then clone 1 load to P_pick1! T: @! ?. \9 M2 A; ^& C
else if A_induct=2 then clone 1 load to P_pick2
' U& X3 W# _% x' R5 O else clone 1 load to P_pick3
* N- z! {; T) W1 u, Y5 hend
]6 L n2 r/ A# ?6 `* K a' N) d$ T) H
begin P_pick1 arriving. q, A$ a- g9 W
set A_i to 1( L4 X5 b% Y7 I5 M+ [# i
move into Q_induct1
7 l' C2 I& O- u/ B6 r' N# z9 G move into pickaisle.induct1- X5 }4 [' @+ ?, a Z2 p: G: I. F
while A_i<=30 do begin% q- l+ g) G5 t- v
travel to pickaisle.con(A_i)* { M5 R9 c$ O* t8 |
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec) e1 l+ v% I; l$ e) E0 |/ |
else wait for 10 sec! w: j j3 e5 N/ h
if A_i=A_leave then send to die
2 v1 k, e' w8 x+ b. z) S4 E else inc A_i by 1) X% d; u5 c2 e7 ^. `
end
8 S: x$ i; N/ i" A% s1 i! p) aend, N( T7 E3 w1 t# X
5 D5 T5 o' ^ v4 b' Obegin P_pick2 arriving0 m+ y% ]2 G% g9 q3 v" j
set A_i to 11" {7 g; g6 n3 l2 U6 v8 ^& K* u
move into Q_induct2
/ R! r; Y1 g3 g) Y# W3 V2 T: y) V move into pickaisle.induct2
0 ~+ j1 F: g& i5 q while A_i<=30 do begin ~' L ]0 v* H/ D5 D1 i$ C, y
travel to pickaisle.con(A_i)
# B4 Q/ V3 c8 m) Y8 l if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec1 P, b. z! U1 {* l& u
else wait for 10 sec
3 \& _0 q2 u0 L' k8 Z/ d( c if A_i=A_leave then send to die
1 @) Q4 `7 z4 a: S else inc A_i by 1' ~7 w9 A+ o7 q2 n) K% f7 g- C
end
1 C6 T# \0 v% v% uend' X4 `! K) e5 p" Y* u; e/ u6 V u
4 B- Q, P8 Z) s4 d- O4 c! j2 ~* Ebegin P_pick3 arriving0 i; A3 @3 u$ \+ T8 ?
set A_i to 21
8 L% w9 g# x9 x6 y move into Q_induct3
( G7 P- X* J* x L9 P" e9 Q1 b move into pickaisle.induct3
" i0 M1 W9 c* E" E) e; \ K; c7 l while A_i<=30 do begin7 k/ L/ ^; r5 \ _" y2 S
travel to pickaisle.con(A_i)' i$ K1 A1 D6 a
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec) Z. a& X+ r! E4 I; M
else wait for 10 sec8 j) d; Z5 d" q* P/ k3 T
if A_i=A_leave then send to die% F! E; x; z$ l9 z# ^
else inc A_i by 1/ b6 v( z! ?0 B6 L
end7 d3 m9 \ }$ 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,其它按你的 ...
|