MATLAB fmincon 函数的开源替代品?
-
09-06-2019 - |
解决方案
你的问题是凸的吗?线性?非线性?我同意 SciPy.optimize 可能会完成这项工作,但 fmincon 是一种解决优化问题的火箭筒,如果您可以将其限制在以下类别之一(增加解决的难度),您会更好有效率的)
线性程序(LP)二次程序(QP)凸凸面二次约束二次程序(QCQP)二阶锥度程序(SOCP)半决赛计划(SDP)非线性凸问题非凸问题非convex问题
还有组合问题,例如混合整数线性规划(MILP),但您没有提到任何类型的完整性约束,足以说明它们属于不同类别的问题。
如果您的问题是凸的,那么 CVXOpt 包将对您很有用。
如果您的问题不是凸的,您需要在寻找局部解决方案或全局解决方案之间进行选择。许多凸求解器“有点”在非凸域中工作。找到全局解决方案的良好近似值需要某种形式的模拟退火或遗传算法。寻找全局解决方案将需要枚举所有局部解决方案或组合策略(例如分支定界)。
其他提示
Python优化软件:
开放选择 http://openopt.org (这个是基于 numpy 的,如你所愿,由 FuncDesigner 自动微分)
皮莫 https://software.sandia.gov/trac/coopr/wiki/Package/pyomo
自然语言处理 http://nlpy.sourceforge.net/
开源Python包,科学Py, ,有相当大的优化例程集,其中包括一些针对带约束的多变量问题的优化例程(我相信 fmincon 就是这么做的)。安装 SciPy 后,在 Python 命令提示符下键入以下内容
帮助(scipy.优化)
由此产生的文档内容广泛,包括以下内容,我相信这些内容可能对您有用。
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
GNU 倍频程 是另一个 MATLAB 克隆版本,可能有您需要的内容。
看一下 http://www.aemdesign.com/downloadfsqp.htm.
在那里你会找到 C 代码,它提供与 fmincon
. 。(但是,使用不同的算法。如果您对详细信息感兴趣,可以阅读手册。)
它是开源的,但不遵循 GPL。
有一个程序叫 科学实验室 这是一个 MATLAB 克隆。
我根本没有使用过它,但它是开源的,可能有你正在寻找的功能。
我不知道它是否在那里,但有一个名为的 python 发行版 设想 那可能有您正在寻找的东西。它专为数据分析而设计,拥有 60 多个附加库。