manbet体育手机客户端
MPS格式
MPS格式是用于存储数学编程模型的最古老和最广泛使用的格式。这种格式实际上有两种广泛使用的变体。在固定格式中,各个字段必须总是从文件中的固定列开始。自由格式非常类似,但字段由空格字符分隔,而不是出现在特定的列中。这两种格式之间一个重要的实际区别是名称长度。在固定格式中,行和列的名称都是8个字符,空格是名称的一部分。在自由格式中,名称可以任意长(尽管Gurobi读者对名称长度进行了255个字符的限制),名称不能包含空格。Gurobi MPS阅读器读取两种MPS类型,并自动识别格式。
注意,任何以*
字符是评论。该行的内容被忽略。
名称部分
MPS格式文件中的第一部分是姓名
部分。它给出了模型的名称:
姓名afiro.在固定格式中,模型名称从第15列开始。
行段
下一节是排
部分。它以单词开头排
在其自己的行上,并继续为模型中的每一行指定一行。这些线表示约束类型(E
平等,l
小于或等于或G
对于大于或等于),以及约束名称。在固定格式中,类型显示在第2列,行名称从第5列开始。下面是一个简单的示例:
行e r09 e r10 l x05 n成本注意,一个
N
在“类型”字段中表示该行是一个自由行.第一个空闲行用作目标函数。如果文件包含多个N
行,每个行包括优先级,权重,相对和绝对公差场,然后将每个这样的行被视为多目标模型中的目标。附加字段必须在名称后出现,由空格分隔。例如,以下将捕获一对目标,其中第一具有优先级2,第二具有优先级1(并且两者具有相同的权重,相对和绝对公差):
N OBJ0 2 1 0 0 N OBJ1 1 1 0 0请参阅多目标,ObjNPriority,ObjNWeight,objnabstol.,及ObjNRelTol小节中有关这些字段含义的信息。注意,多目标优化问题的所有目标必须是线性的。
懒汉组
下一节是惰性约束
部分。它从一行开始LAZYCONS
,可选,后跟一个空格和惰性级别1-3(如果没有指定惰性级别,则假定为1),然后为每个惰性约束继续一行。格式与。格式相同排
Section:每一行表示约束类型(E
平等,l
小于或等于或G
对于大于等于),以及约束名。在固定格式中,类型出现在第2列,行名从第5列开始。例如:
LAZYCONS E R01 G R07 L S01 LAZYCONS 2 E R02 G R03 L S11
延迟约束是线性约束,它们是语义上等同于标准线性约束(即,条目排
部分)。根据它们的惰性水平,MIP求解器会以不同的方式执行它们。手机万博登录请参阅说明书懒惰的属性的细节。
本章节为可选章节。
列部分
下一个和通常最大的MPS文件的部分是列
节,其中列出了模型中的列以及与每个列关联的非零系数。columns部分中的每一行都提供一个列名,后跟该列中的零、一或两个非零系数。首先使用行名称指定系数,然后使用浮点值。考虑下面的例子:
列X01 X48.301 R09-1.X01 R10-1.06 X05 1.X02 X21-1.R09 1.X02成本-4。第一行表示该列
X01
行中有一个非零X48
带系数.301
,行中有一个非零R09
带系数-1.0
.请注意,与同一列关联的多行必须在文件中连续。在固定格式中,列名在列5中开始,第一个非零的行名称在列15中开始,第一个非零的值在第25列中开始。如果存在第二个非零,则行名称在列40中开始,该值在第50列中开始。
完整性标记
的列
节可以选择包括完整性标记。在一对标记之间引入的变量必须采用整数值。标记内的所有变量的默认下界为0,默认上界为1(其他的上界可以在界限
第节)。整数部分的开头由因托格
标记:
MARK0000'标记''INTORG'该部分的末尾标志为一个
意愿
标记:MARK0000“标记”“意愿”第一个字段(固定格式从第5列开始)是标记的名称(忽略)。第二个字段(固定格式的第15列)必须与字符串相等
“标记”
(包括单引号)。第三个字段(在第40列中,格式固定)是'Intorg'
开始和结束时“意愿”
在整数部分的末尾。的列
节可以包含任意数量的这样的标记对。
RHS部分
MPS文件的下一部分是园艺学会
节,它指定右边的值。这个部分中的每一行可能包含一个或两个右边的值。
RHS B X50 310.X51 300.B X05 80.X17 80。上面的第一行表示这一行
X50
右边的值是310
,及X51
右边的值是300
.在固定格式中,第一个边界的变量名从第15列开始,第一个边界值从第25列开始。对于第二个边界,变量名从第40列开始,值从第50列开始。RHS的名称在第一个字段中指定(固定格式的第5列),但是Gurobi读者忽略这个名称。的任何地方没有提到的行园艺学会
节,该行的右侧值为0
.边界段
MPS文件中的下一部分是可选部分界限
部分。默认情况下,每个变量的下界为0,上界为无限。这一节中的每一行都可以修改变量的下界、上界或两者。每一行表示绑定类型(第2列,固定格式)、绑定名称(忽略)、变量名称(第15列,固定格式)和绑定值(第25列,固定格式)。不同的绑定类型以及关联绑定值的含义如下:
瞧 | 下限 |
向上 | 上限 |
外汇 | 变量固定在指定的值 |
FR | 自由变量(没有较低或上限) |
医疗保险 | 无限的下界 |
PL | 无限上界 |
BV | 变量是二进制(等于0或1) |
锂 | 整数变量的下界 |
UI. | 整型变量的上界 |
SC. | 半连续变量的上限 |
SI. | 半整数变量的上界 |
考虑下面的例子:
边界fr BND x49上升BND x50 80。Lo BND x51 20。外汇BND x52 30。在这个
界限
节,变量X49
得到的下界是-无限
(无限上限不变),变量X50
获取的上界80
(下限没有变化0
,X51
得到的下界是20.
(无限上界不变),并且X52
是固定的30.
.Quadobj部分
MPS文件中的下一部分是可选部分QUADOBJ
节,其中包含二次目标项。本节中的每一行表示Q矩阵下三角中的一个非零值。首先找到参与二次项的两个变量的名称(以固定格式从第5列和第15列开始),然后是系数的数值(以固定格式从第25列开始)。按照惯例,Q矩阵有一个隐式的半乘法器。下面是一个包含三个二次项的示例:
QUADOBJ X01 X01 10.0 X01 X02 2.0 X02 X02 2.0这三个术语将代表二次函数 (回想一下,在对称Q矩阵中,单个非对角项实际上代表了一对非零值)。
QCMATRIX节
MPS文件的下一节包含0个或多个QCMATRIX
块。这些块包含与二次约束相关的二次项。模型中每个二次约束都应该有一个块。
每个QCMATRIX
块以指示相关二次约束名称的行开始(以固定格式从第12列开始)。这个后面还有一个二次项。每个术语在一行中描述,给出了两个相关变量的名称(以固定格式从第5列和第15列开始),然后是系数(以固定格式从第25列开始)。例如:
qcmatrix qc0 x01 x01 10.0 x01 x02 2.0 x02 x01 2.0 x02 x02 2.0这四行描述了三个二次项:二次约束
QC0
包含条款,,及. 请注意QCMATRIX
块必须包含对称矩阵,例如X01 * X02
术语必须伴随着匹配X02 * X01
术语。二次约束的线性术语QC0
出现在列
节。“意义”和“右侧”值显示在排
和园艺学会
部分,分别。
pwlobj部分
MPS文件中的下一部分是可选部分pwlobj.
节,其中包含分段线性目标函数。本节中的每一行表示分段线性目标函数中的一个点。首先显示关联变量的名称(从第4列开始),然后是点的x和y坐标(从第14列和第17列开始)。下面是一个包含两个分段线性表达式的示例,用于变量X01
和X02
,每个都有三点:
X01 1 X01 2 2 X01 3 4 X02 1 1 X02 3 5 X02 7 10
SOS部门
MPS文件中的下一部分是可选部分紧急求救信号
部分。单个SOS约束的表示包含一行,提供SOS集的类型(S1
对于SOS类型1或S2
SOS类型2,在固定格式的第2栏中找到)和SOS集的名称(固定格式的第5栏)。每个SOS成员后面都有一行。成员行给出成员的名称(固定格式的第5列)和相关权重(固定格式的第15列)。下面是一个包含两个SOS2集的示例。
SOS S2 sos1 x1 1 x2 2 x3 3 S2 sos2 x3 1 x4 2 x5 3
指标约束部分
在MPS格式中,指标约束部分是可选的。它以关键字开始指标
.指示部分的每个后续行都以关键字开头如果
(以固定格式放置在第2列),后跟一个空格和行名(行必须已经在排
第节)。该行以一个二进制变量(以固定格式放置在第15列)和最后一个值继续0
或1
(以固定格式置于第25栏)。
这里有一个简单的例子:
指示符如果row1 x1 0如果row2 y1 1 1
本例中的第一个指示符约束说明第1行
必须满足,如果X1
takes0
.
一般约束部分
MPS文件可以包含可选的捕获部分一般约束条件.本节以关键字开始金康合同
.
常规约束可以有两种基本类型:简单的一般约束 -闵,马克斯,或,及,腹肌或PWL., 或者功能约束-多项式(聚),功率(鲍),指数(经验或埃帕)、对数(日志或洛加),和三角函数(罪,余弦, 或者棕褐色).
每个通用约束都以通用约束类型说明符(闵,马克斯,或,及,腹肌,PWL.,聚,鲍,经验,埃帕,日志,洛加,罪,余弦, 或者棕褐色),格式固定,见于第2栏。可以在后面跟着一个空格和约束名称。
对于函数约束,下一行定义了一些用于执行分段线性逼近的属性。该行以关键字开始选项(在第5列中以固定格式找到),后跟两个空格,后跟一个定义的四个值(分隔两个空格)funcpieces.
,FuncPieceLength
,funcpiqueerror
,及FuncPieceRatio
属性值(按此顺序)。
以下内容取决于常规约束类型。简单的常规约束从所谓的结果变量的名称开始,放在它自己的行上(以固定格式从第5列开始)。对于闵或马克斯约束,随后是变量或值的非空列表(每个变量名称在其自己的行上)。对于或和及约束,二进制变量列表如下(每个在其自己的行上)。为了腹肌约束,遵循一个附加变量(在其自己的行上)。以固定格式,所有这些变量或值都在第5列中开始。
分段 - 线性约束以所谓的操作数变量的名称(从第5列以固定格式启动),然后是所谓的结果变量。下一行包含分段 - 线性函数断点,每个函数断点表示为一对x和y值。X值必须是非减少的。
函数约束也以操作数变量的名称开始(以固定格式从第5列开始),后跟两个空格,后跟结果变量的名称。这足以定义经验日志,罪,余弦,及棕褐色职能。的鲍,埃帕和洛加函数分别需要一个指数或基数,定义在下一行(以固定格式从第5列开始)。对于多项式函数,下面的行包含一个系数(固定格式的第5列),后面跟着两个空格,后面跟着相关的幂(仅限自然数)。注意,幂级数一定是递减的。
另一种通用约束类型指标约束,出现在单独的指示器
章节,上面已经描述过了。
以下显示了常规约束部分的示例:
GENCONS最大gc0 r1 x1 x2 x10 0.7最小gencons1 r2 y0 10 y1 r1和AND 1 r b1 b2或OR 1 r b3 b4 ABS GC14 xabs x PWL gc0 x[0]y[0]-1 2 0 1 0 0 0 0 0 0 1 1 2 POLY GC2选项0 0 0.01 0.001-1 x y 4 7 2 SIN gc1选项0.01 1e-05 0.5 y z LOGA gc6选项0 0.01 0.001-1 x y 10 EXPA gc4选项0 0 0.01 0 0 0.001-1 y z 3
有关更多信息,请咨询一般约束讨论.
情景部分
MPS文件可能包含捕获方案数据的可选部分。模型可以具有多种场景,其中每个场景定义了对原始模型的一组更改(我们将其称为基础模型).
本节以关键字开始场景
,其次是场景的数量。场景描述为目标函数、线性约束的右边和变量的边界的一组变化。首先声明客观的更改,然后是右边的更改,然后是绑定的更改。场景可以是空的(即,与基本模型相同)。
每种方案都以关键字开头姓名
(从第2列以固定格式启动),然后是方案名称。
对目标函数的更改定义在列
分段(从第2栏开始,格式固定)。每个客观的变化都在自己的线上;该行包含变量名称(以固定格式的第5列开始),客观名称(从第15列以固定格式启动),以及修改的物理值(以固定格式以列25开始)。格式类似于上面的列部分。
对线性约束右侧的更改在中定义园艺学会
分段(从第2栏开始,格式固定)。每一个右边的变化都在它自己的直线上;这一行包含右侧说明符(以固定格式从第5列开始)、约束名称(以固定格式从第15列开始)和右侧值(以固定格式从第25列开始)。格式类似于上面的右边部分。
对变量边界的更改在界限
小节。每个更改的变量绑定都在其自己的行中。该格式类似于上面的界限部分(具有较小的差异,即固定格式的第一和第二列分别为5和8)。
以下示例展示了MPS格式的三种场景:
场景3 NAME scenario0 NAME scenario1 COLUMNS x1 OBJ 0 x2 OBJ 1 RHS RHS1 c1 2 RHS1 c2 2 BOUNDS FR BND1 x1 LO BND1 x3 0.5 UP BND1 x3 1.5 FX BND1 x2 0 NAME scenario o2 BOUNDS FX BND1 x3 3
有关更多信息,请咨询多个场景的讨论.
恩达塔
MPS文件中的最终行必须是一个恩达塔
声明。
补充说明
请注意,在Gurobi Optimizer中,MPS模型始终以完整的精度写入。这意味着如果您编写模型然后读取它,与结果模型关联的数据将是与原始数据相同的比特。