分享好友 最新动态首页 最新动态分类 切换频道
运筹优化算法常用求解器
2024-12-28 03:13

运筹优化算法常用求解器

运筹学从形成到发展,在此过程中积累的大量理论和方法在国防、能源、制造、交通、金融、通信等各个领域发挥着越来越重要的作用。我们在生产生活中遇到的很多实际问题,都可以通过运筹学所涉及的优化方法对其进行数学建模,表示为数学问题,而为了解决这些数学问题,求解器应运而生。

目前市面上的主流优化求解器主要分为商用求解器(比如Gurobi、IBM Cplex等)、开源求解器(比如SCIP等)两大类。此外还有一些商业计算软件比如Matlab,甚至是常用的Excel表格中都包含有求解器工具,可以求解部分规模较小的数学规划问题,不过求解效率和商用求解器相比还是有一定差距。

Gurobi

Gurobi是由美国 Gurobi Optimization 公司开发新一代大规模求解器。在全球最著名的专业求解器评比网站 Decision Tree for Optimization Software (http://plato.asu.edu/bench.html) 中,Gurobi 展示出更快的求解速度和精度。Gurobi 全球用户超过2600家,广泛应用在金融、物流、制造、航空、石油石化、商业服务等多个领域。

技术优势

  • 可以求解大规模线性问题,二次型问题和混合整数线性和二次型问题
  • 支持非凸目标和非凸约束的二次优化
  • 支持多目标优化
  • 支持包括SUM, MAX, MIN, AND, OR等广义约束和逻辑约束
  • 支持包括高阶多项式、指数、三角函数等的广义函数约束
  • 问题尺度只受限制于计算机内存容量,不对变量数量和约束数量有限制
  • 采用最新优化技术,充分利用多核处理器优势。支持并行计算
  • 提供了方便轻巧的接口,支持 C++, Java, Python, .Net, Matlab 和R,内存消耗少
  • 支持多种平台,包括 Windows, Linux, Mac OS X

支持模型

  • 连续和混合整数线性问题
  • 凸目标或约束连续和混合整数二次问题
  • 非凸目标或约束连续和混合整数二次问题
  • 含有对数、指数、三角函数、高阶多项式目标或约束,以及任何形式的分段约束的非线性问题
  • 含有绝对值、最大值、最小值、逻辑与或非目标或约束的非线性问题

支持接口语言: C++, Java, Python, .Net, Matlab 和R

IBM CPLEX Optimizer

CPLEX历史悠久,最初版本在1988年就被开发出来,1997年被ILOG公司收购,2009年纳入IBM怀抱,如今已发展成为IBM决策优化系统IBM ILOG CPLEX Optimization Studio(简称COS)。作为COS系统中的关键组件,CPLEX Optimizer 为线性规划、混合整数规划、二次规划和二次约束规划问题提供灵活的高性能数学规划求解器。 这些求解器包括用于混合整数规划的分布式并行算法,支持利用多台计算机来解决难题。

支持模型

  • 专门用于求解大规模的线性规划(LP
  • 二次规划(QP
  • 带约束的二次规划(QCQP
  • 二阶锥规划(SOCP)等四类基本问题
  • 以及相应的混合整数规划(MIP)问题。

支持接口语言: C, C++, Java, C# or Python APIs

FICO Xpress

管网:https://www.fico.com/en/products/fico-xpress-optimization
Xpress 于 1983 年发布,是第一个在PC上运行的商业LP和MIP求解器。1992年,发布了并行计算的Xpress版本,五年后扩展到分布式计算。2008 年被FICO收购。Xpress 是第一个通过在 2010 年引入 64 位索引而跨越十亿决策变量阈值的 MIP 求解器。自 2014 年以来,Xpress 首次实现了并行对偶单纯形方法的商业实现。Xpress 包括其建模语言 Xpress Mosel和集成开发环境 Xpress Workbench。Mosel 包含分布式计算功能,可并行解决优化问题的多个场景。输入数据的不确定性可以通过稳健的优化方法来处理。
支持接口语言:.NET、Java、C、C++、VB、Python、Matlab、Solver API、Mosel API、BCL

Lingo

LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”,由美国LINDO系统公司(Lindo System Inc.)推出的专门用于求解最优化问题的软件包。其特色在于内置建模语言,提供许多常用函数方便使用者建立优化模型时调用,并提供与其他数据文件(如文本、EXCEL、数据库等)的接口,易于方便地输入、求解和分析大规模最优化问题。

杉数COPT

杉数求解器COPT(Cardinal Optimizer),是杉数自主研发的针对大规模优化问题的高效数学规划求解器套件,也是支撑杉数端到端供应链平台的核心组件。COPT是目前同时具备大规模混合整数规划、线性规划(单纯形法和内点法)、二阶锥规划、半定规划以及凸二次规划和凸二次约束规划问题求解能力的综合性能数学规划求解器,为企业应对高性能求解的需求提供了更多选择。
支持接口语言:C、C++、C#、Python、Julia、Java、AMPL、GAMS、Pyomo、PuLP、CVXPY等。

阿里MindOPT

MindOpt是阿里达摩院决策智能实验室自主研发的一款具备线性规划等多种功能的数学规划求解器套件。通过对大规模线性规划的快速稳定求解,为客户提供从数据到决策的全链路建模和求解能力。目前已应用于云计算等多项阿里业务,通过对弹性计算资源的调度优化,每年可为阿里云节约数亿元成本。

华为天筹AI求解器OPTV

天筹(OptVerse)AI求解器将运筹学和AI相结合,突破业界运筹优化极限,针对线性和整数模型寻找最优解,以通用形式描述问题,高效计算最优方案,助力企业量化决策和精细化运营,提升资源利用率和运转效率,增强决策水平和竞争力。

天筹(OptVerse)AI求解器已成功支撑华为供应能力及冗余分析等13个场景的模拟应用,计划预案周期从周缩短到天,保障了高效的连续性作战。

SCIP

SCIP是目前混合整数规划(MIP)和混合整数非线性规划(MINLP)最快的非商业求解器之一。SCIP也是一个用于约束整数规划、分支定界以及分支定价的框架[CCZ1] ,主要由德国ZIB研究所开发。与大多数商业求解器不同,SCIP 允许用户对求解过程进行完全控制,并允许用户访问求解器内部的详细信息。

谷歌 OR-Tools

官网:https://developers.google.cn/op
OR-Tools是一款谷歌旗下的开源优化工具。支持线性规划、整数规划,可以方便的求解Routing、Bin packing、Network flows、Assignment、Scheduling等问题。

Coin-OR开源项目套件 CLP/CBC/CGL/SYMPHONY等

COIN-OR (Computational Infrastructure for Operations Research) 是运筹和优化圈维护开源基础软件和项目的著名基金会,是一个公益组织,维护着市面上几乎所有的开源优化求解器,包括cbc, clp, ipopt, pyomo等数十种求解器和建模语言,并且使得它们之间的交互变得可能。可以说 COIN-OR 在开源求解器方面占有举足轻重的位置。目前所有项目都托管在 GitHub 上(https://github.com/coin-or,仅一些原有的基础设施(网站、wiki 和邮件列表)仍然托管在 Clemson 大学的服务器上。

COIN-OR 项目维护的诸多开源求解器和建模工具现在仍被全球数千个组织使用,其中值得注意的是Cbc、Clp、Ipopt这三个求解器在各自的领域中仍然处于十分领先的地位(线性规划、混合整数规划和非线性规划)。

LP_sovle

LP_solve是一个混合整数线性规划(MILP)求解器,来自sourceforge下的一个开源项目,是一个基于修正单纯形法和分支定界法的免费线性(整数)规划求解器,能够求解纯线性、(混合)整数/二进制、半连续和特殊有序集(SOS)模型。
支持模型:纯线性、(混合)整数/二进制、半连续和特殊有序集(SOS)模型
支持接口语言:C/C++、Java、Delphi、Free Pascal、VB、VBScript、http://VB.NET、C#.NET
官网:https://lpsolve.sourceforge.net/5.5/

GLPK

GLPK (GNU Linear Programming Kit,GNU线性编程工具)是GNU下的一个项目,用于建立大规模线性规划LP和混合型整数规划MIP问题,并对模型进行最优化求解。由于是GNU下的项目,因此没有商业非商业的版本限制,可以自由使用。
官网:https://www.gnu.org/software/glpk/g

中科院CMIP混合整数求解器

著名陈省身数学奖获得者、冯康科学计算奖获得者、中国科学院数学与系统科学院戴彧虹研究员带领CMIP团队从2015年开始,历经30个月,终于自主研发了我国第一个具有国际水平的整数规划求解器CMIP,并于2018年3月确定版本为CMIP 1.0版本。

CMIP代码总量已经超过五万行,涵盖国际现有求解器预处理、启发式、割平面、分支、节点选择、区域传播等各种功能模块,并已经较好地具备了求解大规模整数规划的能力。

CVXPY

CVXPY 不是一个求解器,而是一个 Python 库,用于构建和求解凸优化问题。它提供了一个高层次的接口,使得用户可以使用简洁的 Python 代码来描述优化问题,而不必担心底层的数学细节。CVXPY 旨在让凸优化问题的建模变得更加直观和方便。

CVXPY 本身不解决优化问题,而是将问题转换成标准形式,并调用底层的数学优化求解器来找到解。它支持多种求解器,包括 ECOS、SCS、OSQP、CPLEX、Gurobi、MOSEK 等,这些求解器可以处理线性规划、二次规划、锥规划、半定规划等多种类型的凸优化问题。

CVXPY 的主要特点包括

  • 用户友好:通过提供简单的 Python 接口,使得构建和求解优化问题更加容易。
  • 灵活性:支持多种类型的凸优化问题,包括线性规划、二次规划、锥规划等。
  • 强大的抽象:允许用户以数学上直观的方式表达问题,而不必担心将问题转换成求解器可以处理的形式。
  • 自动微分:自动计算梯度和 Hessian 矩阵,这对于某些优化算法是必需的。
  • 求解器独立性:用户可以选择最适合他们问题的求解器,而不必更改问题的表述。
    CVXPY 通常用于研究和教学中,以及在工业界解决实际的优化问题。它特别适合于那些需要快速原型设计和实验不同优化模型的场景。

使用 CVXPY 的一个简单例子是构建一个线性规划问题

 

在这个例子中,我们定义了一个线性规划问题,目标是最大化函数 2*x + y,同时满足一系列线性约束。CVXPY 会自动选择一个合适的求解器来求解这个问题,并返回最优值和解。

可以用来检查线性规划问题的可行性,但不适合用来解决寻找最优解的线性规划问题。

微软Z3求解器是一个高性能的定理证明器,它由微软研究院开发。Z3主要用于软件验证和静态分析领域,它可以帮助开发者检查程序代码中的逻辑错误,证明数学定理,以及解决约束满足问题(Constraint Satisfaction Problems, CSPs)。

Z3是一个SMT(Satisfiability Modulo Theories)求解器,它支持多种理论,包括但不限于算术、位向量、数组、字符串和有限域。Z3的输入通常是SMT-LIB格式的文本文件,这是一种标准的SMT问题描述语言。

Z3求解器具有以下特点

  • 多语言绑定:Z3提供了多种编程语言的API,包括C, C++, Python, .NET, Java等,方便开发者在不同的编程环境中使用。
  • 高性能:Z3在性能上进行了大量优化,能够快速处理复杂的SMT问题。
  • 易于集成:Z3可以作为一个库被集成到其他软件工具中,以提供自动化的定理证明能力。
  • 开源:Z3在MIT许可证下开源,任何人都可以自由地使用和修改它。
  • 广泛应用:Z3被广泛应用于软件工程、形式化方法、安全性分析、系统验证等多个领域。

Z3的使用通常涉及到编写SMT-LIB格式的问题描述,然后调用Z3求解器来求解这些问题。此外,通过编程语言的API,开发者可以直接在代码中构建和求解问题,这为自动化验证和分析提供了极大的便利。

如果你想要使用Z3求解器,可以从其GitHub页面下载源代码或预编译的二进制文件,并根据文档进行安装和使用。

Z3求解器更多地被用于逻辑和形式化验证的领域,而CPLEX和Gurobi则是在数学优化领域更为常见。Z3解决的是逻辑一致性问题,而CPLEX和Gurobi解决的是寻找最优解的问题。Z3可以用来检查线性规划问题的可行性,但不适合用来解决寻找最优解的线性规划问题。

CVC5 是一个开源的自动定理证明器,它是 CVC(Cooperating Validity Checker)系列工具的最新版本。CVC5 是一个 SMT(Satisfiability Modulo Theories)求解器,用于决定逻辑公式在给定一组背景理论(如整数和实数算术、位向量、数组、字符串等)下的可满足性问题。CVC5 的前身是 CVC4,它本身是 CVC3 的后续版本,而 CVC3 又是 CVC 和 CVC Lite 的继承者。

CVC5 被设计用来支持自动化推理任务,它可以处理各种复杂的逻辑公式,并在多个领域中得到应用,包括软件和硬件验证、形式化方法、安全性分析、程序分析等。CVC5 的目标是提供一个高性能、可扩展、易于使用的求解器,它可以作为一个独立的工具使用,也可以集成到其他系统中。

CVC5 的主要特点包括

最新文章
海南HTTP与HTTPS:两者的差异及其对SEO的影响
“诚,做人之本;信,为人之根,做个诚信的人是我们的根本。”在一春一夏,我们注重每一位客户提出的每个需求,我们充分考虑客户的每一个细节,我们一直在思考如何为客户创造更大的价值,意在让我们的每一位客户都成为我们的朋友...网
绍康集成灶售后服务点服务网点《今日汇总》 揭秘“复遥号”卫星:“数据+物理”双驱动 聚焦电离层智能化
绍康集成灶24小时维修热线:400-965-8692。绍康集成灶全市各区点热线号码。☎:400-965-8692绍康集成灶,秉承“诚信为本、客户至上”的态度和“以客户为中心”的指导思想,不仅真诚地为用户提供先进、高质量的系列产品,更为用户提供优质、
网络小说搜索引擎
今天给大家推荐一个小说网站owllookowllook - 网络小说搜索引擎 - 最简洁清新的搜索阅读体验网址:https://www.owllook.net/owllook并不是一个传统的小说网站而是一个网络小说搜索引擎看了网站截图你会发现它的页面非常简洁只有一个搜索框
python爬取微博热门消息(一)——效果展示
微博的热搜榜对于研究大众的流量有非常大的价值。 今天的教程就来说说如何爬取微博的热搜榜。 感兴趣的小伙伴可以 收藏 + 关注 哦!另外,关于本项目的效果展示,以及教程,点击一下链接即可。 下面,
[2024]9个最好用的WordPress备份插件
  网站备份的作用主要在于恢复数据,不管是 wordpress 网站还是别的网站,都需要定期备份,当你的网站的数据库或者网站结构遭到了人为的破坏或者其他因素的损坏,那你就可以利用自己备份好的网站来进行恢复。对应来说,有免费、付费的 Wo
置顶小程序内用户帐号登录规范调整和优化建议官方精选热门
为更好地保护用户隐私信息,优化用户体验,平台将会对小程序内的帐号登录功能进行规范。本公告所称“帐号登录功能”是指开发者在小程序内提供帐号登录功能,包括但不限于进行的手机号登录,getuserinfo形式登录、邮箱登录等形式。具体规范
沙威玛传奇 云手机多开挂机
《沙威玛传奇》是一款逼真的模拟烹饪游戏!沙威玛传奇云手机游戏软件可以大大提高您的挂机搬砖效率:多多云手机完全模拟真实手机环境,每一台专业云手机都是独立手机系统,允许用户在云手机里云玩各种游戏、应用app,24小时挂机托管,多开
联出党建“朋友圈” 共建异地温暖“家”
中共新蔡县栎城乡驻郑州市流动党员支部委员会在河南省社会保险中心设立,也是新蔡县栎城乡建立的第一个流动党支部,共有党员25名。中共新蔡县栎城乡驻郑州市流动党员党支部根据本乡在郑务工、经商人员的实际,提倡流动党员“共建共管”,鼓
www.jyeoo.com的百度排名情况
a href="https://baidurank.aizhan.com/" target="_blank"img src="https://baidurank.aizhan.com/api/mbr?domain=www.jyeoo.com&style=images" //aa href="https://baidurank.aizhan.com/" target="_blank"script type=&
随州市部分企业招聘信息(第二批)
疫情终将过去,春天就在眼前 招聘与求职的需求也变得日益迫切为了进一步做好劳动者就业和企业开复工用人保障工作,疫情防控期间,我市开展线上招聘服务。此次数家企业参与,凡有求职意愿的求职可拨打文章内企业预留电话进行咨询或扫描文章
相关文章
推荐文章
发表评论
0评