整数规划初始解功能
相关函数
设置并加载初始解
对于整数规划问题,杉数求解器COPT提供设置指定单个变量或一组变量初始值的方法,并加载至模型中。可以指定的参数主要有:
vars
:指定变量startvals
:指定变量取值
不同编程接口中的实现方式如 表 44 所示:
编程接口 |
函数 |
---|---|
C |
|
C++ |
|
C# |
|
Java |
|
Python |
|
注意
关于初始解相关操作,在不同编程接口中的函数名称、调用方式,以及 参数名称略有不同 ,但是实现的功能和参数含义是一致的;
关于在C语言接口设置初始解,具体请参考 C API函数:整数规划初始解功能函数 章节 的
COPT_AddMipStart
函数;可以通过多次调用该方法来输入不同的初始解。请在输入结束后,调用 Model类的
loadMipStart()
函数,将当前设置的初始解加载至模型中, 并清空之前指定的初始解信息,用户可以继续指定新的初始解。
初始解的读入/写入
COPT提供文件读/写的相关函数,可以从初始解文件(".mst"
)中读取变量取值,作为整数规划变量的初始解取值;
也可以将整数规划求解结果或已有初始解信息,写入至初始解文件(".mst"
)中。不同编程接口中初始解文件读写的函数,如 表 45 所示:
编程接口 |
读入初始解文件 |
写入初始解文件 |
---|---|---|
C |
|
|
C++ |
|
|
C# |
|
|
Java |
|
|
Python |
|
|
相关参数
杉数求解器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