如何才能赚最多的钱——整数规划模型

一个汽车队,有甲、乙两种汽车。甲汽车每辆可装体积为 1 立方米的货

物,载重量为 5 吨,可收入 500 元。乙种汽车每辆每次可装体积为 1 立方米

的货物,载重量为 9 吨,可收入 800 元。由于值班司机人数、汽油燃料等条

件的限制,每次车队派车运货体积总计不能超过 6 立方米,载重量不能超过

45 吨。问题是每次安排甲、乙车各多少辆,才能既满足限制条件,又取得最多的收入?

我们想一想这个问题,会发现两种汽车装载货物的体积、重量与汽车的数量是成比例关系的,而车队的收入也是与车辆数目成比例关系的。因此, 用线性规划模型可以解决这一问题。应用图解法或单纯形法,可以计算出结果,每次应派甲种车 2.25 辆,乙种车 3.75 辆,总收入为:

5×2.25+8×3.75=41.25(百元)

现在新的问题又来了,这种安排是不可能实行的。2.25 辆甲种车怎么派?要么是 2 辆、要么是 3 辆,谁也不可能派出不是整数的车。乙种车也是同样要派出整数。像这种要求得到整数结果的线性规划模型通常被称做整数规划模型。

可不可以集零为整?如果把小数点后面的第一位数四舍五入,即甲种车派 2 辆,乙种车派 4 辆,这是不是上面整数规划模型的最优结果呢?通过计

算会发现该结果超过了限制条件:2 辆甲车装载 10 吨,4 辆乙车可装载 36

吨,合计可装载 46 吨,但规定不能超过 45 吨。如果把小数点后的数字舍掉, 就不会超出限制条件了,但这样的结果是不是符合最优要求呢?再来计算一下,每次甲种车派 2 辆,乙种车派 3 辆,总收入为:

500×2+800×3=3400(元)

这种情况下,每次派车运货的体积总量为: 1×2+1×3=5(立方米)

每次派车运货的载重量总计为: 5×2+9×3=37(吨)

可以看出还有 1 立方米体积和 8 吨载重量没有利用,还可再增加一辆甲

种车,即 3 辆甲种车,这时收益为: 500×3+800×3=3900(元)

从而我们知道,四舍五入和去掉小数点后面的尾数化零为整的方法都不能求出整数规划模型的最优结果。

有人建议将条件允许的派车方案都列举出来,一一进行计算、比较,就可以找到最优结果。

对于上面汽车队的派车的问题,要计算 25 种方案。如果因素增加,解决整数规划模型的方案就可能成百上千,不仅计算复杂,光列举这些方案就会令人头晕眼花。

那该怎么办呢?现在,科学家已找到了一种解决整数规划问题的方法, 叫做“分支定界法”。这种方法首先是找到相对应的线性规划问题的最优结果,这个结果是整数规划的界限(例如上述汽车队派车问题,相对应的线性规划的最大收入是 4125 元,整数规划的结果一定不会超过 4125 元)。然后作出判断并进行计算,如果线性规划求出的结果恰恰是整数,这时可以认为已找到答案。如果线性规划求出的因素中有非整数结果,如 2.25 辆车,就要设法分别在限制条件内把各非整数因素化整,求出结果,进行比较,最后找到整数规划的最优结果。对于上面派车问题,可以找到的结果是,不派甲种车,派乙种车 5 辆,可以得到最高收入:

5×0+8×5=40(百元)

在实际系统中,存在许多因素,它们一定要用整数值来表示,如机器台数、人数、火车车厢数目、集装箱数、工厂个数、商店家数以及在某地是不是建工厂,建不建商店、学校、车站等等,这些数值都不能有分数(如建, 可用 1 表示;若不建,用 0 表示)。涉及这些因素的线性规划模型,都要用整数规划来解决,用分支定界法等方法求出最优结果。

分派问题也是另一类广泛应用的整数规划问题。例如学校周末劳动,有四项工作(给树木花草浇水、打扫教室、修理桌椅、出黑板报)要分配 4 位

同学去完成。这 4 位同学中,不同的人对不同的工作所用时间不一样。有人力气大,浇水快;有人写字娴熟,出黑板报花的时间少。安排得好,4 位同学总计花费的时间就会最少。还有分派不同的工人到不同的车间去工作,不同的轮船按不同的航线航行,不同的飞机去不同的城市等,都是属于分派问题。