整数规划初始解功能

相关函数

设置并加载初始解

对于整数规划问题,杉数求解器COPT提供设置指定单个变量或一组变量初始值的方法,并加载至模型中。可以指定的参数主要有:

  • vars :指定变量

  • startvals :指定变量取值

不同编程接口中的实现方式如 表 43 所示:

表 43 设置初始解的函数

编程接口

函数

C

COPT_AddMipStart

C++

Model::SetMipStart()

C#

Model.SetMipStart()

Java

Model.setMipStart()

Python

Model.setMipStart(vars, startvals)

注意

  • 关于初始解相关操作,在不同编程接口中的函数名称、调用方式,以及 参数名称略有不同 ,但是实现的功能和参数含义是一致的;

  • 关于在C语言接口设置初始解,具体请参考 C API函数:整数规划初始解功能函数 章节 的 COPT_AddMipStart 函数;

  • 可以通过多次调用该方法来输入不同的初始解。请在输入结束后,调用 Model类的 loadMipStart() 函数,将当前设置的初始解加载至模型中, 并清空之前指定的初始解信息,用户可以继续指定新的初始解。

初始解的读入/写入

COPT提供文件读/写的相关函数,可以从初始解文件(".mst")中读取变量取值,作为整数规划变量的初始解取值; 也可以将整数规划求解结果或已有初始解信息,写入至初始解文件(".mst")中。不同编程接口中初始解文件读写的函数,如 表 44 所示:

表 44 初始解读写相关的函数

编程接口

读入初始解文件

写入初始解文件

C

COPT_ReadMst

COPT_WriteMst

C++

Model::ReadMst

Model::WriteMst

C#

Model.ReadMst()

Model.WriteMst()

Java

Model.readMst()

Model.writeMst()

Python

Model.readMst()

Model.writeMst()

相关参数

杉数求解器COPT提供以下优化参数,可以控制算法对模型初始解的处理方式。

  • MipStartMode

    整数参数。

    处理初始解的方式。

    默认值 -1

    可选值

    -1: 自动选择。

    0: 不使用任何初始解。

    1: 仅使用完整且可行的初始解。

    2: 仅使用可行的初始解(若初始解不完整,通过求解子MIP来补全)。

注意: 如果提供的初始解不完整,需要设置 MipStartMode=2 ,否则初始解会被拒绝。

  • MipStartNodeLimit

    整数参数。

    补全不完整的初始解时,求解的子MIP的节点数限制。

    默认值 -1

    最小值 -1

    最大值 INT_MAX

初始解日志输出

初始解被接受的情况

1.初始解可行且比历史初始解更优

Initial MIP solution # 1 with objective value 9.73987 was accepted

2.提供部分初始解,且设置参数 MipStartMode=2 ,通过求解子MIP后补全

Loading 1 initial MIP solution
Extending partial MIP solution # 1
Extending partial MIP solution # 1 succeed (0.2s)
Initial MIP solution # 1 with objective value 9.66566 was accepted

初始解被拒绝的情况

1.提供的初始解不可行

Initial MIP solution # 1 was rejected: Primal Inf 1.00e+00  Int Inf 1.78e-15

2.当前载入的初始解没有比模型中历史初始解更优( not better )

Initial MIP solution # 2 with objective value 10.3312 was rejected (not better)

3.初始解不完整( partial ),且未设置 MipStartMode=2

Loading 1 initial MIP solution
Initial MIP solution # 1 was rejected: partial

4.从当前不完整的初始解,无法通过求解子MIP找到可行解

Loading 1 initial MIP solution
Extending partial MIP solution # 1
Extending partial MIP solution # 1 failed (infeasible)
Initial MIP solution # 1 was rejected: partial