声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1193|回复: 3

[综合讨论] fmincon求最小值

[复制链接]
发表于 2010-7-21 16:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
约束条件 x(1)*x(2)=0.95;
0.925656<=x(1),x(2)<0.99999;
目标函数为:f=exp(0.1*(x(1)-0.925656)/(0.99999-x(1)))+exp(0.3*(x(2)-0.925656)/(0.99999-x(2)));
我编写了一个小程序:
目标M文件为:
function f=myfunt(x)
f=exp(0.1*(x(1)-0.925656)/(0.99999-x(1)))+exp(0.3*(x(2)-0.925656)/(0.99999-x(2)));

非线性等式约束为:
function [c,ceq]= mycon(x)
c=[];
ceq=x(1)*x(2)-0.95;

在窗口输入:
fmincon(@myfunt,[0.95 0.95],[],[],[],[],[0.925656 0.925656],[0.99999 0.99999],@mycon)
结果却不对。
Warning: Large-scale (trust region) method does not currently solve this type of problem,
using medium-scale (line search) instead.
> In fmincon at 317
Maximum number of function evaluations exceeded;
increase OPTIONS.MaxFunEvals.
ans =
   0.999990000000000   0.950010000235281

麻烦大家分析下原因。
我又试了下,把上界变为[0.99 0.99]或[0.999859 0.99859]时,结果都是对的,但是变为[0.999 0.999]时,结果就是不对,不知道为什么。
各位,帮下忙嘛,这个问题困惑我好久了。十分感谢啦。

[ 本帖最后由 ChaChing 于 2010-7-22 11:19 编辑 ]
回复
分享到:

使用道具 举报

发表于 2010-7-22 10:12 | 显示全部楼层
这种现象很正常吧,可能是你的函数越接近0.999越奇异

评分

1

查看全部评分

发表于 2010-7-22 11:23 | 显示全部楼层
个人浅见
这类求取最佳值的问题, 若可以的话, 先画画函数图, 了解下函数值的分布!
初步掌握函数分布情况, 对问题才能容易处理
发表于 2010-7-22 11:28 | 显示全部楼层
用1stOpt比较简单强大:

  1. Parameter 0.925656<=[x1,x2]<0.99999;
  2. MinFunction exp(0.1*(x1-0.925656)/(0.99999-x1))+exp(0.3*(x2-0.925656)/(0.99999-x2));
  3.           x1*x2=0.95;
复制代码
结果:
目标函数值(最小): 2.83666394574412
x1: 0.981849942770918
x2: 0.967561292837648

约束函数:
   1: x1*x2-(0.95) = 0
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-26 00:36 , Processed in 0.068388 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表