命令行调优


命令行调优

grbtune命令行工具提供了一种非常简单的方法来调用模型(或一组模型)上的参数调优。您指定一个列表参数=值首先是参数,然后是包含要调优的模型的文件名称。例如,您可以发出以下命令(在Windows命令窗口中,或在Linux/Mac终端窗口中)…

> grbtune TuneTimeLimit = 10000c: \ gurobi912 \ win64 \ \ data \例子misc07

(将适当的路径替换为存储在MPS或LP文件中的模型)。该工具将尝试寻找参数设置,以减少指定模型上的运行时间。当调优运行完成时,它将写入一组.prm当前工作目录中捕获所找到的最佳参数设置的文件。它还为这些运行写入Gurobi日志文件(在一组. log文件)。

您还可以通过我们的编程语言api调用调优工具。这将会被讨论不久

如果您在命令行末尾指定了多个模型文件,那么调优工具将尝试为列出的模型寻找最小化总运行时的设置。

运行调优工具

调优工具做的第一件事是执行基线运行。此运行的参数由您选择的初始参数值决定。如果您设置一个参数,它将在整个调优过程中接受所选的值。因此,例如,如果您设置方法参数为2,然后基线运行和所有后续调优运行都将包含此设置。在上面的例子中,你可以通过发出命令:

> grbtune方法=2 TuneTimeLimit=100 misc07

对于MIP模型,您将注意到调优工具实际上执行几个基线运行,并捕获所有这些试验的平均运行时。事实上,该工具将对所考虑的每个参数集执行多次运行。这样做是为了限制随机效应对结果的影响,如前所述。使用TuneTrials调整试验次数的参数。

一旦基线运行完成,该运行的时间就变成了需要跳动的时间。然后,该工具开始搜索改进的参数设置。的默认值TuneOutput参数,工具打印它尝试的每个参数集的输出…

测试候选参数集33…方法2(固定)BranchDir -1启发式0.001 VarBranch 1 Presolve 2解决随机种子#1…解决随机种子#2…优化时间总计49秒(剩余51秒)
这个输出表明该工具到目前为止已经尝试了33个参数集。对于第33个集合,它改变了BranchDir参数,启发式参数,VarBranch参数和Presolve参数(方法参数在我们的初始参数设置中被更改,因此这个更改将出现在工具尝试的每个参数设置中,并被标记为固定)。第一次尝试在0.50秒内解决了模型,而第二次尝试达到了优化工具设置的时间限制+在运行时输出之后)。如果任何一次试验达到了时间限制,那么相应的参数设置将被认为比任何没有达到时间限制的参数设置更差。该输出还表明,到目前为止找到的最佳参数集的运行时间为0.46秒。最后,它显示已经过的和剩余的运行时。

通常会进行调优,直到运行时间超过调优时间限制。但是,按CTRL-C也会停止该工具。

当调优工具完成时,它打印一个摘要…

方法2 (fixed) # Name 0 1 2 Avg Std Dev 0 MISC07 0.85s 0.76s 0.67s 0.76s 0.07改进的参数集1 (mean runtime 0.40s):方法2(固定)DegenMoves 1启发式0 VarBranch 1 CutPasses 5 #名0 1 2 Avg Std Dev 0 MISC07 0.38 0.01 0.40 0.41 0.42年代年代改进参数集2(平均运行时0.44 s):方法2(固定)启发式0 VarBranch 1 CutPasses 5 0 1 2 Avg Std Dev 0 #名称MISC07 0.42 0.01 0.44 0.44 0.45年代年代改进参数组3(平均运行时0.49 s):方法2(固定)启发式0 VarBranch 1 #名0 1 2 Avg Std Dev 0 MISC07 0.49 0.01 0.49 0.50 0.49年代年代改进参数集4(平均运行时0.67 s):方法2(固定)VarBranch 1 #名称0 1 2 Avg Std Dev 0 MISC07 0.74 0.07 0.67 0.58 0.70年代年代写参数文件:tune1。人口、难民和移民事务局通过tune4。prm写入日志文件:tune1.log到tune4.log
摘要显示了尝试的参数集的数量,并提供了找到的几个最佳参数集的详细信息。它还显示了.prm. log文件写道。方法更改这些文件的名称ResultFile参数。如果你设置ResultFile = model.prm,例如,该工具将编写model1.prm通过model4.prmmodel1.log通过model4.log.对于每个显示的参数集,我们打印使用的参数和一个显示每个模型和每次试验结果的小汇总表,以及平均运行时间和标准偏差。

调优工具保留的集的数量由TuneResults参数。默认行为是保留在运行时和已更改参数数量之间实现最佳权衡的集合。换句话说,我们报告在改变一个参数、改变两个参数等情况下获得最佳结果的集合。我们实际上报告了一个Pareto边界,例如,如果三个参数变化的结果比两个参数变化的结果差,我们就不会报告结果。

其他调优参数

到目前为止,我们只讨论了使用调优工具来最小化找到最佳解决方案的时间。对于MIP模型,您还可以在指定的时间限制之后最小化最佳性差距。你不需要采取任何特殊行动来做到这一点;你只是设定了一个时间限制。每当基线运行达到此限制时,调优工具将自动尝试最小化MIP差距。举个例子,命令…

> grbtune TimeLimit=100 glass4
...是否要寻找一个参数集,以最小化在模型上运行100秒后实现的最优差距glass4.如果该工具碰巧在时间限制内找到了一个能够解决模型的参数集,那么它将尝试找到最小化平均运行时的设置。

对于在指定的时间限制内没有解到最优的模型,您可以获得对用于选择a的标准的更多控制赢得参数设置TuneCriterion参数。这个参数允许您告诉调优工具搜索产生最佳现有解决方案或最佳下界的参数设置,而不是总是最小化MIP差距,

您可以修改TuneOutput参数来产生更多或更少的输出。缺省值是2。设置为0不会产生输出;设置为1只在发现改进时产生输出;设置为3会为每次运行产生一个完整的Gurobi日志。

如果您想在您的调优运行中使用MIP启动,您可以在参数列表中的模型名称之后立即包含启动文件的名称。例如:

> grbtune misc07。议员misc07.mst
在对多个模型进行调优时,您还可以使用MIP启动;参数列表中紧随start文件的任何模型都将使用相应的start。例如:
> grbtune misc07。议员misc07.mstp0033.mps p0548.mps p0548.mst