Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-08-23
年龄: 49
帖子: 1
声望力: 0 ![]() |
![]()
用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 请大虾指点啊! |
![]() |
![]() |
![]() |
#2 |
普通会员
注册日期: 2008-08-17
年龄: 36
帖子: 70
声望力: 20 ![]() ![]() |
![]()
自定义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) |
![]() |
![]() |