导航:网站首页 >
matlab中fmincon函数中不含等号的边界值怎么设置?,matlab中的fmincon函数一直求不出为什么
matlab中fmincon函数中不含等号的边界值怎么设置?,matlab中的fmincon函数一直求不出为什么
匿名网友:
这个问题看似简单,但要想真正解决,可能从理论上存在很大的问题。
如果英语阅读能力过得去,建议看一下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)关于可行域、闭集、开集之类的概念,我就不展开了,如有兴趣请找本数学规划方面的书看看。
2、对于非闭集约束的问题,该讨论中三个人给了三个不同的建议:(1)Matt建议直接按照无约束优化问题求解fminunc,然后检验是否满足约束。
(2)Bruno Luong建议把约束条件改为包括等号,使得可行域成为闭集,用fmincon求解之后然后检验最优解是否刚好落在边界上即是否满足本来不应包括的等号条件:如果是,则问题无解;否则求出的解即为