【发布时间】:2016-03-31 04:15:45
【问题描述】:
我正在尝试在while 循环中使用fmincon,这样在不满足while 条件之前,必须执行fmincon。每次fmincon 不能满足特定条件(例如x(N)-7.6==Tol)时,应更新(增加)非线性约束的数量N。 fmincon 怎么可能?
假设我最初有 18 个非线性等式方程 (ceq(1) ... ceq(18))。当while条件不能满足时,下一次迭代时非线性等式方程的数量应增加到23个(ceq(1) ...ceq(23))。
感谢您的创新想法....让我们为您提供有关我想做的事情的更多详细信息。我有一些非线性代数方程,所以我需要使用 NLP(非线性规划)求解器。除了我的成本函数是最小时间问题。实际上我的非线性约束方程是一些在时间坐标上离散化的动态控制方程。 N 是离散化的次数。基于拉格朗日优化技术,为了找到最优解,应将标量函数(拉格朗日)的梯度添加到系统中。正如我在我的问题中提到的,我需要用初始 N 来测试我的问题,然后如果 fmincon 的 Xoutput 不能满足约束,它需要增加描述的数量。它继续,直到 fmincon 的输出最佳答案足够接近我想要的答案。
【问题讨论】:
-
uhhh.....方程式不同吗?如果不能满足 {ceq(1), ... ceq(18)},如何满足这些方程的超集?
-
@MatthewGunn:
fmincon执行局部优化,所以我想添加额外的约束可能会迫使它在空间的其他部分进行搜索。 -
@horchler 通常,您不希望在优化问题中出现非线性等式约束。尝试最小化
(x-4).^2受限于sin(x*pi)==0使用fmincon。约束将x约束为整数值,但 fmincon 将返回完全无意义的解决方案(例如6.7109e+06。如果您的约束的梯度不能描述可行集,那么各种优化算法都会爆炸。我没有了解 Ali 问题的具体细节,但我的猜测是,它没有以有利于数值优化技术的方式制定。 -
这种情况很少发生,但在某些情况下添加额外的约束会有所帮助。当获得的优化点不是全局最小值时,例如由于不幸的起点,由于大量变量,找到正确的起点可能会出现问题。因此,添加额外的约束可以将解决方案推向所需的方向。
标签: matlab optimization