|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
7 r8 S8 f3 v8 M8 h7 f5 l) B! S( `5 B+ {- Z! L) s4 W2 L& }+ m
我的问题是,在每个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中的数值,不知道会不会有什么不妥。" y; p& H$ g6 N
' e8 o; T+ `0 W. c# }, m1 e
begin P_read arriving
8 L6 C R& k- L while 1=1 do begin
; a9 T0 O# O. w- V# a# `" N read A_tote from "data.txt" with delimiter "\n"1 y) S+ a( g* T# P4 ^
read A_time from "data.txt" with delimiter "\n"
3 |. _% i& _' ~; p9 r8 d( r read A_leave from "data.txt" with delimiter "\n"
, W" e- \! `+ H& @+ C read A_picks from "data.txt" with delimiter "\n"& S* e8 r- c$ q. v& j
set load type to A_tote& j: B! J7 m; t3 ?) x- F: U0 o
if A_tote="tote 1" then set A_induct to 1, j& F) I% u% b
else if A_tote="tote 2" then set A_induct to 29 ]: Y/ R, \# }' `/ m6 x
else set A_induct to 3
! }! u: _" C3 {6 L( X set A_i to 0
# ?3 m+ f' [7 Q clone 1 load to P_induction
6 o% j# I4 A& Q/ G7 j9 D wait for A_time sec
% i, x) k$ k7 V* d f& h end
0 N5 L: H* ~0 qend( H6 Y$ h. J2 K( E. s
# {3 F8 P) g, }* `: ~begin P_induction arriving4 E6 J e" X% }
if A_induct=1 then clone 1 load to P_pick17 M9 w( N0 O3 m5 [
else if A_induct=2 then clone 1 load to P_pick2
4 l) g; }* {% E else clone 1 load to P_pick3
- N/ _# a& Z5 }' f3 b/ Dend/ ?4 S' r2 V# Y; {/ i
) N0 J2 J' L- G
begin P_pick1 arriving
/ l6 M; v2 N0 D3 U+ W set A_i to 1
4 i$ Y) @/ X3 X* J e+ h6 u move into Q_induct1$ b$ ^7 l2 u9 x
move into pickaisle.induct1
* j) F: y E6 ~7 m6 z while A_i<=30 do begin
2 `+ C! n4 R! B travel to pickaisle.con(A_i)- Y4 P t5 z8 v- o# C3 `
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec2 I- p2 p# ^2 H! z2 @) U
else wait for 10 sec
1 ~/ m% n/ k9 a# w' o if A_i=A_leave then send to die
8 Q' G5 b8 x& g, ] else inc A_i by 1- K9 r" `! s/ r. L8 _
end& M, f" w/ \2 V: q/ |$ ^& m
end
. Z8 \9 T# R2 O; O4 X4 {/ n
8 e3 k @ W7 ^- W, [begin P_pick2 arriving
' U5 u: h4 Z/ u, k2 g. Y set A_i to 11
/ ]$ H4 b6 n$ O2 k% F% e J2 R. e move into Q_induct2% T! Q! [& K: T% N+ S- `
move into pickaisle.induct2
* @/ C$ T B& Y9 P while A_i<=30 do begin
" f3 a$ D, R6 n5 S travel to pickaisle.con(A_i)
. |# G% I3 K2 F1 V if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec5 |3 o" X, j9 {' H: i) T" F$ q7 U
else wait for 10 sec9 v! e; e3 k: s$ ]6 f
if A_i=A_leave then send to die |1 \) F4 e. {5 ~( z; R) ]
else inc A_i by 1: ?# n4 B# m: T) v$ _, F, _
end
9 K' P; P- [8 x. M5 M' Send
( q h# S2 H4 e" \, g! r$ E; \
begin P_pick3 arriving2 {9 j8 L1 c; g! M
set A_i to 21* G2 N: \' H; p5 \: V i" s! l
move into Q_induct3. V, ?" A4 c: }- [. r& `
move into pickaisle.induct34 [/ n \ E2 k
while A_i<=30 do begin
d) m h8 s+ X+ @ travel to pickaisle.con(A_i)7 N) Z9 g+ w* r& i& ]3 b1 c
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
+ x) F4 s8 M5 ] else wait for 10 sec
: s( M- c" I% D9 S5 M if A_i=A_leave then send to die
; ^. S: [' l( ] H else inc A_i by 1& p6 _3 O* A: h$ h" e
end( A3 e" V# `! ?9 B- f q2 S& ]
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,其它按你的 ...
|