欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[数学建模] 多目标程序设计 - Matlab 多目标程序设计解决方案

最编程 2024-04-25 17:39:30
...

通式总结:
在这里插入图片描述
在这里插入图片描述
fgoalattain()函数的用法:
x = fgoalattain(fun,x0,goal,weight)
x = fgoalattain(fun,x0,goal,weight,A,b)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = fgoalattain(problem)
[x,fval] = fgoalattain(___)
[x,fval,attainfactor,exitflag,output] = fgoalattain(___)
[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(___)

例:求解多目标线性规划问题
在这里插入图片描述
(1)定义目标函数:

function F=Fun16_5(x)
F=[-100*x(1)-90*x(2)-80*x(3)-70*x(4);3*x(2)+2*x(4)];
end

(2)goal由两个目标函数分别求出目标值合并而成;weight由abs(goal)取定

a=[-1 -1 0 0;0 0 -1 -1;3 0 2 0;0 3 0 2]
b=[-30,-30,120,48].'
c1=-[100,90,80,70]
c2=[0,3,0,2]
[x1,goal1]=linprog(c1,a,b,[],[],zeros(4,1))
[x2,goal2]=linprog(c2,a,b,[],[],zeros(4,1))
goal=[goal1;goal2]
[x,fval]=fgoalattain('Fun16_5',rand(4,1),goal,abs(goal),a,b,[],[],zeros(4,1))