优化与决策——多目标线性规划的若干解法及MATLAB实现

摘要:求解多目标线性规划的基本思想大都是将多目标问题转化为单目标规划,本文介绍了理想点法、线性加权和法、最大最小法、目标规划法,然后给出多目标线性规划的模糊数学解法,最后举例进行说明,并用Matlab软件加以实现。

关键词:多目标线性规划 Matlab 模糊数学

一.引言

多目标线性规划是多目标最优化理论的重要组成部分,由于多个目标之间的矛盾性和不可公度性,要求使所有目标均达到最优解是不可能的,因此多目标规划问题往往只是求其有效解(非劣解)目前求解多目标线性规划问题有效解的方法,有理想点法、线性加权和法、最大最小法、目标规划法。本文也给出多目标线性规划的模糊数学解法。

二.多目标线性规划模型

  多目标线性规划有着两个和两个以上的目标函数,且目标函数和约束条件全是线性函数,其数学模型表示为:

                                               (1)

约束条件为:  

(2)

三.MATLAB优化工具箱常用函数

MATLAB软件中,有几个专门求解最优化问题的函数,如求线性规划问题的linprog、求有约束非线性函数的fmincon、求最大最小化问题的fminimax、求多目标达到问题的fgoalattain等,它们的调用形式分别为:

①.[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub)

f为目标函数系数,A,b为不等式约束的系数, Aeq,beq为等式约束系数, lb,ub为x的下限和上限, fval求解的x所对应的值。

算法原理:单纯形法的改进方法投影法

②.[x,fval ]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

fun为目标函数的M函数, x0为初值,A,b为不等式约束的系数, Aeq,beq为等式约束系数, lb,ub为x的下限和上限, fval求解的x所对应的值。

算法原理:基于K-T(Kuhn-Tucker)方程解的方法。

③.[x,fval ]=fminimax(fun,x0,A,b,Aeq,beq,lb,ub)

fun为目标函数的M函数, x0为初值,A,b为不等式约束的系数, Aeq,beq为等式约束系数, lb,ub为x的下限和上限, fval求解的x所对应的值。

算法原理:序列二次规划法

④.[x,fval ]=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)

fun为目标函数的M函数, x0为初值,goal变量为目标函数希望达到的向量值, wight 参数指定目标函数间的权重,A,b为不等式约束的系数, Aeq,beq为等式约束系数, lb,ub为x的下限和上限, fval求解的x所对应的值。

算法原理:目标达到法。

四.多目标线性规划的求解方法及MATLAB实现

4.1理想点法

例1:利用理想点法求解

解:先分别对单目标求解:

①求解最优解的MATLAB程序为

>> f=[3;-2]; A=[2,3;2,1]; b=[18;10]; lb=[0;0];

>> [x,fval]=linprog(f,A,b,[],[],lb)

结果输出为:x = 0.0000   6.0000

fval = -12.0000

即最优解为12.

②求解最优解的MATLAB程序为

>> f=[-4;-3]; A=[2,3;2,1]; b=[18;10]; lb=[0;0];

>> [x,fval]=linprog(f,A,b,[],[],lb)

结果输出为:x =3.0000  4.0000

fval =-24.0000

即最优解为24.

于是得到理想点:(12,24).

然后求如下模型的最优解

4.2线性加权和法

在具有多个指标的问题中,人们总希望对那些相对重要的指标给予较大的权系数,因而将多目标向量问题转化为所有目标的加权求和的标量问题,基于这个现实,构造如下评价函数,即

4.3最大最小法

在决策的时候,采取保守策略是稳妥的,即在最坏的情况下,寻求最好的结果,按照此想法,可以构造如下评价函数,即

4.4目标规划法

例4:对例1对进行目标规划法求解:

解:MATLAB程序如下,首先编写目标函数的M文件:

function f=myfun3(x)

f(1)=3*x(1)-2*x(2);

f(2)=-4*x(1)-3*x(2);

>> goal=[18,10]; weight=[18,10]; x0=[1,1]; A=[2,3;2,1]; b=[18,10]; lb=zeros(2,1);

>> [x,fval]=fgoalattain('myfun3',x0,goal,weight,A,b,[],[],lb,[])

结果输出为:x =    0.0000    6.0000

fval =   -12      -18

则对应的目标值分别为

4.5模糊数学求解方法

 由于多目标线性规划的目标函数不止一个,要想求得某一个点,使得所有的目标函数都达到各自的最大值,这样的绝对最优解通常是不存在的因此,在具体求解时,需要采取折衷的方案,使各目标函数都尽可能的大模糊数学规划方法可对其各目标函数进行模糊化处理,将多目标问题转化为单目标,从而求该问题的模糊最优解

五.结论

多目线性标规划是优化问题的一种,由于其存在多个目标,要求各目标同时取得较优的值,使得求解的方法与过程都相对复杂. 通过将目标函数进行模糊化处理,可将多目标问题转化为单目标,借助工具软件,从而达到较易求解的目标

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您的问题是关于Rosen梯度投影法在MATLAB中的实现?那我来为您解答一下。 Rosen梯度投影法是一种常用的非线性规划算法,可以用于求解无约束或有约束的非线性优化问题。在MATLAB实现Rosen梯度投影法的具体步骤如下: 1.定义目标函数 在MATLAB中,我们需要先定义目标函数。例如,假设我们要求解以下无约束非线性优化问题: min f(x) = 100(x2 - x1^2)^2 + (1 - x1)^2 则可以在MATLAB中定义目标函数如下: function y = rosenbrock(x) y = 100*(x(2) - x(1)^2)^2 + (1 - x(1))^2; end 2.实现Rosen梯度投影法 接下来,我们需要实现Rosen梯度投影法。具体步骤如下: (1)初始化变量 首先,我们需要初始化变量,包括迭代次数、初始点、学习率等。例如: max_iter = 1000; % 最大迭代次数 x0 = [-1.2, 1]; % 初始点 alpha = 0.001; % 学习率 (2)迭代更新 在每次迭代中,我们需要计算函数梯度,并根据梯度方向更新变量。具体实现如下: x = x0; for i = 1:max_iter % 计算梯度 grad = [400*x(1)^3 - 400*x(1)*x(2) + 2*x(1) - 2; 200*(x(2) - x(1)^2)]; % 梯度投影 if norm(grad) > 1 grad = grad / norm(grad); end % 更新变量 x = x - alpha*grad; end (3)输出结果 最后,我们可以输出最终结果。例如: fprintf('Optimization completed!\n'); fprintf('Minimum point: (%f, %f)\n', x(1), x(2)); fprintf('Minimum value: %f\n', rosenbrock(x)); 以上就是在MATLAB实现Rosen梯度投影法的具体步骤。希望能对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值