matlab中fmincon函数中不含等号的边界值怎么设置?

问题描述:

matlab中fmincon函数中不含等号的边界值怎么设置?
matlab中fmincon函数的不含等号的边界值怎么设置?fmincon中默认的边界条件是lb
1个回答 分类:综合 2014-09-21

问题解答:

我来补答
这个问题看似简单,但要想真正解决,可能从理论上存在很大的问题.如果英语阅读能力过得去,建议看一下MathWorks官网上的一个讨论:
www.mathworks.com/matlabcentral/newsreader/view_thread/235640
 
我简单概括一下讨论的主要内容:
1、约束条件如果不含等号,意味着可行域(所有符合约束条件的点构成的集合)不是一个闭集(closed set).很多看起来很简单的函数在闭集上有最优解,但在非闭集上却未必有解,例如,
        minimize f(x)=x
如果约束条件是x>=0,则很显然最优解为x=0.
然而,如果约束条件改成x>0,则该问题无解,这可以很简单地证明:对于任何x>0,都有f(x/2)<f(x),因而x不是最优解.
 
关于可行域、闭集、开集之类的概念,我就不展开了,如有兴趣请找本数学规划方面的书看看.
 
2、对于非闭集约束的问题,该讨论中三个人给了三个不同的建议:
(1)Matt建议直接按照无约束优化问题求解(fminunc),然后检验是否满足约束.
(2)Bruno Luong建议把约束条件改为包括等号,使得可行域成为闭集,用fmincon求解之后然后检验最优解是否刚好落在边界上(即是否满足本来不应包括的等号条件):如果是,则问题无解;否则求出的解即为所需.
(3)Steven Lord建议把非闭约束的边界值改变一个很小的值(例如eps),从而改为一个闭约束问题,例如,把x>0改成x>=1e-12,然后进行求解.
 
上面的三个建议中,我个人更倾向于第二个,其次是第三个.
 
 
展开全文阅读
剩余:2000
上一页:14,16
下一页:对一下