多目标线性规划及matlab应用

1.问题
2.目标规范化
3.处理多目标规划的方法
(1)约束法
(2)评价函数法
(3)功效系数法
4.多目标规划的MATLAB求解
(1)理想点法
(2)线性加权和法
(3)最大最小法

在实际问题中,衡量一个设计方案的好坏往往不止一个标准,常常要考虑多个目标。例如研究生产过程时,人们既要提高生产效率,同时还要考虑产品质量,又要考虑成本以降低生产费用,可能还希望生产过程中的环保问题,即废渣、废水、废气造成的污染小。在设计导弹的过程中,既要射程远,又要燃料省,还要重量轻且打击精度高。在进行投资决策时,既希望回报高的同时又希望降低投资风险,如此等等。这就向我们提出了一个多指标最优化问题。我们把在这样的背景下建立起来的最优化称之为多目标规划问题。

1.问题
上述问题可以归结为标准形式:
在这里插入图片描述
多目标规划问题域线性规划和非线性规划问题的主要区别就在于,它所追求的目标不止一个,而是多个。
2.目标规范化
由于许多实际问题中,各个目标的量纲一般都是不同的,所以有必要将每个目标事先进行规范化。
在这里插入图片描述
3.处理多目标规划的方法
(1)约束法
约束法又称主要目标法,它根据问题的实际情况.确定一个目标为主要目标,而把其余目标作为次要目标,并根据决策者的经验给次要的目标选取—定的界限值,这样就可以把次要目标作为约束来处理,从而就将原有多目标规划问题转化为一个在新的约束下,求主要目标的单目标最优化问题。
在这里插入图片描述
(2)评价函数法
多目标问题的各个目标函数构造出来的,称为评价函数。
在这里插入图片描述
求解上述问题之后,可以用上述问题的最优解x作为多目标规划问题的最优解,正是由于可以用不同的方法来构造评价函数,因此有各种不同的评价函数方法,下面介绍几种常用的方法。
评价函数法中主要有:理想点法、平方和加权法、线性加权和法、乘除法、最大最小法。
(3)功效系数法
在这里插入图片描述
4.多目标规划的MATLAB求解
由于多目标规划中的求解涉及到的方法非常多,故在MATLAB中可以利用不同的函数进行求解,例如在评价函数法中我们所得最后的评价函数为一线性函数,且约束条件也为线性函数,则我们可以利用MATLAB优化工具箱中提供的linprog函数进行求解,如果我们得到的评价函数为非线性函数,则可以利用MATLAB优化工具箱中提供的fmincon函数进行求解,如果我们采用最大最小法进行求解,则可以利用MATLAB优化工具箱中提供的fminimax函数进行求解。下面我们就结合前面各小节中所分析的几种方法,讲解一下典型多目标规划问题的MATLAB求解方法。
(1)理想点法
例1 利用理想点法求解
在这里插入图片描述
在这里插入图片描述
求解该线性规划的MATLAB的代码和相应的运行结果为:
第一个单目标规划问题

c=[2;-3];
A=[3 2;1 1];
b=[12;8]
lb=[0;0]
[x,fval]=linprog(c,A,b,[],[],lb,[])
Optimization terminated.
x =
    0.0000
    6.0000
fval =
  -18.0000

第2个单目标规划问题

c=[-5;-3];
A=[3 2;1 1];
b=[12;8]
lb=[0;0]
[x,fval]=linprog(c,A,b,[],[],lb,[])
Optimization terminated.
x =
    4.0000
    0.0000
fval =
-20.0000

在这里插入图片描述
构造描述该评价函数的M-函数

function f=objfun(x)
f=sqrt((2*x(1)-3*x(2)+18)^2+(5*x(1)+3*x(2)-20)^2);

然后用非线性规划的方式求解上述问题的代码为:

A=[3 2;1 1];
b=[12;8];
lb=[0;0];
x0=[0;0];
[x,fval,exitflag]=fmincon(@objfun,x0,A,b,[],[],lb,[])

在这里插入图片描述
(2)线性加权和法
利用评价函数中的线性加权和法求解如下多目标规划问题:
例2:
在这里插入图片描述
建立目标函数的M-函数

function f=objfun(x)
f=x(1)^2+1.2*x(2)^2+1.4*x(3)^2;

由于目标函数非线性函数且具有线性等式约束和边界约束,因而我们调用MATLAB中求解非线性规划的fmincon函数对此问题进行求解,同时注意如果只考虑第一个目标函数,由这种特殊形式,即在设计变量的和为一定值,需要求其平方和的最小值时,最优解必然是当这几个设计变量的值相等时取得,于是我们可以将这个解设为问题的初始点,开始迭代,故求解该问题的代码为:

Aeq=[1 1 1];
beq=[3];
lb=[0;0;0];
x0=[1;1;1];
[x,fval]=fmincon(@objfun,x0,[],[],Aeq,beq,lb,[])

在这里插入图片描述
(3)最大最小法
采用评价函数法中的最大最小法,而MATLAB也为这种方法提供了专门的求解函数fminimax,在讲解这方面的例题之前,我们首先介绍一下MATLAB优化工具箱中所提供的最大最小法的求解函数fminimax。
最大最小法问题的MATLAB标准形式为:
在这里插入图片描述
函数fminimax的调用方式和其他的最优化函数类似,其中所涉及的输入参数和输出参数的含义与非线性规划的求解函数fmincon类似,使用方法也基本相同,细节问题读者可以参考MATLAB的帮助文件。
例3:求解最大最小问题:
在这里插入图片描述
建立描述目标函数的M-函数文件,注意到一共有五个目标函数,所求目标为这五个函数最大值中的最小值

function f = objfun(x)
f(1)= 2*x(1)^2+x(2)^2-48*x(1)-40*x(2)+304;     
f(2)= -x(1)^2 - 3*x(2)^2;
f(3)= x(1) + 3*x(2) -18;
f(4)= -x(1)- x(2);
f(5)= x(1) + x(2) - 8;

然后设置求解的初始点为x0=[0;0],调用fminimax求解该问题的代码

x0 = [0; 0];
[x,fval,maxfval] = fminimax(@objfun,x0)

运行结果为:
Local minimum possible. Constraints satisfied.
fminimax stopped because the predicted change in the objective function
is less than the default value of the function tolerance and constraints
were satisfied to within the default value of the constraint tolerance.

Active inequalities (to within options.TolCon = 1e-006):
lower upper ineqlin ineqnonlin
1
5
x =
4.0000
4.0000
fval = 0.0000 -64.0006 -1.9999 -8.0000 -0.0000
maxfval =
2.6897e-008
在这里插入图片描述

  • 27
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计量小虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值