|
|
遇见一个难题,请教各位高手。
" }8 R, ^" [5 Z5 `/ U' _( k& Y+ Q; \! J. u) C( P
使用transporter将物料从A点运送到B点,通常情况下,每次运输100件,但是运输几次后,剩余的产品不够100件(例如订单总数是220件,第一次运输100件,第二次运输100件,第三次只有 20件可以运了),当运行到第三次的时候,仿真就停滞了,无法继续下去。不知道如何修改程序(我现在的程序如下)。
) I- K/ E9 b+ r, z( D( V: ^3 r r1 }3 q1 g. C; K' g _
需要说明的是,A点的运输量不是固定的,因为有两台并联的机器,因此我无法通过表格直接得出已运送量和未运送量。
* ^0 Z" C7 j4 `( K3 b' ?) [3 z/ {2 i3 @4 r. V+ g. t$ ~! Y# `
is" l& \! e6 x; @3 d: I; j C
i,m: integer; -- 整数变量
! I6 V$ |( [) m+ ~ Name:string; -- 字符串变量
3 l' a! ~2 o8 N: S Obj:Object; -- 对象类型变量
: L0 ~0 h' F; ? `5 u( Q, Z
- i& ?) U: A- ]" e7 k1 |7 R2 Ydo& D" U" P/ \, U+ @6 U
m := str_to_num(omit(?.Name,1,1)); -- 先取Drain*后面的数字,在转换成整数类型
9 j9 I5 P) e4 w+ B) S( k Name := sprint("BA", m); -- 生产线名称& D$ ~5 E9 [; A1 L
Obj := str_to_obj(Name); -- 转换成对象变量
* d( R( m8 ~- C
7 t! E% [) F: y8 Y( P% _. B' k FOR i:=1 to 100 LOOP
0 r$ O2 B L1 i, L$ F/ S waituntil OBJ.occupied prio 1;
+ f0 X! `9 R' Y7 L; e: F OBJ.cont.move(@); ! M6 { W: O0 o6 t, I6 I
. x9 T# T! Z/ c6 G% i
NEXT;6 l* O/ G3 {" p* L
@.backwards:=false;* l& F/ {: e' R
end;
* i8 @2 d0 i! ~- P |
|