用于相等和不等式约束的约束优化库


14

对选择适合我的优化功能的约束优化库有什么建议吗?我正在最小化ai)具有线性等式和不等式约束的非线性函数,并且ii)具有函数的梯度和粗麻布。

如果有帮助,我要最小化的函数是Kullback-Liebler散度

constrOptim仅处理不平等约束。Quadprog处理二次方。信任不支持约束。因此,KL差异不适合这些解决方案。

R Cran任务页面上有很多用于优化的解决方案。我能够使用fmincon()函数在MATLAB中执行优化,该函数似乎使用了内部点或信任区域反射。理想情况下,有一个非常适合定义的问题的库。


约束是线性的吗?
主教

@cardinal-是的-约束是线性的
Ram Ahluwalia

2
Ax=bconstrOptimAxbAxb

那很聪明。我将对此进行探索,并观察其性能。您应该考虑将此作为答案。我将持续几天讨论这个问题,以查看还有哪些其他工具可用
Ram Ahluwalia

2
@cardinal技巧对内部点方法无济于事,就像constrOptim一样,因为该方法需要起点是可行区域内部的起点-不在边界上
stackovergio

Answers:


14

这两个软件包(阿拉巴马州和Rsolnp)都包含“用于一般非线性优化的增强拉格朗日乘数法的[i]实施方案”(如优化任务视图所述),并且非常可靠且健壮。可以再次处理定义为(非线性)函数的等式和不等式约束。

我已经使用了两个软件包。有时,使用Rsolnp可以更容易地制定约束条件,而阿拉巴马州有时似乎要快一些。

还有Rdonlp2软件包,它依赖于外部和优化社区中著名的软件库。不幸的是,目前其许可证状态还不确定。


1
我只想添加我今天发现的阿拉巴马不等式约束的一个属性。如果您的不等式约束创建了一个不可行的区域,那么代码将运行而不会发出任何警告/错误消息,并且将边界的平均值作为参数的固定值。例如,如果x> 6并且x <4,则该解决方案将提供x = 5的解决方案,而不会发出任何警告。
Gaurav Singhal

1
看来此答案仍在访问和阅读中。因此,我想补充一下,有一个新的软件包NlcOptim(自2015年起)。它使用非线性目标和约束函数解决了允许非线性等式和不等式约束的优化问题。我经常使用它。
Hans W.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.