![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
各位大侠,我想用matlab中的fgoalattain函数,实现多目标函数优化。请问,函数中的goal怎么设置?
各位大侠,我想用matlab中的fgoalattain函数,实现多目标函数的函数值最小化。请问,函数中的goal怎么设置?目标函数都是平方和,所以都为正数。请问,实现多个...
各位大侠,我想用matlab中的fgoalattain函数,实现多目标函数的函数值最小化。请问,函数中的goal怎么设置?目标函数都是平方和,所以都为正数。
请问,实现多个函数的函数值最小化,用fgoalattain函数对吗?我随便设置了goal,初始值,结果不对。求各位大侠帮忙啊。非常感谢! 展开
请问,实现多个函数的函数值最小化,用fgoalattain函数对吗?我随便设置了goal,初始值,结果不对。求各位大侠帮忙啊。非常感谢! 展开
2个回答
展开全部
一般的结构:
[x,fval] = fgoalattain(FUN,X0,GOAL,WEIGHT,A,B,Aeq,Beq,LB,UB,NONLCON)
当然,你还可以在等式右侧添加输出量,等式左侧的输入量,如果缺则填[]。
按照你给的目标函数举例:
min (x1-1)^2+(x2-2)^2+(x3-3)^2
min x1^2+2*x2^2+3*x3^2
s.t. x1+x2+x3=6
x1,x2,x3>=0
%建立个m文件:
function y=fun(v,options)
x1=v(1);
x2=v(2);
x3=v(3);
y(1)=(x1-1)^2+(x2-2)^2+(x3-3)^2;
y(2)=x1^2+x2^2+x3^2;
%命令窗求解:
[x,fval]=fgoalattain(@fun,[1 1 1],[1 1],[1 1],[],[],[1 1 1],[6],[0 0 0],[])
%结果如下:
x =
2.0000 2.0000 2.0000
fval =
2.0000 12.0000
PS:fgoalattain函数是多目标规划早期的算法,目的是把多目标转化为单目标,给每个目标函数一个权重weight,然后去求解。
[x,fval] = fgoalattain(FUN,X0,GOAL,WEIGHT,A,B,Aeq,Beq,LB,UB,NONLCON)
当然,你还可以在等式右侧添加输出量,等式左侧的输入量,如果缺则填[]。
按照你给的目标函数举例:
min (x1-1)^2+(x2-2)^2+(x3-3)^2
min x1^2+2*x2^2+3*x3^2
s.t. x1+x2+x3=6
x1,x2,x3>=0
%建立个m文件:
function y=fun(v,options)
x1=v(1);
x2=v(2);
x3=v(3);
y(1)=(x1-1)^2+(x2-2)^2+(x3-3)^2;
y(2)=x1^2+x2^2+x3^2;
%命令窗求解:
[x,fval]=fgoalattain(@fun,[1 1 1],[1 1],[1 1],[],[],[1 1 1],[6],[0 0 0],[])
%结果如下:
x =
2.0000 2.0000 2.0000
fval =
2.0000 12.0000
PS:fgoalattain函数是多目标规划早期的算法,目的是把多目标转化为单目标,给每个目标函数一个权重weight,然后去求解。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询