对 cplex/gurobi MPS/LP文件格式的理解

本文深入探讨了MPS和LP文件格式,这两种文件被广泛用于线性规划问题的表述,便于不同优化求解器如Cplex或Gurobi直接读取。通过具体实例,详细解释了MPS和LP文件的结构、关键字及其在表达线性规划模型中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


优化求解器如 cplex 或 gurobi,都支持直接读取线性规划建模文件 MPS 格式或 LP 格式,因此,有必要研究一下,这样就可以编写一个 mps 或 lp 文件,用不同的求解器直接算了。对于下面的线性规划模型:
max ⁡ x 1 + 2 x 2 + 3 x 3 + x 4 s.t. { − x 1 + x 2 + x 3 + 10 x 4 ≤ 20 x 1 − 3 x 2 + x 3 ≤ 30 x 2 − 3.5 x 4 = 0 0 ≤ x 1 ≤ 40 , x 2 ≥ 0 , x 3 ≥ 0 , 2 ≤ x 4 ≤ 3 \begin{aligned} &\max\quad &&x_1 + 2x_2 + 3x_3 + x_4\\ &\text{s.t.}&& \begin{cases} -x_1 + x_2 + x_3 + 10x_4 \leq 20\\ x_1 - 3x_2 + x_3 \leq 30\\ x_2 - 3.5x_4 = 0\\ 0 \leq x_1\leq 40, x_2\geq 0, x_3\geq 0, 2\leq x_4 \leq 3 \end{cases} \end{aligned} maxs.t.x1+2x2+3x3+x4 x1+x2+x3+10x420x13x2+x330x23.5x4=00x140,x20,x30,2x43

1. MPS 文件的理解

IBM 的官方网站对 MPS 文件有一些详细的解释,参见:https://www.ibm.com/support/knowledgecenter/SSSA5P_12.6.0/ilog.odms.cplex.help/CPLEX/FileFormats/topics/MPS_records.html, (复制在浏览器内打开)
对应的例子是:https://www.ibm.com/support/knowledgecenter/SSSA5P_12.6.1/ilog.odms.cplex.help/CPLEX/UsrMan/topics/discr_optim/mip/02_prob_statement.html

这里我就谈谈自己的理解了。

上面问题的 MPS 文件内容为:

NAME        chen   
ROWS
 N  obj     
 L  c1      
 L  c2      
 E  c3      
COLUMNS
    x1        obj                 -1   c1                  -1
    x1        c2                   1  
    x2        obj                 -2   c1                   1
    x2        c2                  -3   c3                   1
    x3        obj                 -3   c1                   1
    x3        c2                   1    
    MARK0000  'MARKER'                 'INTORG'
    x4        obj                 -1   c1                  10
    x4        c3                -3.5
    MARK0001  'MARKER'                 'INTEND'
RHS
    rhs       c1                  20   c2                  30   
	            
BOUNDS
 UP bnd       x1                  40
 LO bnd       x4                   2
 UP bnd       x4                   3
ENDATA

下面详细解释这个 MPS 文件:

  1. NAME: 表示这个优化模型的名字,后面可以不写内容

  2. ROWS: 每一行,包括目标函数与约束条件
    (1) N 表示自由行, obj是对目标函数的命名,可以任意取
    (2) L 表示该行小于等于, c1是对改行的命名,可以任意取名
    (3) G 表示该行大于等于
    (4) E 表示该行等于

  3. COLUMNS: 每一列,及对应的系数
    (1) 下面的第一列要空
    (2) 下面的第二列表示列的名字,其实就是求解变量
    (3) 下面的第三列表示所在行的名字
    (4) 下面的第四列表示所在行与列对应的系数
    (5) 其中 MARK0000 ‘MARKER’ ‘INTORG’
    MARK0001 ‘MARKER’ ‘INTEND’ 分别表示整数变量的起止
    (6) 第五列、第六列分别与第三列、第四列的含义相同。

  4. RHS: 约束条件最右端的数字
    (1) 下面的第一列要空
    (2) 下面的第二列表示 rhs 名字,可以任取
    (3) 下面的第三列表示所在行的名字
    (4) 下面的第四列表示所在行对应的 RHS 值
    (5) 第五列、第六列分别与第三列、第四列的含义相同。

  5. Bounds: 表示各变量的上界或下界
    (1) LO 表示下界
    (2) UP 表示上界
    (3) FX 表示该变量固定值
    (4) FR 表示改变量的范围为 ( − ∞ , ∞ ) (-\infty,\infty) (,)
    (5) MI 表示下界为负无穷
    (6) PL 表示上界为正无穷
    MPS 变量默认的范围为 [ 0 , ∞ ) [0,\infty) [0,)

  6. ENDDATA: 表示 MPS 文件结束

2. LP 文件的理解

上面问题的 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
 0 <= x1 <= 40
 2 <= x4 <= 3
General
 x4
End

LP文件非常清晰明了,但貌似规划软件对 mps 文件支持的更好。其中需要注意的是

  • Bounds 里面若有 free 表示该变量无上下界
  • General 表示整数变量
  • Binary 表示二进制变量
  • \ 表示注释

cplex 有自己的字段 pwl 表示分段线性约束。

一、功能简介 《大样文件阅读器》是北大方正或潍坊华光电子出版系统的大样文件(又称为二扫文件)的浏览软件。本软件不需要任何硬件支持,便可在中文MS-Windows9X、WindowsNT、Win2000和WindowsXP环境下显示和打印二扫文件。 本软件适用于以下用户: 1、任何使用方正系统排版的个人。特别适合于科研工作者将自己著述的二扫文件直接放在Internet上进行交流。 2、国家机关和公司。既可以使用二扫文件作为电子公文、电子文档的标准格式进行局域网络上的传递或者在Internet上对外发布,又可以将二扫文件建成全文数据库系统或者刻制CDROM,使用本软件进行二扫文件的浏览与打印。 3、出版社、杂志社、报社。使用本软件实现电子出版和网络出版,尤其适用于科技书籍和期刊杂志的电子出版和网络出版。 二、主要特性 1、良好的平台无关性 《大样文件阅读器》是一个完全独立的应用程序,不需要外挂任何软硬件产品,与Windows系列操作系统具有良好的兼容性。由于它的独特设计,完全可以兼容未来的Windows系统。随着操作系统发展日新月异,我们的所有产品将会兼容其它操作系统,例如Linux。 2、完备的文件格式兼容性 《大样文件阅读器》不仅可以阅读老的方正二扫文件,如PS2、S72、S2,而且能阅读最新的大样文件格式MPS和S92。 3、支持图片显示 《大样文件阅读器》能支持JPG、GIF、BMP、TIF、PCD、PBM、TAG、PNG、PCX等图形文件格式。 4、方便的浏览设计 《大样文件阅读器》提供了方便快捷的操作设计。下面是每一种操作及其对应的快捷键。 5、独特的文本选择模式 《大样文件阅读器》为用户提供了方便的文本选择模式设计,系统分为“拖拽模式”和“选择模式”。 6、文本导出功能 选择“文件”菜单的“另存为”子菜单,可以将当前大样文件导出为文本文件。 7、完全支持GBK标准汉字和图形符号 《大样文件阅读器》完全支持GBK的标准汉字和符号,GBK标准定义的21008个汉字以及1038个符号在《大样文件阅读器》中都能显示和打印。 8、支持方正字库   《大样文件阅读器》不带任何字库,但它提供了两种显示字体方案。 如果你的系统中安装了方正字库,你可以在“设置”菜单的“显示字体方案”中选择使用“方正字库”,此时所有字体均使用方正字库显示和打印。 如果你的系统中没有安装了方正字库,你可以在“设置”菜单的“显示字体方案”中选择使用“系统字库”,此时文件使用的所有字体均会使用系统中的相似字体显示和打印。 9、支持大样文件打印
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心态与习惯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值