优化求解器之LP文件的格式简介

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 在使用MindOpt优化求解器解决实际问题时,其中重要的一环在于如何建立优化模型,以及存储优化模型以便于作为求解器的输入文件。存储优化模型的文件,其关键在于定义一种清晰的格式,用来说明优化模型的数学结构和相关的数据。接下来我们将发布一系列文章,对常见的MPS/LP等格式的模型文件和命名规范进行简要的介绍。

这篇文章是系列的第二篇,MindOpt支持带有一些扩展名的 LP 文件格式。LP 格式不是一个明确定义的标准,不同的优化包解释同一个LP 文件的方式可能会略有不同。下列通过一个案例来详细讲述LP文件的命名规范。


线性规划模型:

max     x1 + 2 x2 + 3 x3 +  x4

s.t.       − x1 + x2 + x3 + 10 x4 ≤ 20

           x1 − 3 x2 + x3 ≤ 30

           x2 - 3.5 x4 = 0

           0 ≤ x1 ≤ 40,x2 ≥ 0,x3 ≥ 0,2 ≤ x4 ≤ 3


如果写成LP文件,展示如下:

Maximize

obj: x1 + 2 x2 + 3 x3 + x4     #目标函数

Subject To      #约束条件

c1: - x1 + x2 + x3 + 10 x4 <= 20

c2: x1 - 3 x2 + x3 <= 30

c3: x2 - 3.5 x4 = 0

Bounds      #表示变量的边界,里面若有 free 则表示该变量无上下界

0 <= x1 <= 40

2 <= x4 <= 3

General     #定义变量类型,General表示整数变量

x4

End      #结束


结合上述优化模型来说明LP文件的命名规范:


1,LP文件内容

LP文件包含了多个指定目标,约束条件,变量类型和变量边界。LP文件中部分关键字的组合可以为任意大小写字母。


2,目标函数

目标函数通常以max、maximum、maximize、min、minimum、minimize关键字开头。这类关键字定义了目标函数的求解目标,即: x1 + 2 x2 + 3 x3 + 4 x4

目标函数可以自己命名。如果没有命名,则默认为obj

目标函数包含线性项和二次项(MindOpt优化求解器暂不支持对二次规划问题的求解,这一功能将在后续版本中发布)。线性项如: 3x1 + x2 - 0.3 x3

二次项如:

minimize

myobj: 3 x1 + 2x2 - 0.5 x3 + [ x1^2 + 3 x1 * x2 ]/2

其实等同于 minimize 3 x1 + 2 x2 − 0.5⋅ x3 + 1/2(x12 + 3⋅ x1⋅ x2)


3,约束条件

约束条件部分应该以subj to、subject to、s.t.、st之一开头。约束条件包含名称(可不填)、相应的表达式和边界。

Subject To

c1: - x1 + x2 + x3 + 10 x4 <= 20

c2: x1 - 3 x2 + x3 <= 30

c3: x2 - 3.5 x4 = 0


4,变量边界

可以指定变量的边界。

bound

bounds

bounds部分可不填,但如果填写了,则要遵从边界约束条件。

请注意,在变量边界中列出的所有变量,必须出现在目标函数或约束条件中。

变量边界默认的下限为0,上限为+∞。

如果变量用关键字free,则表示变量的区间为(−∞ ,+∞)

常见的变量边界表示:

UP - 上界

LO - 下界

MI - 下界为负无穷

PL - 上界为正无穷

FX - 固定值

FR - ( − ∞ , ∞ )

例如:

bounds

x1 < 2

0.5 <= x1

x2 free

x3 = 5

1 <= x4 < +inf


5,变量类型

变量类型这部分可以用以下两种方式之一来表达

bin

binaries  

binary

gen

general

另外,还需要在general下面列出所有的整数变量,在binary下面列出所有的二进制(也就是变量边界为0和1的整数变量)。

general

x1 x2

binary

x3 x4

请注意,同变量边界一样,在generalbinary中列出的所有变量必须出现在目标函数或约束条件中。


6,结束部分

结尾,LP 格式的文件必须以关键字end结束。

end


此外,请注意LP文件格式对于命名有严格的要求。


目标函数、约束条件和变量的名称可以由小写字母a-z、大写字母A-Z、数字0-9以及如下的字符组成:

