COPT调优工具

调优工具基本介绍

对于支持的优化问题类型,杉数求解器COPT调优工具可以进行求解性能的自动调优。对于连续/非连续优化问题,支持的调优模式有所不同:

  • 离散优化问题:支持调优求解时间、最优相对容差、目标函数值和目标函数值下界;

  • 连续优化问题:支持调优求解时间。

COPT调优工具的工作流程如下:

  1. 首先,进行基准计算,并允许用户自定义基准计算参数;

  2. 然后,逐次生成调优参数,通过参数调优计算寻找改进求解性能的参数组合。

调优工具相关参数

调优工具相关的参数及对应含义,如 表 47 所示:

表 47 参数调优相关参数总览

参数名

类型

参数含义

TuneTimeLimit

浮点数参数

参数调优的时间限制

TuneTargetTime

浮点数参数

参数调优的时间目标

TuneTargetRelGap

整数参数

参数调优的最优相容差目标

TuneMethod

整数参数

参数调优的方法

TuneMode

整数参数

参数调优的模式

TuneMeasure

整数参数

参数调优结果计算方式

TunePermutes

整数参数

参数调优每组参数模型计算次数

TuneOutputLevel

整数参数

参数调优日志输出强度

参数调优功能

COPT调优工具提供了以下功能:

调优方法

该功能由参数 TuneMethod 控制,提供如下两种搜索方式:

  • 贪婪搜索方法:期望以较少次数参数调优计算,寻找较优的参数设置;

  • 广泛搜索方法:尝试更多的参数组合,具有更大的搜索空间,更可能寻找到较优的参数设置,但同时也会消耗更多的调优时间。

参数 TuneMethod 的可能取值及对应含义如下,通过设置其为不同取值,以进行搜索方式的选择,默认设置为自动选择。

  • -1: 自动选择

  • 0: 贪婪搜索策略

  • 1: 更广泛的搜索策略

调优模式

该功能由参数 TuneMode 控制,可选项有:求解时间、最优相对容差、目标函数值和目标函数值下界,默认设置为自动选择。不同调优模式选项分别对应该参数的不同取值:

  • 0: 求解时间

  • 1: 最优相对容差

  • 2: 目标函数值

  • 3: 目标函数值下界

注意: 对于整数规划问题,默认设置下,若基准计算在给定的时间限制内未将模型求至最优,则调优工具将自动将调优模式切换为最优相对容差。

调优扰动次数

该功能由参数 TunePermutes 控制。为了测试模型求解性能的扰动变化,COPT调优工具允许用户指定每次参数调优计算运行模型的次数,默认设置为自动选择。

调优准则

该功能由参数 TuneMeasure 控制,用来选择计算调优结果的计算方式。

当用户每次参数调优计算运行多次模型时,COPT调优工具将根据设置的调优准则计算合成的调优值。

该参数的可选项有:平均值和最大值,默认设置为自动选择。

  • 0: 计算平均值

  • 1: 计算最大值

调优目标

该功能由参数 TuneTargetTimeTuneTargetRelGap 控制。

COPT调优工具允许用户指定求解时间和最优相对容差作为调优目标,当调优工具发现满足指定调优目标的参数后,即自动终止调优。 对于求解时间,默认值为0.01秒,对于最优相对容差,默认值为 1e-4

调优日志输出

该功能由参数 TuneOutputLevel 控制,默认输出每次调优尝试的摘要。可选项及对应参数取值如下:

  • 0: 不输出调优日志

  • 1: 仅输出改进参数的摘要

  • 2: 输出每次调优尝试的摘要

  • 3: 输出每次调优尝试的详细日志

调优时间限制

该功能由参数 TuneTimeLimit 控制,它表示参数调优计算的时间限制。默认设置为自动选择。

用户自定义部分

用户可以自定义以下部分:

  • 自定义基准参数:

    COPT调优工具允许用户设置基准计算的参数,在后续的参数调优计算中,这些参数将作为固定参数,COPT调优工具将不会对固定参数进行调优。

  • 自定义整数初始解:

    COPT调优工具允许用户设置基准计算的初始解,在后续的参数调优计算中,也将使用这些初始解进行计算。

  • 自定义调优文件

    COPT调优工具允许用户从调优文件中读取待选择的参数组合,此时调优工具将以指定的参数组合为依据进行参数调优计算,否则COPT调优工具将自动生成参数组合进行调优计算。

    注意: COPT调优文件与COPT参数文件格式相似,区别在于调优文件允许单个参数指定多个值。

获取调优结果

参数调优结束后,可以通过属性 TuneResults 获取参数调优结果数目,也可以加载指定编号的调优结果到模型或者写入到参数文件中。

COPT提供输出指定编号的参数调优结果到参数文件(".par")中,需要指定的参数有:

  • idx :参数调优结果编号

  • filename :文件名称

不同编程接口中对应的函数如下:

表 48 不同接口中写入参数调优结果的函数

编程接口

函数

C

COPT_WriteTuneParam

C++

Model::WriteTuneParam()

C#

Model.WriteTuneParam()

Java

Model.writeTuneParam()

Python

Model.writeTuneParam()

参数调优示例

例如,使用COPT命令行工具对模型 "foo.mps" 进行调优以改进求解时间,相关命令为:

copt_cmd -c "read foo.mps; tune; exit"

以Python接口为例,使用COPT调优工具的代码示例如下:

env = Envr()
m = env.createModel()
m.read("foo.mps")
m.tune()