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
请参阅多目标ObjNPriorityObjNWeightobjnabstol.,及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(下限没有变化0X51得到的下界是20.(无限上界不变),并且X52是固定的30.

Quadobj部分

MPS文件中的下一部分是可选部分QUADOBJ节,其中包含二次目标项。本节中的每一行表示Q矩阵下三角中的一个非零值。首先找到参与二次项的两个变量的名称(以固定格式从第5列和第15列开始),然后是系数的数值(以固定格式从第25列开始)。按照惯例,Q矩阵有一个隐式的半乘法器。下面是一个包含三个二次项的示例:

QUADOBJ X01 X01 10.0 X01 X02 2.0 X02 X02 2.0
这三个术语将代表二次函数 <span> $ </ span>(10 x01 ^ 2 + 2 x01 * x02 + 2 x02 * x01 + 2 x02 ^ 2)/ 2 <span> $ </ span>(回想一下,在对称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包含条款< span > < / span > 10美元X01 ^ 2 < span > < / span >美元<span> $ </ span> 4 x01 * x02 <span> $ </ span>,及<span> $ </ span> 2 x02 ^ 2 <span> $ </ span>. 请注意QCMATRIX块必须包含对称矩阵,例如X01 * X02术语必须伴随着匹配X02 * X01术语。

二次约束的线性术语QC0出现在节。“意义”和“右侧”值显示在园艺学会部分,分别。

pwlobj部分

MPS文件中的下一部分是可选部分pwlobj.节,其中包含分段线性目标函数。本节中的每一行表示分段线性目标函数中的一个点。首先显示关联变量的名称(从第4列开始),然后是点的x和y坐标(从第14列和第17列开始)。下面是一个包含两个分段线性表达式的示例,用于变量X01X02,每个都有三点:

X01 1 X01 2 2 X01 3 4 X02 1 1 X02 3 5 X02 7 10

SOS部门

MPS文件中的下一部分是可选部分紧急求救信号部分。单个SOS约束的表示包含一行,提供SOS集的类型(S1对于SOS类型1或S2SOS类型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列)和最后一个值继续01(以固定格式置于第25栏)。

这里有一个简单的例子:

指示符如果row1 x1 0如果row2 y1 1 1

本例中的第一个指示符约束说明第1行必须满足,如果X1takes0

一般约束部分

MPS文件可以包含可选的捕获部分一般约束条件.本节以关键字开始金康合同

常规约束可以有两种基本类型:简单的一般约束 -马克斯腹肌PWL., 或者功能约束-多项式(),功率(),指数(经验埃帕)、对数(日志洛加),和三角函数(余弦, 或者棕褐色).

每个通用约束都以通用约束类型说明符(马克斯腹肌PWL.经验埃帕日志洛加余弦, 或者棕褐色),格式固定,见于第2栏。可以在后面跟着一个空格和约束名称。

对于函数约束,下一行定义了一些用于执行分段线性逼近的属性。该行以关键字开始选项(在第5列中以固定格式找到),后跟两个空格,后跟一个定义的四个值(分隔两个空格)funcpieces.FuncPieceLengthfuncpiqueerror,及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模型始终以完整的精度写入。这意味着如果您编写模型然后读取它,与结果模型关联的数据将是与原始数据相同的比特。