OR-Tools求解器(CBC,Coin-or branch and cut)日志解读

使用OR-Tools的CBC求解器,解决混合整数规划问题,solver.EnableOutput() 打印日志输出如下:

WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
W0000 00:00:1717640012.742815   19876 linear_solver.cc:2128] SetSolverSpecificParametersAsString() not supported by Cbc 2.10.7
W0000 00:00:1717640012.743008   19876 linear_solver.cc:2128] SetSolverSpecificParametersAsString() not supported by Cbc 2.10.7
W0000 00:00:1717640012.743045   19876 linear_solver.cc:2128] SetSolverSpecificParametersAsString() not supported by Cbc 2.10.7
Welcome to the CBC MILP Solver 
Version: 2.10.7 
Build Date: May  6 2024 

第一部分报了警告:是应为我在程序中使用SetSolverSpecificParametersAsString()设施求解参数,而CBC求解器不支持此语法。

command line - cbc -solve -quit (default strategy 1)

这些信息是求解器在运行时输出的命令行参数和策略,具体解释如下:

  • command line:表示求解器正在解析命令行参数。
  • cbc:表示使用的是 CBC 求解器。CBC 是一个开源的混合整数线性规划(MILP)求解器。
  • solve:表示求解器将开始求解问题。
  • quit:表示求解器在完成求解后将退出。
  • (default strategy 1):表示求解器正在使用默认的策略 1 来求解问题。
Presolve 83 (-306) rows, 144 (-161) columns and 408 (-496) elements

求解器在预处理(presolve)阶段输出的:

  • 83 (-306) rows:表示预处理后问题中剩余的约束行数为 83 行,原始问题中有 83 + 306 = 389 行。括号中的数字表示预处理阶段减少的行数。
  • 144 (-161) columns:表示预处理后问题中剩余的变量列数为 144 列,原始问题中有 144 + 161 = 305 列。括号中的数字表示预处理阶段减少的列数。
  • 408 (-496) elements:表示预处理后问题中剩余的非零元素数为 408 个,原始问题中有 408 + 496 = 904 个非零元素。括号中的数字表示预处理阶段减少的非零元素数。

这些信息表明,预处理阶段成功地简化了问题,减少了约束行数、变量列数和非零元素数,从而可能加快求解速度。

Perturbing problem by 0.001% of 9826.062 - largest nonzero change 0.010255166 ( 0.00011093296%) - largest zero change 0.0096304316

Perturbing problem:表示求解器正在对问题进行扰动。扰动是求解器在处理数值稳定性问题时常用的一种技术,通过对问题的系数进行微小的调整来避免数值不稳定性。

  • 0.001% of 9826.062:表示扰动的幅度是原问题某个值(通常是目标函数值或某个约束的系数)的 0.001%。在这个例子中,原问题的某个值是 9826.062。
  • largest nonzero change 0.010255166 ( 0.00011093296%):表示在扰动过程中,非零系数的最大变化是 0.010255166,对应的百分比变化是 0.00011093296%。
  • largest zero change 0.0096304316:表示在扰动过程中,零系数的最大变化是 0.0096304316。
0  Obj 10803.123 Primal inf 205784.52 (24)
  • 0 和 37:这些数字表示迭代次数。0 表示初始迭代,37 表示第 37 次迭代。
  • Obj 10803.123 和 Obj 24135562:这些表示当前迭代的目标函数值。Obj 10803.123 表示在第 0 次迭代时的目标函数值为 10803.123,Obj 24135562 表示在第 37 次迭代时的目标函数值为 24135562。
  • Primal inf 205784.52 (24):这表示当前迭代的原始可行性(Primal Infeasibility)。Primal inf 205784.52 表示原始可行性为 205784.52,(24) 表示有 24 个约束不满足。
    37 Obj 24135562
    Optimal - objective value 24123912
After Postsolve, objective 24123912, infeasibilities - dual 0 (0), primal 0 (0)

表示在后处理阶段之后,目标函数值仍然是 24123912。双重可行性和原始可行性都没有不满足的约束。括号中的数字表示不满足的约束数量。

Optimal objective 24123912.4 - 37 iterations time 0.002, Presolve 0.00

表示最优目标函数值为 24123912.4。 37 次迭代。求解器花费了 0.002 秒来找到最优解。预处理阶段花费了 0.00 秒。

Continuous objective value is 2.41239e+07 - 0.00 seconds

表示连续优化问题的目标函数值为 2.41239e+07(即 24123900)。0.00 seconds:求解器花费了 0.00 秒来解决连续优化问题。

Optimal - objective value 24123912
Optimal - objective value 24123912

表示求解器找到了一个最优解,目标函数值为 24123912。

Presolve is modifying 112 integer bounds and re-presolving
Presolve 83 (-306) rows, 144 (-161) columns and 408 (-496) elements
Perturbing problem by 0.001% of 9490.9748 - largest nonzero change 0.092517803 ( 0.0013972213%) - largest zero change 0.0090802042
0 Obj 24123828 Primal inf 1650.3013 (8)
Optimal - objective value 24135729
Presolve 82 (-1) rows, 136 (-8) columns and 384 (-24) elements
0 Obj 24135729
Optimal - objective value 24135729

2 fixed, 22 tightened bounds, 15 strengthened rows, 0 substitutions
0 fixed, 0 tightened bounds, 11 strengthened rows, 0 substitutions

2 fixed:表示有 2 个变量的值被固定。22 tightened bounds:表示有 22 个变量的上下界被收紧。15 strengthened rows:表示有 15 个约束被加强。0 substitutions:表示没有进行变量替换。

Perturbing problem by 0.001% of 50200.744 - largest nonzero change 0.52348981 ( 0.0018249885%) - largest zero change 0
0  Obj 8.7999294e+08 Primal inf 0.94600478 (1)
Optimal - objective value 8.7998479e+08
Presolve 55 (-27) rows, 118 (-18) columns and 324 (-55) elements
0  Obj 8.7998479e+08 Dual inf 25838.845 (26)
End of values pass after 8 iterations
8  Obj 8.7998479e+08
Optimal - objective value 8.7998479e+08
0 fixed, 0 tightened bounds, 7 strengthened rows, 0 substitutions
Optimal - objective value 8.7998479e+08
Presolve 55 (0) rows, 118 (0) columns and 324 (0) elements
0  Obj 8.7998479e+08
Optimal - objective value 8.7998479e+08
Optimal - objective value 8.7998479e+08
processed model has 55 rows, 118 columns (103 integer (15 of which binary)) and 324 elements
0  Obj 8.7998479e+08
Optimal - objective value 8.7998479e+08
Optimal - objective value 8.7998479e+08
Optimal - objective value 8.7998479e+08
Perturbing problem by 0.001% of 45179.542 - largest nonzero change 0.4004851 ( 0.0014261159%) - largest zero change 0
0  Obj 8.7999298e+08 Primal inf 0.010064455 (1)
Optimal 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值