当前位置:   article > 正文

非线性规划求解器 Lingo, Matlab 使用心得,及使用的求解算法_利用lingo和matlab求解非线性规划问题模型

利用lingo和matlab求解非线性规划问题模型

对于非线性规划,Cplex 与 Gurobi 只支持二次规划(包括凸规划,二阶锥规划,目标函数或约束条件中可以包含二次函数)。若更高次数,或者非凸规划,非二阶锥规划,则需要用其他求解器了。matlab 自带的 fmincon 可以得到一些可行解,比较专业常用的求解器有 lingo,Mosek 等。

1. matlab 中的 fmincon

MATLAB求解非线性规划的算法包括:内点法(interior point algorithm)、信赖域法(trust-region method)、序列二次规划法(sequential quadratic method)。
这几种方法的核心思想基本都是:将原问题近似为一个凸规划问题求解。

官方解释参看:https://www.mathworks.com/help/optim/ug/constrained-nonlinear-optimization-algorithms.html

2. lingo

Lingo使用的非线性规划的算法是:广义既约梯度法(general reduced gradient method),顺序线性规划法(sucessive linear programming method)。
Lingo 号称有时能够得到全局最优解。

官方解释:https://www.lindo.com/index.php/products/lingo-and-optimization-modeling?catid=89&id=88:powerful-lingo-solvers

还有一个类似的软件叫 lindo,跟 lingo 是一家公司,貌似只能求解线性问题,不过 lindo支持 python 调用,而 lingo 目前还不支持。

3. lingo 的优缺点

对lingo初步使用的心得包括以下几个方面,
优点

  • 语法简单,容易上手
  • 通过 solver 中 的 options 可以方便对求解进行设置
  • 支持非线性,非凸问题的求解
  • 国内网上很多学习资料
  • 对于非线性问题的求解,确实比 matlab 好(有时候也不一定)

缺点:

  • 不能直接定义二维求解变量,需要通过 link 间接定义
  • 对大规模问题的支持显然不如 cplex,gurobi 等
  • 对求解过程的调试或控制,没有支持 java调用的 cplex,或者支持 python 调用的 gurobi 方便
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/593132
推荐阅读
相关标签
  

闽ICP备14008679号