pickaisle.induct1/2/3是个什么东东?+ ~- |% \& K8 o& r
move into后面,应该是一个station或control point,或者Queue/Container/Vehicle/Segment之类的东西。看你的报错信息,这个induct是个path么?
2 M7 f- z( i3 m. N/ O8 L _4 l* X* S- q
AutoMod Editor的语法报错信息,有时候会指在下一行,必要的时候要把上下几行都看一下。
" N" }) Q* H) r9 b) ]
% n2 p- O& o$ P+ |* L* Y另外,你的几个P_pick是完全重复的,建议以如下方式修改,可以减少代码编写量:
; I, L G% B8 {! W2 [4 K1. 创建一个Process:名称为P_pick,number of Processes为3,其它按你的需要设置;删除那几个P_pick;
. b6 A5 _$ N+ M0 d' q! `& l2. 创建一个Queue:名称为Q_induct,number of Queues为3,其他按你的需要设置并放置;删除那几个Q_induct;4 S0 O$ K5 E: f4 t9 v. o; Q
3. 以如下方式改写P_induction和几个P_pick的arriving procedure的代码:
, H6 T7 u- Z, S' U5 C! P# ?begin P_induction arriving
( A; ^: G6 f2 g3 x2 _ x1 y clone 1 load to P_pick(A_induct)
* d7 j6 Z s8 p( `end最大的系
. Z9 e3 }# j n' D: g3 Q) H0 X& {% x. M$ b3 C
begin P_pick arriving
: w. ~- |( c" ^8 q* g set A_i to procindex * 10 + 13 M$ n, z% e$ Y
move into Q_induct(procindex)( s1 }) I/ i& d; k4 V
move into pickaisle.induct(procindex)
3 L7 n! a9 N$ [9 h /*check the type of pickaisle.induct(i), for your last problem.*/
) B+ f' |/ ^ v7 H
, n, F4 `% L, c# E: _ while A_i<=30 do begin
4 V6 W& A+ q" \! p# C' `, s( Y travel to pickaisle.con(A_i)
% x' `' ]( `* m% A if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec+ V9 E( [" H) ^( m7 |, U
else wait for 10 sec
1 e) v3 Q. l. O/ k1 d if A_i=A_leave then send to die
: d% D! X# k% ~- k' {% `. F+ {9 K else inc A_i by 1
( @8 ~" Q4 ^9 ]2 H6 o2 J, X end
4 z6 t: L. _' S: [; z, Vend+ H" G2 r& L; R3 C, i
% ^% u/ q; p+ P: S其中的procindex为整形,代表当前process的序号。
$ Z5 o7 c q9 l, w4 o9 \station和control point只要以数字结尾,都可以直接用作数组。如pickaisle.induct(procindex),当procindex为1的时候,和pickaisle.induct1是等同的。 |