开放源码替代MATLAB的fmincon函数?

2024-04-28 09:06:00 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种开源的方法可以替代MATLAB的^{}函数来进行约束线性优化?我正在重写一个MATLAB程序来使用Python/NumPy/SciPy,这是我唯一没有找到等价于的函数。基于NumPy的解决方案是理想的,但任何语言都可以。


Tags: 方法函数程序numpy语言线性开源scipy
3条回答

Python优化软件:

你的问题是凸的吗?线性的?非线性?我同意SciPy.optimize可能会做这项工作,但是fmincon是一种用于解决优化问题的火箭筒,如果你能将它限制在下面的一个类别中(提高有效解决问题的难度),你会过得更好

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

还有一些组合问题,比如混合整数线性规划(Mixed Integer Linear Programs,MILP),但是你没有提到任何类型的完整性约束,足以说明它们属于不同的问题类别。

如果您的问题是凸的,那么CVXOpt包将非常有用。

如果你的问题不是凸的,你需要在寻找局部解和全局解之间做出选择。许多凸解算器在非凸域中工作。找到一个好的全局解的近似需要某种形式的模拟退火或遗传算法。寻找全局解需要枚举所有局部解或组合策略,如分支和界。

开源的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

相关问题 更多 >