对于约束线性优化,是否有MATLAB fmincon
函数的开源替代方案?我正在重写一个MATLAB程序来使用Python / NumPy / SciPy,这是我找不到的唯一函数。基于NumPy的解决方案将是理想的,但任何语言都可以。
答案 0 :(得分:27)
你的问题凸了吗?线性?非线性?我同意SciPy.optimize可能会完成这项工作,但是fmincon是一种用于解决优化问题的火箭筒,如果你可以把它限制在下面的一个类别(增加难度来解决),你会更好。有效)
线性程序(LP) 二次规划(QP) 凸二次约束二次规划(QCQP) 二阶锥计划(SOCP) 半定规划(SDP) 非线性凸问题 非凸问题
还存在组合问题,例如混合整数线性程序(MILP),但是你没有提到任何类型的完整性约束,足以说它们属于不同类型的问题。
如果您的问题凸出,CVXOpt包将对您有很大帮助。
如果问题不凸,则需要在寻找本地解决方案或全局解决方案之间进行选择。许多凸解算器'在非凸域中工作'。找到全局解决方案的良好近似将需要某种形式的模拟退火或遗传算法。寻找全球解决方案需要列举所有本地解决方案或组合策略,例如Branch and Bound。
答案 1 :(得分:17)
Python优化软件:
OpenOpt http://openopt.org (根据您的意愿,这个是基于numpy的,由FuncDesigner自动区分)
Pyomo https://software.sandia.gov/trac/coopr/wiki/Package/pyomo
答案 2 :(得分:13)
开源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
答案 3 :(得分:4)
GNU Octave是另一个可能具备您需要的MATLAB克隆。
答案 4 :(得分:3)
答案 5 :(得分:1)
有一个名为SciLab的程序是MATLAB克隆。
我根本没有使用它,但它是开源的,可能有您正在寻找的功能。
答案 6 :(得分:1)
查看http://www.aemdesign.com/downloadfsqp.htm。
在那里你会发现C代码提供与fmincon
相同的功能。 (但是,使用不同的算法。如果您对细节感兴趣,可以阅读手册。)
它是开源的,但不是GPL。
答案 7 :(得分:1)
最新版本中的 Octave 在优化包中实现了等效于 Matlab fmincon 的函数。
答案 8 :(得分:0)
我不知道它是否在那里,但有一个名为Enthought的python发行版可能有你想要的东西。它专为数据分析而设计,有超过60个额外的库。
答案 9 :(得分:0)
Scilab 有一个 fmincon 的实现(使用 IPOpt),现在定期更新:
https://atoms.scilab.org/toolboxes/fmincon
对于大规模优化,它优于 Matlab 的 fmincon。