0

我一直在尝试将代码从 MATLAB 移植到 C++,并偶然发现了一个非常意想不到的困难。我似乎找不到与 MATLAB 的 fminunc 等效的 C++。

简单地说,问题定义是最小化 f(x),对于向量 x、标量函数 f(x) 和初始猜测 x_0。

到目前为止,我的搜索努力只发现了一个名为 MinPack 的库,它无法解决 f(x) 是标量而 x 是向量的情况。

当然,与时间一样古老的编程语言可以免费实现非线性优化的经典数值配方吗?还是我在这里过于乐观?即使是诸如梯度下降之类的基本方法也将是一个巨大的改进......

4

3 回答 3

1

Here's another good one: GSL, in particular http://www.gnu.org/software/gsl/manual/gsl-ref_36.html#SEC498

于 2014-02-13T11:07:37.033 回答
1

检查NLopt退出。这就是我在将东西从 MATLAB 移植到 C/C++ 时首先使用的,它运行得非常好。

于 2014-02-03T14:39:07.323 回答
1

我个人的选择是IPOPT,一个通用的非线性求解器。它知道的远比你所要求的要多。

其他选项包括:

不幸的是,后者将涉及与 FORTRAN 的接口;这是痛苦和无聊的,但真的不是火箭科学。

于 2014-02-03T16:06:55.587 回答