aB6`*!(),/~

注意:数字、句号、字母e和字母E不能用作名称的开头。关键字也不得用于命名。

另外,当使用如\0等在 LP 文件中不被允许的名称,那么求解器将自动更改该名称,并且还会返回 Warning 信息。

LP文件中生成有效命名的工作原理如下:

首先名称被表示为 utf-8编码的字符串,对于其中的任意一个Unicode 字符c分为以下几种情况:

  • 如果c==_下划线),则输出为__两个下划线)。
  • 如果c是有效的 LP 名称字符,则输出仅为c.
  • 如果c是 ASCII 范围内的另一个字符,则输出为_XX,其中XX是该字符的十六进制代码。
  • 如果c是127-65535范围内的字符,则输出为_uXXXX,其中XXXX是该字符的十六进制代码
  • 如果c是大于 65535 的字符,则输出为_UXXXXXXXX,其XXXXXXXX是该字符的十六进制代码。

无效的utf-8子字符串转义为_XX'如果名称以句点e或开头E,则该字符转义为_XX



联系我们:

邮箱:solver.damo@list.alibaba-inc.com

钉钉群:32451444

更多更新通知:https://solver.damo.alibaba.com

钉钉答疑群.png

相关文章
|
C语言 Perl 存储
优化求解器之MPS文件的格式简介
在使用MindOpt优化求解器解决实际问题时,其中重要的一环在于如何建立优化模型,以及存储优化模型以便于作为求解器的输入文件。存储优化模型的文件,其关键在于定义一种清晰的格式,用来说明优化模型的数学结构和相关的数据。接下来我们将发布一系列文章,对常见的MPS/LP等格式的模型文件和命名规范进行简要的介绍。
优化求解器之MPS文件的格式简介
|
Java
【求解器】调用Gurobi求解LP问题(Java代码示例)
【求解器】调用Gurobi求解LP问题(Java代码示例)
323 0
【求解器】调用Gurobi求解LP问题(Java代码示例)
优化求解器之Pyomo建模工具简介
在使用优化求解器解决实际问题的过程中,通过程序接口输入优化模型往往会耗费大量时间和精力,且容易出错。为了简化这一步骤,建模语言应运而生。建模语言最初的概念是在1976年提出的,后经过不断的发展,形成了如今蓬勃的技术、产品和应用市场。建模语言往往并不对实际问题进行求解,而专注在模型建立本身,其目的是将复杂的优化问题简化为抽象的代数表达形式;让用户在开发上只需要专注于代数模型的建立,模型完成后再将数据分别引入。如此不但加快开发流程,更有效减少模型输入错误的可能性。接下来我们将发布一系列文章,对常见的AMPL, Pyomo, PuLP等建模语言进行简要的介绍。
优化求解器之Pyomo建模工具简介
|
编译器 Linux Windows
优化求解器之AMPL建模工具简介
在使用优化求解器解决实际问题的过程中,通过程序接口输入优化模型往往会耗费大量时间和精力,且容易出错。为了简化这一步骤,建模语言应运而生。建模语言最初的概念是在1976年提出的,后经过不断的发展,形成了如今蓬勃的技术、产品和应用市场。建模语言往往并不对实际问题进行求解,而专注在模型建立本身,其目的是将复杂的优化问题简化为抽象的代数表达形式;让用户在开发上只需要专注于代数模型的建立,模型完成后再将数据分别引入。如此不但加快开发流程,更有效减少模型输入错误的可能性。接下来我们将发布一系列文章,对常见的AMPL, Pyomo, PuLP等建模语言进行简要的介绍。
优化求解器之AMPL建模工具简介
|
7月前
|
达摩院 开发者 容器
「达摩院MindOpt」优化形状切割问题(MILP)
在制造业,高效地利用材料不仅是节约成本的重要环节,也是可持续发展的关键因素。无论是在金属加工、家具制造还是纺织品生产中,原材料的有效利用都直接影响了整体效率和环境影响。
「达摩院MindOpt」优化形状切割问题(MILP)
|
7月前
|
人工智能 自然语言处理 达摩院
MindOpt 云上建模求解平台:多求解器协同优化
数学规划是一种数学优化方法,主要是寻找变量的取值在特定的约束情况下,使我们的决策目标得到一个最大或者最小值的决策。
|
2月前
|
机器学习/深度学习 算法 数据可视化
如果你的PyTorch优化器效果欠佳,试试这4种深度学习中的高级优化技术吧
在深度学习领域,优化器的选择对模型性能至关重要。尽管PyTorch中的标准优化器如SGD、Adam和AdamW被广泛应用,但在某些复杂优化问题中,这些方法未必是最优选择。本文介绍了四种高级优化技术:序列最小二乘规划(SLSQP)、粒子群优化(PSO)、协方差矩阵自适应进化策略(CMA-ES)和模拟退火(SA)。这些方法具备无梯度优化、仅需前向传播及全局优化能力等优点,尤其适合非可微操作和参数数量较少的情况。通过实验对比发现,对于特定问题,非传统优化方法可能比标准梯度下降算法表现更好。文章详细描述了这些优化技术的实现过程及结果分析,并提出了未来的研究方向。
37 1
|
5月前
|
人工智能 算法 调度
优化问题之如何选择合适的优化求解器
优化问题之如何选择合适的优化求解器
|
5月前
|
调度 决策智能
优化问题之优化求解器有哪些主要的评估特性
优化问题之优化求解器有哪些主要的评估特性
|
达摩院 调度
使用达摩院MindOpt优化交通调度_最大化通行量—线性规划问题
在数学规划中,网络流问题是指一类基于网络模型的流量分配问题。网络流问题的目标是在网络中分配资源,使得网络的流量满足一定的限制条件,并且使得某些目标函数最小或最大化。网络流问题通常涉及一个有向图,图中每个节点表示一个资源,每条边表示资源之间的关系。边上有一个容量值,表示该边上最多可以流动的资源数量。流量从源节点开始流出,经过一系列中间节点,最终到达汇节点。在这个过程中,需要遵守一定的流量守恒和容量限制条件。