障碍日志
障碍日志可以分为五部分:presolve部分,屏障预处理部分,屏障进展部分,交叉进展部分,摘要部分。
Presolve节
如前所述,Gurobi优化器所做的第一件事当优化模型是应用presolve为了简化算法模型。第一部分Gurobi日志提供信息的程度presolve这方面的成功。从NETLIB模型考虑下面的示例输出dfl001
:
Presolve删除2349行和3378列Presolve时间:0.04秒Presolved: 3722行、8852列,30908 0示例输出显示presolve能够删除2349行和3378列,它需要0.04秒。presolve部分中的最后一行显示presolve之后模型的大小。这是规模优化模型传递障碍。注意,这个模型的计算解决方案,自动转换为解决方案最初的问题一旦障碍完成(通常被称为的过程uncrushing),但这uncrush一步是透明和不产生日志输出。
障碍预处理部分
系数矩阵的线性系统解决了在每个迭代中屏障法可以相当大,相当昂贵的计算。为了降低计算成本,屏障算法的第一步是计算fill-reducing这个矩阵的行和列的重新排序。这一步可以相当昂贵,但成本是降低成本的收回随后屏障迭代。
一旦fill-reducing重新排序计算,Gurobi优化器输出信息屏障相关系数矩阵:
障碍统计:AA的新西兰:3.657 e + 04因素新西兰:8.450 e + 05(大约12 mb的内存)因素行动:3.944 e + 08年每迭代(小于1秒)线程:8第一行显示了较低的三角形的非对角的条目的数量。扩展版的这个矩阵分解算法每次迭代的屏障,所以柯列斯基的结构因素取决于的结构。
下两行显示因子矩阵中的非零值的数量,和所需要的浮点操作数的因素。注意,日志还提供了一个估计的障碍需要多少内存的算法,和每个障碍迭代需要多长时间:这是粗略的估计,是为了提供一个一般意义上的模型将是多么困难解决。如果你想获得一个估计的总体解决方案,注意,大多数模型实现在大约50个迭代收敛,但也有很多例外。交叉运行时通常是与几个障碍迭代的成本,但这一次可以相差很大,这取决于模型的特点。
最后一行显示线程的数量,将用于执行障碍迭代。
你有时可能会看到另外两个线路在本节中:
密集的关口:3免费var: 20第一显示有多少约束矩阵的列作为密集。第二表明多少变量在模型中都是免费的。密集的列和自由变量有时会导致数值求解困难的障碍,所以知道当他们是很有用的礼物。手机万博登录
进展部分
第三部分Gurobi屏障的输出提供信息屏障法的进展:
目标剩余Iter原始对偶原始双惠时间0 1.47340463 e + 12 -1.05838204 1.49 e + e + 09年04 2.46 1.94 e + e + 02年09年0 1 6.13234163 e + 11 -3.97417254 e + 10 5.97 e + 03 5.98 8.82 e + e + 06年08年0 2 2.89634303 e + 11 -9.20268188 e + 10 2.54 e + 03 2.24 3.81 e + e + 06年08年0 3 6.57753936 e + 10 -9.40746258 e + 10 2.39 e + 02年2.87 5.17 e + e + 05年07年0 4 2.44710457 e + 10 -2.59852944 e + 10 3.16 e + 01 3.01 e + 04 9.00 e + 06 0 5 6.74069830 e + 09年-1.78169224 e + 10 4.01 e + 00 2.01 e + 04 3.17 e + 06 0 6 1.93163205 e + 09年-3.10778084 e + 09年2.46 e-01 3.13 e + 03 5.62 e + 05 0 7 6.54973737 e + 08年-6.89946649 e + 08年4.40 e-02 5.35 e + 02 1.47 e + 05 0 8 2.44764500 e + 08年-3.47987016 e + 08年1.47 e-02 4.02 6.46 e + e + 02年04 0 9 1.35906001 e + 08年-1.41063037 e + 08年7.16 3.01 1.66 e + e 03 02 e + 04 10 0 9.29132721 -6.69973369 e + e + 07年07年4.58 7.60 e + e 03 01 1.73 e + 04 0七列在每个输出行显示屏障的迭代的数量表现这一点,原始的和双目标迭代值为当前的屏障,原始的大小和双不可行性为当前迭代(计算的infinity-norms原始和双残余向量,分别),互补的大小违反当前原始和双重迭代(原始解决方案的点积和双降低成本向量),和花费的时间(以挂钟时间计算)。当原始的不可行性,双重的不可行性,互补性满足收敛公差(控制使用的障碍BarConvTol参数),解决方案是宣布完成优化和优化。
与单纯形和MIP优化器,障碍优化器为每个迭代生成一个日志行,独立的价值DisplayInterval参数。
你有时可能会看到一个明星在迭代计算障碍进度日志:
15 2.42800468 e + 03 8.54543324 1.02 1.68 e + e + 04 02 e-09 8.30 e + 04 16 0 4.05292006 4.65997441 e + e + 03 04 1.82 e + 02 2.50 e-01 4.25 e + 04 0 17 * 4.88742259 4.30781025 e + e + 08年10 5.17 e + 00 1.31 e-01 2.52 e-02 0 18 * 1.21709951 e + 06年3.14 3.14 8.55 3.39471138 e + 13 e-06 e-06 e-05 0 19 * -1.38021972 e + 06年3.22 8.20 3.42 3.31580578 e + 16 e-08 e-09 e-08 0 20 * 1.25182178 3.31575855 e + e + 06 19 6.54 e-12 7.34 e-09 3.22 e-11 0这表明该模型可能是原始或双重不可行。注意,这些中间的迹象不可行性并不一定会变成一个不可能实行证据,所以恒星可能在后面的迭代中消失。
交叉部分
第四部分障碍日志提供信息的交叉步骤。本节只存在当选择交叉(通过控制交叉参数。交叉转换障碍产生的内点解算法的基本解决方案。
在交叉是第一阶段推变量的范围,以获得一个有效的基本解。默认情况下,这样做是为了双变量,然后对原始变量。这个阶段的进展与这部分交叉跟踪日志……
交叉日志……1610剩余DPushes DInf 0.0000000 e + 00 1 0 DPushes剩余DInf 0.0000000 e + 00 1 s 144 PPushes剩余PInf 5.7124800 e 03 1 0 PPushes剩余PInf 5.7124800 e 03 1年代推阶段完成:PInf 5.7124800 e 03, DInf 8.1488315 e-07 1 s每一行显示多少推动步骤依然存在,在当前解决方案的不可行性,运行障碍。
在完成推阶段,跨界有一个基本的解决方案,不一定是最优的。由此产生的基础是通过单纯形,单纯形优化完成……
迭代目标原始Inf。双重Inf。时间1700 1.1266352 e + 07年5.712480 e 03 0.000000 e + 00 1 s 1868 1.1266393 e + 07年0.000000 0.000000 e + e + 00 00 1 s五列的每个输出行单纯形日志显示单纯形迭代执行的数量在交叉算法(包括推动步骤),当前的客观价值基础上,原始的不可行性的大小为当前基础(计算绝对值之和的所有约束和约束违反),双不可行性的大小(计算绝对值之和的双重约束违反),和消耗的时间的交叉算法(使用挂钟时间测量)。当原始和双不可行性都达到零,是最佳的完成和优化的基础。
总结部分
日志的最后一部分障碍提供了摘要信息。它提供了一个屏障算法执行的工作总结,包括迭代计算和运行时,它提供了优化结果的信息。总结了一个模型,解决了最优看起来像这样:
在1868年解决了迭代最优目标1.126639304 e + 07年和1.05秒其他终止国家产生不同的总结。例如,一个用户中断将会产生一个看起来像:
于7482年停止迭代和3.41秒解决打断触及期限会产生一个总结看起来像:
于9221年停止迭代和5.00秒超过了时间限制