数学规划优化系统 工具选型
维基百科有词条比较了各个优化软件
https://en.wikipedia.org/wiki/List_of_optimization_software
https://en.wikipedia.org/wiki/Comparison_of_optimization_software
非线性优化
MATLAB里的fmincon函数
CasADi 是一个用于非线性优化和算法微分的开源工具。
局部非线性求解器(如 knitro、SNOPT 或 IPOPT)
https://www.zhihu.com/question/26122648/answer/32191795 里面提到:
nonlinear optimization放弃了对问题结构的全局把握,只需要问题locally (double) differentiable即可。相反,linear optimization和convex optimization都需要问题本身具有特定的结构,利用这些结构可以快速地解决高维的问题
其他
Google OR-Tools 主要是做组合优化。可以做Linear and Mixed-Integer Programming、Vehicle Routing、Graph Algorithms
MiniZinc IDE 在线试玩 模型文件命名示例是model.mzn
https://ampl.com/learn/ampl-book/example-files/ 一些AMPL语法示例
https://neos-server.org/neos/ NEOS-Server 在线提交求解优化问题作业的平台。支持十多个优化类别中 60 多个最先进求解器的访问。 支持AMPL,LP,MPS,NL格式。
AMPL格式模型文件 model.mod文件示例
var x;
var y;
maximize total:(x*25)+(y*30);
subject to limit1:
(1/200)*x+(1/140)*y<=40;
subject to limti2:
0<=x<=6000;
subject to limit3:
0<=y<=4000;
display x,y;
本地AMPL软件的运行结果和NEOS-Server作业的运行结果一致。
BPMPD 2.11: Optimal solution found, objective 192000
5 iterations, 10 corrections (2.00 per iter.)
Gurobi
http://www.gurobi.cn/about.asp?id=1
Gurobi 是全局优化器,支持的模型类型包括:
(1)连续和混合整数线性问题
(2)凸目标或约束连续和混合整数二次问题
(3)非凸目标或约束连续和混合整数二次问题
(4)含有对数、指数、三角函数、高阶多项式目标或约束,以及任何形式的分段约束的非线性问题
(5)含有绝对值、最大值、最小值、逻辑与或非目标或约束的非线性问题
Gurobi 技术优势:
(1)可以求解大规模线性问题,二次型问题和混合整数线性和二次型问题
(2)支持非凸目标和非凸约束的二次优化
(3)支持多目标优化
(4)支持包括SUM, MAX, MIN, AND, OR等广义约束和逻辑约束
(5)支持包括高阶多项式、指数、三角函数等的广义函数约束
(6)问题尺度只受限制于计算机内存容量,不对变量数量和约束数量有限制
(7)采用最新优化技术,充分利用多核处理器优势。支持并行计算
(8)提供了方便轻巧的接口,支持 C++, Java, Python, .Net, Matlab 和R,内存消耗少
(9)支持多种平台,包括 Windows, Linux, Mac OS X
CBC
Cbc (Coin-or branch and cut) is an open-source mixed integer linear programming solver written in C++
项目地址 https://github.com/coin-or/Cbc
CPLEX
1988~2020年
CPLEX现在是IBM家的了
box@IBM 网盘地址 https://ibm.ent.box.com/s/p1g0mrjnb0rs6am5evuvndy8f7vsug3t
CPLEX Optimizer 以在C 编程语言中实现的单纯形法命名,尽管今天它
还支持其他类型的数学优化并提供 C 以外的接口。它最初由Robert E. Bixby开发,并于 1988 年由 CPLEX 进行商业销售Optimization Inc. 于 1997 年被ILOG收购,随后 ILOG 于 2009 年 1 月被 IBM 收购。[2] CPLEX 继续由 IBM 积极开发。
SCIP成套优化工具
解决有限制的整数规划程序SCIP
2022年10月仍然在维护
XPRESS
官网地址
https://www.fico.com/en/products/fico-xpress-optimization
FICO Xpress优化器是用于线性规划(LP)、混合整数线性规划(MILP)、凸二次规划(QP)、凸二次约束二次规划(QCQP)、二阶锥规划(SOCP ) 及其它们的商业优化 求解器混合整数对应物。 Xpress 包括通用非线性求解器 Xpress NonLinear,包括连续线性规划算法(SLP,一阶方法)和Artelys Knitro(二阶方法)。
Xpress 最初由 Dash Optimization 开发,并于 2008 年被FICO收购。 它的最初作者是 Bob Daniel 和 Robert Ashford。第一个版本的 Xpress 只能解决 LPs;1986 年添加了对 MIP 的支持。Xpress 于 1983 年发布,是第一个在PC上运行的商业 LP 和 MIP 求解器。 1992年发布了用于并行计算的Xpress版本,5年后扩展到分布式计算。Xpress 是第一个通过在 2010 年引入 64 位索引来跨越十亿矩阵非零阈值的 MIP 求解器。 自 2014 年以来,Xpress 首次实现了并行对偶单纯形法的商业实现.
MATLAB
优化工具箱 WebURL
https://www.mathworks.com/products/optimization.html
你应该使用MATLAB的优化工具箱
Optimization Toolbox™ 提供了用于查找参数的函数,这些参数可以在满足约束的同时最小化或最大化目标。该工具箱包括用于线性规划 (LP)、混合整数线性规划 (MILP)、二次规划 (QP)、二阶锥规划 (SOCP)、非线性规划 (NLP)、约束线性最小二乘法、非线性最小二乘法、和非线性方程。
您可以使用函数和矩阵或通过指定反映基础数学的变量表达式来定义优化问题。您可以使用目标函数和约束函数的自动微分来获得更快、更准确的解决方案。
您可以使用工具箱求解器找到连续和离散问题的最佳解决方案,执行权衡分析,并将优化方法整合到算法和应用程序中。该工具箱可让您执行设计优化任务,包括参数估计、组件选择和参数调整。它使您能够在投资组合优化、能源管理和交易以及生产计划等应用中找到最佳解决方案。
CVX工具箱可以使用matlab作为模型语言来做凸优化
CVXPY
https:www.cvxpy.org/index.html
CVXPY可以使用python作为模型语言来做凸优化
SAS
官网地址 https:www.sas.com/en_us/software/optimization/features-list.html
Algebraic and symbolic optimization modeling language
Flexible algebraic syntax for intuitive model formulation.
Supports transparent use of SAS features.
Direct access to linear, mixed integer linear, quadratic, nonlinear, conic, black box, constrained programming, and network solvers.
Support for rapid prototyping of custom optimization algorithms, including support for named problems and subproblems.
Input datasets using the industry standard MPS/QPS format.
An active pre-solver is used to reduce the effective problem size.
Solve independent problems simultaneously on a single machine or computational grid.
Automatic linearization and index constraints.
Powerful optimization solver
Linear Programming Solver Algorithm:
Primal and dual simplex.
Screening.
Network simplex.
Interior points with intersections.
Concurrent solving capability.
Mixed integer linear programming solution algorithm:
Branch and bound with cutting planes.
The original heuristic.
Conflict search.
Option adjustment.
Root Node (LP Relaxation) algorithm option.
Report up to K best integer feasible solutions or up to K optimal solutions.
A decomposition algorithm (automatic Dantzig-Wolfe) for linear programming and mixed integer linear programming problems with a user-specified or automatically detected block structure.
Quadratic programming algorithm: Interior point using state-of-the-art solvers, tailored for large-scale optimization problems.
Nonlinear programming algorithm: active set, interior point. Concurrent solving capability. Multi-start algorithm for non-convex problems.
network optimization
Diagnostic and optimization algorithms include:
Link assembly and dual link assembly with articulation points.
Maximum group enumeration.
Loop enumeration.
Path enumeration.
Transitive closure.
Topological sort.
Maximum flow.
Minimum cut.
Minimum spanning tree.
Minimum cost linear allocation.
Lowest cost of network traffic.
The shortest path.
Traveling salesman problem.
Vehicle routing problem.
Summary statistics.
Multiple links between each pair of nodes can be entered and processed.
black box optimization
Solve problems with nonlinear functions that may be nonsmooth, discontinuous, non-continuously differentiable, and so on.
Hybrid parallel algorithms, including general algorithms, global GA-type heuristics and pattern search. Multi-objective optimization.
constraint programming
The constraint satisfaction problem is solved using finite field constraint programming, including the choice of domain reduction/constraint propagation and search strategies (look-ahead and backtracking). Find one, a few, or all possible solutions. You can choose to specify an objective function and find the best solution (binary search method).
Distributed, accessible, and cloud-ready
The optimization solver runs on SAS Viya, a scalable distributed in-memory analytics platform.
Distribute analytics and data tasks across multiple compute nodes.
Distributed computing features:
Multiple launch options for the nonlinear (NLP) solver in PROC OPTMODEL.
Decomposition algorithm (MILP) in PROC OPTMODEL, PROC OPTMILP.
Solve the independent optimization scenario: COFOR loop in PROC OPTMODEL.
Concurrency mode of the MILP solver (PROC OPTMODEL, PROC OPTMILP).
Branch and bound MILP solver algorithms (PROC OPTMODEL, PROC OPTMILP).
Black-box optimization in PROC OPTMODEL.
Path enumeration, shortest path, and connected component network algorithms in PROC OPTNETWORK.
BY-group processing in network algorithm in PROC OPTNETWORK.
Provides fast, concurrent, multi-user access to in-memory data.
including high availability.
Allows you to add the power of SAS Analytics to other applications using the SAS Viya REST API