当前位置:   article > 正文

MindOpt APL,可以支持调用几十种求解器的建模语言_求解器数据建模语言

求解器数据建模语言

建模语言的背景

数学规划问题在社会各领域均有广泛应用。例如电网中的能源调度与定价,航班与高铁的排班排程,共享出行的人车匹配,物流寄送的路径规划,供应链中的仓储调拨,搜索推荐的流量分发和内容推荐等。优化大规模数学规划问题一般都采用建立数学模型,然后将数学模型转化为代码的形式调用优化求解器的方式,所以数学建模是尤为关键的一部分。如何将实际问题建模,需要一种专门的语言,能够方便地表达和求解代数模型。

MAPL简介

MindOpt APL (MindOpt Algebraic Programming Language, MAPL) 是一种高效且通用的代数建模语言,由阿里达摩院研发,主要用于数学规划问题的建模,并支持调用多种求解器求解。它当前支持通用的线性、非线性、混合整数问题的建模。其语法贴近数学语言,与代数数学公式很接近,易学易写易读易维护。且MindOpt APL支持对接20+种优化求解器,可用一行命令就切换,大大提升了用户在优化问题求解环节的方案丰富度,降低风险和使用门槛。

支持的求解器

商用求解器

支持的商用求解器包含:

开源求解器

支持的开源求解器包含:

求解器描述适合问题
Ipopt来自COIN-OR, Eclipse Public License,可获取源码 https://github.com/coin-or/IpoptNonlinear optimization (NLP)
Cbc来自COIN-OR, Eclipse Public License,可获取源码 https://github.com/coin-or/CbcMixed integer linear programming(MILP)
Gecodehttps://www.gecode.org/,MIT license,可获取源码https://github.com/Gecode/gecodeConstraint solver (约束规划)
Bonmin来自COIN-OR, Eclipse Public License,可获取源码:https://github.com/coin-or/BonminMixed-Integer Nonlinear Programming(MINLP)
HiGHShttps://highs.dev,MIT license,可获取源码https://github.com/ERGO-Code/HiGHSlarge-scale sparse linear programming (LP),
mixed-integer programming (MIP), and quadratic programming (QP)
Couennehttps://www.coin-or.org/Couenne/,来自COIN-OR, Eclipse Public License,可获取源码https://www.coin-or.org/download/source/Mixed-Integer Nonlinear Programming(MINLP)
JaCoPGNU Affero General Public License,可获取源码:https://github.com/radsz/jacopConstraint Programming(约束规划)

应用

一个简单的示例:

clear model; #清除模型,多次运行使用

# -----建模----
var xa >= 3;   
var xb >= 3;
maximize reward: 100 * xa + 150 * xb;
subject to cons: xa + xb = 8;

# -----求解----
option solver mindopt;  #(可选)选择求解器,默认就是MindOpt
solve;

option solver cbc; 
solve;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

结果如下:

Running mindoptampl
wantsol=1
MindOpt Version 1.0.1 (Build date: 20231114)
Copyright (c) 2020-2023 Alibaba Cloud.

Start license validation (current time : 01-DEC-2023 17:59:41).
License validation terminated. Time : 0.005s

Model summary.
 - Num. variables     : 2
 - Num. constraints   : 1
 - Num. nonzeros      : 2
 - Bound range        : [3.0e+00,8.0e+00]
 - Objective range    : [1.0e+02,1.5e+02]
 - Matrix range       : [1.0e+00,1.0e+00]

Presolver started.
Model has been fully presolved.
Presolver terminated. Time : 0.000s

Simplex method started.
Model fingerprint: ==wZ3d2dnd3Z
Postsolver started.
Simplex method terminated. Time : 0.001s


OPTIMAL; objective 1050.00
0 simplex iterations

Completed.
Running cbc
CBC 2.10.5Completed.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/628917
推荐阅读
相关标签
  

闽ICP备14008679号