是否有一个开源替代MATLAB的fmincon
约束线性优化功能?我正在重写一个MATLAB程序来使用Python/NumPy/SciPy,这是我找不到的唯一函数.基于NumPy的解决方案将是理想的,但任何语言都可以.
你的问题凸了吗?线性?非线性?我同意SciPy.optimize可能会完成这项工作,但是fmincon是一种用于解决优化问题的火箭筒,如果你可以把它限制在下面的一个类别(增加难度来解决),你会更好.有效率的)
线性程序(LP)二次规划(QP)凸二次约束二次规划(QCQP)二阶锥程序(SOCP)半定规划(SDP)非线性凸问题非凸问题
还存在组合问题,例如混合整数线性程序(MILP),但是你没有提到任何类型的完整性约束,足以说它们属于不同类别的问题.
如果您的问题凸出,CVXOpt包将对您有很大帮助.
如果您的问题不凸,则需要在寻找本地解决方案或全局解决方案之间进行选择.许多凸解算器'在非凸域中工作'.找到全局解决方案的良好近似将需要某种形式的模拟退火或遗传算法.寻找全球解决方案需要列举所有本地解决方案或组合策略,例如Branch and Bound.
Python优化软件:
OpenOpt http://openopt.org (这个是基于numpy的,如你所愿,由FuncDesigner自动区分)
Pyomo https://software.sandia.gov/trac/coopr/wiki/Package/pyomo
CVXOPT http://abel.ee.ucla.edu/cvxopt/
NLPy http://nlpy.sourceforge.net/
开源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
GNU Octave是您可能需要的另一个MATLAB克隆。