熊庆如
(浙江东方职业技术学院,浙江 温州325011)
在科学管理和社会、经济与生活的各种活动中,经常会用到一类合理地分配和使用有限资源,使能获得“最优效益”的问题。如果要研究问题的目标函数和约束条件的函数都是线性的,这类问题就是线性规划问题。对于只有单个的目标函数的线性规划,我们都能方便地解决。但是在实际应用中往往出现多个目标函数的线性规划,为了帮助解决此类问题,笔者罗列了几种常见的情形,利用数学的基本思想和方法,归纳出几种解决的方法。
求解思路:把多目标化为单目标。求解方法:使用多种方法,视模型特点而定。这里介绍目标法。
从多个目标中选出一个目标来(这些目标函数往往是相互矛盾的),这里不妨选择利润最大作为主要目标。把其他的目标函数转化成约束条件,这样就称为了单目标。如何将目标函数转化为约束条件呢?
首先,我们要知道需要转化的目标函数的范围,为求范围,就需要求其最大值和最小值。在其范围内取一个合适的值作为约束条件值,形成约束有条件。
现在以案例1 为例说明求第二目标范围。这里先把删除第一目标,再求第二目标最小值。其程序如下:
从结果发现,f2的最小值为0。
同理求最大值,得到如下结果是,f2的最大值为60,因此,我们可以确定目标2 的取值范围是:f2∈[0,60],不妨取f2燮50。(这里可根据题意也可以取0 至60 之间的其他数)
因此,原多目标模型就转化为单目标模型,结果如下:
结果显示:(f1*,f2)=(106,50),(x1,x2,x3)=(8,2,1),此未知数的值,不是最优解,只是满意解。
分析:两个目标都求最小,我们考虑将将这两个目标函数相加,然后求最小,minf1+f2,但是考虑到两个目标函数的系数权重有所不同。
比如,上述模型中,
第一目标范围是:f1∈[230,1150]
第二目标范围是:f2∈[12,60]
这两个目标的数量级不同,如果就这样简单相加,会造成“大数吃小数”的现象,从而造成结果失真。所以不能贸然将两个目标加到一起,为此需要进行“标准化”处理。使得f1与f2的数量级相同,达到具有可比性。
如何进行“标准化”呢?
第一目标标准化:
第二目标标准化:
f1与f2都是[0,1]之间的数,其数量级相统一了。但考虑到两个目标因素相对有所偏重,两个目标函数应该采取偏重的办法进行处理。这里引进权重比系数w1与w2(其中w1+w2=1,w1,w2>0),
化为单目标就得到:minf=w1f11+w2f22
比如w1=0.6,w2=0.4 或w1=0.7,w2=0.3,在同一数列级上的两个因素就有所偏重了。这种方法我们就定义为线性加权法。
根据这一思路,在lingo软件中,编写程序如下:
案例3 与案例2 的不同点,在于目标1 函数与目标2 函数不同,一个是求极大值,另一个是求极小值,两者就直接相加了。
第一目标标准化:
在第一目标标准化中,f1与f11是同向的,即f1取得极大值时,f11也取得极大值;在第二目标标准化中,发觉f2与f22是逆向的,即f2取得极小值时,就是f22取得极大值。
所以,将f11与f22合并相加就得到一个同向的函数,称作极性统一,数列级也统一。求这一个函数的极大值就满足题意了。
最后,引进权重系数,将多目标化为单目标了:
将此法通过lingo软件编程如下:
运行结果显示,目标值是(f1,f2)=(990,44),自变量取值是(x1,x2,x3)=(11,0,0)
目标函数相互矛盾。
第一目标的范围是:f1∈[230,1150],第一目标是求最大值,它的理想解是1150;
第二目标范围是:f2∈[12,60],第二目标是求最小值,它的理想解是12;
化为单目标:minf=w1(1150-f1)+w2(f2-12)
通过求f的最小值,让f1逼近其理想值1150,f2逼近其理想值12,这样就可以取到最优值。
在软件lingo中运行程序:
程序运行结果显示:目标值是(f1,f2)=(1150,57),自变量取值是(x1,x2,x3)=(7,1,3)