多目标优化目标函数求解过程中,最小化转化为求最大值问题。设定C-xij保证其为正数,C的赋值有没有依据?

多目标优化目标函数求解过程中,最小化转化为求最大值问题。设定C-xij保证其为正数,C的赋值有没有依据?,第1张

一般的结构:[x,fval]=fgoalattain(FUN,X0,GOAL,WEIGHT,A,B,Aeq,Beq,LB,UB,NONLCON)当然,你还可以在等式右侧添加输出量,等式左侧的输入量,如果缺则填[]。按照你给的目标函数举例:min(x1-1)^2+(x2-2)^2+(x3-3)^2minx1^2+2*x2^2+3*x3^2s.t.x1+x2+x3=6x1,x2,x3>=0%建立个m文件:functiony=fun(v,options)x1=v(1)x2=v(2)x3=v(3)y(1)=(x1-1)^2+(x2-2)^2+(x3-3)^2y(2)=x1^2+x2^2+x3^2%命令告仿窗求解:[x,fval]=fgoalattain(@fun,[111],[11],[11],[],[],[111],[6],[000],[])%结果如袜扰纤下:x=2.00002.00002.0000fval=2.000012.0000PS:fgoalattain函数是多目标规划早期的算法,目李咐的是把多目标转化为单目标,给每个目标函数一个权重weight,然后去求解。

用matlab求解题主的多目标优化问题,可以这样来考虑:

1、创建目标函数,其内容

w1 =0.4w2=1-w1

y =w1*0.78539*(x(1)^2-x(2)^2)+w2*x(1)^2

2、创建约束条件函数,其内容

c(1)=(9224400*x(1)/(x(1)^4-x(2)^4))-45

c(2)=(13050819/(x(1)^4-x(2)^4))-1

c(3)=216379-(x(1)^4-x(2)^4)/x(1)

c(4)=-x(1)+x(2)

ceq = []

3、初设x0的初值,即 x0 =[80,20]

4、设定上下限值漏御,即lb=[0,0]ub=[170,100]

5、使用fmincon最小值最优化函数态漏,求出x(1)、x(2)的值。帆搜烂即

[x,fval] = fmincon(@(x) fmincon_fun(x),x0,[],[],[],[],lb,ub,@(x) fmincon_con(x))

6、验证约束条件,即

disp('x2-x1<0')

disp(x(2)-x(1))

运行代码后得到如下结果。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存