对于非线性规划,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 方便
对于非线性规划,Cplex 与 Gurobi 只支持二次规划(包括凸规划,二阶锥规划,目标函数或约束条件中可以包含二次函数)。若更高次数,或者非凸规划,非二阶锥规划,则需要用其他求解器了。matlab 自带的 fmincon 可以得到一些可行解,比较专业常用的求解器还有 lingo,自己这段时间准备用下看看。......
线性 求解 Casadi 使用 简介 Casadi做为一款 线性 求解 ,支持python、C++、 matlab 等多种语言,能够解决 常多的工程问题。具体 使用 请参考casadi官方 使用 文档。 使用 Casadi主要包含3个步骤:构造变量、构造目标函数和设置 求解 。 构造变量和目标函数 使用 casadi 求解 优化问题时,就需要将变量定义成casadi能够识别的形式,其中可以将变量定义成向量、矩阵的形式,如“x = SX.sym(‘x’)”定义的是一个一维变量,“y=SX.sym(‘y’, 5)”定义的是一个5维向量变量
Medicine/1..2/:Profits_medicine, Number_production; Material/1..2/:Total_material; link(Medicine, Material):Consuption; endsets data:
HiOp-用于优化的HPC 求解 HiOp是用于解决某些数学优化问题(表示为 非线性规划 问题)的优化 求解 。 HiOp是一种轻量级的HPC解算 ,它利用应用程序现有的数据并行性,通过 使用 专用的线性代数内核来并行化优化迭代。 构建/安装说明 HiOp 使用 基于CMake的构建系统。 可以通过在“ build”目录中调用以下命令来完成标准构建 $ > cmake .. $ > make $ > make test $ > make install 此序列将构建HiOp,运行完整性和正确性测试,并将标头和库安装在HiOp根目录中的“ _dist-default-build”目录中。 Command make test对HiOp的各个模块进行广泛的测试,以检查完整性和正确性。 测试套件的范围从单元测试到解决具体的优化问题,以及根据已知解决方案针对这些问题检查HiOp 求解 的性能。 默认情况下,
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 LINGO 编程简介与实例一. LINGO 使用 介绍1. LINGO 编写格式2 . LINGO 内部函数 使用 详解.二、 LINGO 求解 优化模型实例 一. LINGO 使用 介绍 LINGO 是一种专门用于 求解 数学规划问题的软件包。由于 LINGO 执 行速度快,易于方便地输入、 求解 和分析数学规划问题,因此在 教学、科研和工业界得到广泛应用。 LINGO 主要用于 求解 线性规划 、 非线性规划 、二次规划和整数规划等问题,也可以用于 求解 一 些线性和 线性方程组及代数方程求根
1.yalmip简介 yalmip是由Lofberg开发的一种免费的优化 求解 工具,其最大特色在于集成许多外部的最优化 求解 (包括cplex),形成一种统一的建模 求解 语言,提供了 Matlab 的调用API,减少学习者学习成本。简而言之,它可以让你像书写数学模型那样输入你的模型。 2.环境搭建 2.1 yalmip安装 yalmip下载页面,点击下载即可。 解压后,将其复制到toolbox文件...
使用 fmincon 求解 最优值的过程中,可以有以下所示的多种形式: x = fmincon(fun,x0,A,b) x = fmincon(fun,x0,A,b,Aeq,be) x = fmincon(fun,x0,A,b,Aeq,beq,lb,u