登录论坛

查看完整版本 : 多目标达到fgoalattain的问题


mwlot
2008-08-23, 06:46
用fgoalattain函数实现多目标优化,

[x,fval,attainfactor,exitflag]=fgoalattain(@myfun,x0,goal,weight,[],[],[],[],lb,ub)

发现循环迭代过程中,待优化变量X 的值一直保持不变!

程序运行完毕提示:

Optimization terminated: magnitude of search direction less than 2*options.TolX
and maximum constraint violation is less than options.TolCon.
Active inequalities (to within options.TolCon = 1e-006):
lower upper ineqlin ineqnonlin
6 3
7
8

temp =

1


f =

1.0e+004 *

0.0017 0.2294 1.7479 0.0643


x =

50.0000 50.0000 50.0000 50.0000 50.0000 0 -0.0000 0.0000 0.7935 0.4149


fval =

1.0e+004 *

0.0017 0.2294 1.7479 0.0643


attainfactor =

1.7477e+004


exitflag =

4

请大虾指点啊!

pslpsl
2008-08-23, 10:14
自定义options的参数试下,options可在设计计算时控制精度要求、输出形式、算法选择、迭代次数、梯度等


出错原因可能是
搜索范围小于计算时控制精度要求
违反约束的结束标准是1e-006 ,而lb ub 限定的范围可能小于该值,导致优化终止。





options = optimset('TolX',1e-007); %根据实际设定计算时控制精度要求
options = optimset(options,'TolCon',1e-008 ); %根据实际设定违反约束的结束标准

[x,fval,attainfactor,exitflag]=fgoalattain(@myfun,...
x0,goal,weight,[],[],[],[],lb,ub,[],options)