|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
& }+ `8 M- |8 L8 P% ^7 s" s8 q/ f, c8 O# {
我的问题是,在每个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中的数值,不知道会不会有什么不妥。+ o$ U1 ?- J4 ^6 [( b
' h6 H) x3 e8 |& u+ D
begin P_read arriving! S$ {$ o+ J5 W- k
while 1=1 do begin- f8 ~% X& j8 H/ e7 m" P
read A_tote from "data.txt" with delimiter "\n"( p$ H( g! q+ P3 k @3 C
read A_time from "data.txt" with delimiter "\n"( I& Q2 P. M( h4 Z
read A_leave from "data.txt" with delimiter "\n"
1 r$ e: g2 y- D% Z; \6 C9 Q read A_picks from "data.txt" with delimiter "\n"
( K) H7 t! j2 R set load type to A_tote; h! Q& ?7 ?3 X1 t/ K7 v; n; D
if A_tote="tote 1" then set A_induct to 19 h1 P2 h* r. g- \; s( b3 N4 H
else if A_tote="tote 2" then set A_induct to 2) U- r- Y q5 t' j
else set A_induct to 3 & i9 R4 Z1 d5 j
set A_i to 0
# l2 C, O+ X' |1 d9 h! D' | clone 1 load to P_induction5 o" g; e9 q; u3 a/ Y1 k( r
wait for A_time sec
% N8 U) y6 Y5 p! L end& C$ f- z. p& L& }
end
6 g ^/ Z5 i. g
/ v3 h# h# A% ?% ]' Z5 n! e% ~begin P_induction arriving% V' k" V$ f3 B5 ]* S9 k
if A_induct=1 then clone 1 load to P_pick1' R$ A$ g+ C/ J5 T4 u7 A. j
else if A_induct=2 then clone 1 load to P_pick2. }% e* }9 W$ H3 b# ]$ z" H8 G) ]; C
else clone 1 load to P_pick3
% K% ?* w" [* x% m+ n' V! @end
0 s! V% d6 j! R0 a& I8 p$ z" i
; H7 v, s; T8 x4 b5 tbegin P_pick1 arriving1 y) L Y( f" g0 i; Q# h
set A_i to 1
8 N9 y- y+ l% ~3 M# F move into Q_induct1
1 i; R2 }& V9 Z2 p. u move into pickaisle.induct1) k4 z; F: u2 O" g2 n( e6 K
while A_i<=30 do begin
' d3 J! A3 ]0 A0 I1 `6 [ travel to pickaisle.con(A_i)6 y. a7 k/ W& Z$ _) w8 T) j& [) A
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec# N; @: ]4 l0 }
else wait for 10 sec
$ K& J w: ~, _& ^' X2 v/ H4 M( s) } if A_i=A_leave then send to die
8 g' E! e {/ ^: e5 u; M9 T- ~ else inc A_i by 1
3 ~) i& L8 @( \! r1 I end
) a O& c6 l! v+ y5 Kend' K' b# p/ G9 h6 S. O/ O# T
7 d% P8 w" e6 jbegin P_pick2 arriving
9 I) | U$ M# a7 H set A_i to 111 Z( u3 X- `* @! q
move into Q_induct2
# U6 v, E* B( t8 r move into pickaisle.induct2& ]! X% q% M, `% k- ?6 x
while A_i<=30 do begin
+ P: r; M" D$ I. Z+ l7 [4 x travel to pickaisle.con(A_i)
, x( _6 W3 s. Z# p. T if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
) X S% n" N- ~5 N% e; Y else wait for 10 sec& ?0 n4 L! S' U* ?4 h5 v7 X1 L* t
if A_i=A_leave then send to die A/ D) o& ~8 e+ v- m/ k. h& o
else inc A_i by 1) L2 `& A" }0 y
end
" t# X- v$ a' Q. e% V: wend) A# W) F# u/ Z2 a
. j# e# `- ~! z3 }begin P_pick3 arriving
6 B/ Z4 Q% O( V+ q set A_i to 21
2 W; C3 t' R& v0 x$ ` move into Q_induct3
8 ?; i d k! ^2 ^9 p7 d0 l- `* P4 l8 T move into pickaisle.induct3
0 q( T# q# _( k$ N& ] while A_i<=30 do begin3 g; t g0 K7 m5 ^# i
travel to pickaisle.con(A_i)
( k" C! n: ]' q if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec* r/ d D* M7 M& {
else wait for 10 sec! c( i8 g6 O! Z+ f2 f
if A_i=A_leave then send to die
! u% T: c3 m. ~: q* l' C else inc A_i by 1
2 J: i& W9 Y: D& a0 z end' v# Y B. D1 I7 e7 x" m
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,其它按你的 ...
|