9.2. 解相关文件

在使用 MindOpt 求解之后,获得的最优解或可行解,可以输出到文件中。

文件类型

模型类型

说明

BAS

线性规划问题

各变量和约束的基状态

SOL

线性规划和混合整数规划问题

各变量的解

MST

混合整数规划问题

非连续变量的解

9.2.1. BAS文件

在线性规划问题求解成功后,可以使用 bas 文件格式,将原问题的各个变量,以及对偶问题各个变量的基状态写入到文件。 也可以在求解一个线性规划问题前,读入一个 bas 文件,给求解器初始化一个基状态。

一个 bas 文件包含多行,第一行记录模型的名称

NAME             : foo

第一行以一个关键字 NAME 开头,: 之后紧跟一个空格,之后的部分记录模型的名称。

接下来是对偶问题的变量基状态,即 RowBasis ,每行对应对偶问题的一个变量。如

FR R0

可以看见,这一行包含一个状态码 FR 和一个约束名称 R0 ,它表示约束 R0 对应的对偶变量,其基状态是 "free"。

基状态码的对应关系见下表:

代码

状态含义

FR

isFree

BS

basic

UU

atUpperBound

UL

atLowerBound

SB

superBasic

EQ

isFixed

UK

未知的

接下来的多行是原始问题变量的基状态,即 ColBasis,每行对应一个变量。如

BS C0

它表示变量 C0 是一个基变量。

备注

记录基状态的行,应该以空格开始,即缩进1个空格。

最后,bas 文件以一个无缩进的 ENDATA 结束。

ENDATA

9.2.2. SOL文件

在使用 MindOpt 成功求解之后,可以将原始和对偶问题的解输出到 sol 文件。一个 sol 文件包含三个部分信息:

  • 模型信息,包括名称、原始及对偶问题目标函数值等

  • 变量的解

  • 对偶变量的解

首先是模型信息,如:

NAME             : foo
PRIMAL OBJECTIVE : -4.88569887318817E+00
DUAL OBJECTIVE   : -4.88569887318827E+00
PROBLEM STATUS   : OPTIMAL

包含四行,每行包含两个字段,以 : 分隔。分别表示:

  • 模型名称

  • 原始问题目标函数值

  • 对偶问题目标函数值

  • 求解状态

接下来是一个空行,之后的多行是变量的解(即 X):

VARIABLES
C0                                       +4.76048966504162E-01
C1                                       +8.73391945822582E-01
C2                                       +0.00000000000000E+00
C3                                       +3.36918727744315E-01
C4                                       +8.96258337238064E-01
C5                                       +6.36894231964933E-01
C6                                       +8.62158935460491E-01

变量的解,以一个 "VARIABLES" 单独占一行来开始,每行的第一个字段是变量名称,第二个字段是变量的解。

接下来又是一个空行,之后多行是对偶变量的解(即 DualSoln):

CONSTRAINTS
c0                                       -1.32829351698292E-01
c1                                       -4.53378851617045E-01
c2                                       +1.07104207431984E-01
c3                                       +6.87509566168726E-01
c4                                       +6.09393433447014E-03
c5                                       -2.88026626252556E-01
c6                                       +1.56943391710642E+00

对偶变量的解,以一个 "CONSTRAINTS" 单独占一行来开始,每行的第一个字段是约束名称,第二个字段为约束对应对偶变量的解。

9.2.3. MST文件

MST文件,被设计用来实现MIP问题的热启动。我们在求解完一个混合整数规划问题后,可以将当前整数变量的解,输出到文件中,用来作为另一个问题的初始解。

由于混合整数规划通常比线性规划慢得多,所以确定一个整型变量的解,比确定一个连续变量的解困难。为了减小文件大小,mst 文件只记录整型变量的解。 而且,提供所有整型变量的解也不是必须的,求解器会试图推测那些缺失的值。

mst 文件被设计为便于手工编辑和修改,它的格式非常简单。它包含多行,每一行记录一个整型变量的解,如:

# Solutions
c0 0
c1 1
c2 0

它记录了三个整型变量 c0, c1 以及 c2 的解。任何以 # 开始的行,都会被当成注释而被忽略。

然而,在求解一个问题之前读入一个初始解用于热启动,并不一定都会生效。总之,求解器只会把这个初始解当做参考。

读入包含一些变量的 mst 文件,和为这些变量设置 Start 是等效的。