36

fminconMATLAB 的约束线性优化函数是否有开源替代方案?我正在重写一个 MATLAB 程序以使用 Python / NumPy / SciPy,这是我唯一没有找到与之等效的函数。基于 NumPy 的解决方案将是理想的,但任何语言都可以。

4

10 回答 10

32

你的问题是凸的吗?线性?非线性?我同意 SciPy.optimize 可能会完成这项工作,但是 fmincon 是一种用于解决优化问题的火箭筒,如果您可以将其限制在以下类别之一中,您会更好(解决难度增加有效率的)

  • 线性规划 (LP)
  • 二次规划 (QP)
  • 凸二次约束二次规划 (QCQP)
  • 二阶锥程序 (SOCP)
  • 半定程序 (SDP)
  • 非线性凸问题
  • 非凸问题

还有组合问题,例如混合整数线性规划 (MILP),但您没有提到任何类型的完整性约束,足以说明它们属于不同类别的问题。

如果你的问题是凸的,CVXOpt 包对你很有用。

如果您的问题不是凸的,您需要在寻找局部解决方案或全局解决方案之间做出选择。许多凸求解器“有点”在非凸域中工作。找到全局解决方案的良好近似需要某种形式的模拟退火或遗传算法。找到全局解决方案将需要列举所有本地解决方案或组合策略,例如分支定界。

于 2008-10-13T05:51:51.143 回答
18

Python优化软件:

于 2009-12-06T18:51:50.420 回答
14

开源 Python 包SciPy有相当多的优化例程,包括一些用于约束多变量问题的例程(我相信 fmincon 就是这样)。安装 SciPy 后,在 Python 命令提示符处键入以下内容

帮助(scipy.optimize)

生成的文档内容广泛,包括我认为可能对您有用的以下内容。

   Constrained Optimizers (multivariate)

   fmin_l_bfgs_b -- Zhu, Byrd, and Nocedal's L-BFGS-B constrained optimizer
                      (if you use this please quote their papers -- see help)

   fmin_tnc      -- Truncated Newton Code originally written by Stephen Nash and
                      adapted to C by Jean-Sebastien Roy.

   fmin_cobyla   -- Constrained Optimization BY Linear Approximation
于 2008-09-16T09:45:06.120 回答
4

GNU Octave是另一个 MATLAB 克隆,它可能具有您需要的功能。

于 2008-09-08T15:22:49.917 回答
3

对于 Python 中的数值优化,您可以查看 OpenOpt 求解器:

http://openopt.org/NLP

http://openopt.org/问题

于 2009-04-19T08:10:36.770 回答
1

有一个名为SciLab的程序是一个 MATLAB 克隆。

我根本没有使用它,但它是开源的,可能具有您正在寻找的功能。

于 2008-09-08T15:21:43.070 回答
1

我不知道它是否在那里,但是有一个名为Enthought的 python 发行版可能有你正在寻找的东西。它专为数据分析而设计,拥有 60 多个附加库。

于 2008-09-08T16:02:04.283 回答
1

看看http://www.aemdesign.com/downloadfsqp.htm

在那里,您将找到提供与fmincon. (但是,使用不同的算法。如果您对细节感兴趣,可以阅读手册。)

它是开源的,但不在 GPL 下。

于 2009-01-14T18:38:44.757 回答
1

最新版本的 Octave 在优化包中实现了与 Matlab fmincon 函数等效的功能。

https://octave.sourceforge.io/optim/function/fmincon.html

于 2021-08-02T02:57:23.690 回答
0

Scilab 有一个 fmincon 的实现(使用 IPOpt),现在定期更新:

https://atoms.scilab.org/toolboxes/fmincon

对于大规模优化,它优于 Matlab 的 fmincon。

于 2021-04-22T07:13:58.197 回答