用matlab求解多目标优化问题的程序,如何对目标函数进行加权?

用matlab求解多目标优化问题的程序,如何对目标函数进行加权?,第1张

对各个目标值的权重缺毁余进行计算,如有三个目标x1,x2,x3,每个目标的权重设分别为a(1),a(2),a(3),则最终的目标函数为a(1)*x1+a(2)*x2+a(3)*x3。具体权重怎么设置有很多种方法,也可以根据各个目伏滚标的重要性进行人为的设定,设定完后三个目标的权余祥重之和要为1,即:a(1)+a(2)+a(3)=1.

matlab中多目饥陆标线性规划函数,具体使用如下:

线性规划:LP(Linear programming,线性规划)是一种优化烂喊顷方法,在优化问题中目标函数和约束函数均为向量变量的线性函数,LP问题可描述为:

min x

s.t.

A·x b

Aeq·x=beq

vlb x vub

其中 ,b,beq均为向量,A,Aeq为矩阵,x为向量变量.矩阵A和向量b是线性不等式约束条件的系数,Aeq和beq是等式约束条件的系数.

在MATLAB中,用于LP的求解函数为linprog.其调用格式为:

[x,fval,lambda]=linprog

(f,A,b,Aeq,beq,vlb,vub,x0,options)

其中f,A,b,是不可缺省的输入变量,x是不可缺省的输出变量,它是问题的解.vlb,vub均是向量,分别表示x的下界和上界,x0为x的起始点,options为optimset函数中定义的参数的值,fval是目标函

数在解x处的值,lambda为在解x处的lagrange乘子.lambda.lower对应于vlb,lambda.upper对应于ulb,lambda.ineqlin是对应于线性不等式约束的,lambda.eqlin是对应于线性等式约束的.

下面举一个小例子看看函数的作用:

minZ=-4a+b+7c

s.t.

a+b-c=5 3a-b+c<=4

a+b-4c<=-7 a,b>=0

问a,b,c分别取何值时,Z有最小值

编写M文件

c=[-4 1 7]

A=[3 -1 11 1 -4]

b=[4-7]

Aeq=[1 1 -1]

beq=[5]vlb=[0, 0]

vub=[][x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)

结果:x = 2.2500 6.7500 4.0000fval = 25.7500

即a,b,c分别取2.2500 6.7500 4.0000时,Z有最小值25.7500

更加详细的例子如下,因为上面没有讲明最大值与最小值的区别,补充渗春如下:

函数格式:linprog(f,a,b,a1,b1,xstart,xend)

f:求解最小函数的表达式系数矩阵是m*1的矩阵

a:≤不等式条件约束矩阵其均为形式

b:a对应不等式右边的常数项

a1:=等式条件约束矩阵

b1:a1对应不等式右边的常数项

xstart:x的取值范围的最小值的系数矩阵为n*1的矩阵

xend:x的取值范围的最大值的系数矩阵为n*1的矩阵

函数说明:不存在的项填写[]即可

函数功能:线性规划求最优值.

利用MATLAB求春枝多目标线性函数优化问题,可以用

fgoalattain函数。求解方法:

1、建立自定义函数文件,其内容

function f = myfun(x)

f(:,1) = a*x(1)+b*x(2)+c*x(3)+d*x(4)

f(:,2) =e*x(1)+f*x(2)+g*x(3)+h*x(4)

2、建立自定义姿森档函数文件迹乱,其内容

function [c,ceq] =mycon(x)

ceq=1-(x(1)+x(2)+x(3)+x(4))

3、建立执行文件,其内容

x0=[x10,x20,x30,x40]

[x,f] = fgoalattain(myfun,x0,[],[],[],[],[],[],[0,0,0,0],[1,1,1,1],mycon)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8230890.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存