optuna.samplers.BruteForceSampler

class optuna.samplers.BruteForceSampler(seed=None, avoid_premature_stop=False)[源代码]

使用暴力法的采样器。

此采样器在定义好的搜索空间上执行穷举搜索。

示例

import optuna


def objective(trial):
    c = trial.suggest_categorical("c", ["float", "int"])
    if c == "float":
        return trial.suggest_float("x", 1, 3, step=0.5)
    elif c == "int":
        a = trial.suggest_int("a", 1, 3)
        b = trial.suggest_int("b", a, 3)
        return a + b


study = optuna.create_study(sampler=optuna.samplers.BruteForceSampler())
study.optimize(objective)

注意

定义的搜索空间必须是有限的。因此,当使用 FloatDistributionsuggest_float() 时,不允许使用 step=None

注意

当在同一个 Study 中更改建议范围或参数时,采样器可能无法尝试整个搜索空间。

参数:
  • seed (int | None) – 用于固定试验顺序的种子,因为搜索顺序是随机打乱的。请注意,不建议在分布式优化设置中使用此选项,因为此选项无法确保试验顺序,并且可能会增加分布式优化期间重复建议的数量。

  • avoid_premature_stop (bool) – 如果为 True,则采样器执行严格的穷举搜索。请注意,启用此选项可能会增加重复采样的可能性。当此选项未启用(默认)时,采样器应用更宽松的标准来确定何时停止搜索,这可能导致搜索空间覆盖不完整。更多信息请参见 https://github.com/optuna/optuna/issues/5780

注意

在 v3.1.0 中作为实验性功能添加。接口可能会在后续版本中更改,恕不另行通知。参见 https://github.com/optuna/optuna/releases/tag/v3.1.0

方法

after_trial(study, trial, state, values)

试验后处理。

before_trial(study, trial)

试验预处理。

infer_relative_search_space(study, trial)

推断目标试验中相对采样将使用的搜索空间。

reseed_rng()

重新设置采样器的随机数生成器种子。

sample_independent(study, trial, param_name, ...)

为给定分布采样一个参数。

sample_relative(study, trial, search_space)

在给定搜索空间中采样参数。

after_trial(study, trial, state, values)[源代码]

试验后处理。

此方法在目标函数返回后、试验完成并存储其状态之前调用。

注意

在 v2.4.0 中作为实验性功能添加。接口可能会在后续版本中更改,恕不另行通知。参见 https://github.com/optuna/optuna/releases/tag/v2.4.0

参数:
  • study (Study) – 目标研究对象。

  • trial (FrozenTrial) – 目标试验对象。在修改此对象之前请复制一份。

  • state (TrialState) – 试验结果状态。

  • values (Sequence[float] | None) – 试验结果值。如果试验成功,保证不是 None

返回类型:

None

before_trial(study, trial)

试验预处理。

此方法在调用目标函数之前、实例化试验之后调用。更准确地说,此方法在试验初始化期间调用,恰好在 infer_relative_search_space() 调用之前。换句话说,它负责在推断搜索空间之前应该完成的预处理。

注意

在 v3.3.0 中作为实验性功能添加。接口可能会在后续版本中更改,恕不另行通知。参见 https://github.com/optuna/optuna/releases/tag/v3.3.0

参数:
  • study (Study) – 目标研究对象。

  • trial (FrozenTrial) – 目标试验对象。

返回类型:

None

infer_relative_search_space(study, trial)[源代码]

推断目标试验中相对采样将使用的搜索空间。

此方法在 sample_relative() 方法之前调用,此方法返回的搜索空间会传递给它。不包含在搜索空间中的参数将使用 sample_independent() 方法采样。

参数:
  • study (Study) – 目标研究对象。

  • trial (FrozenTrial) – 目标试验对象。在修改此对象之前请复制一份。

返回:

一个字典,包含参数名称和参数分布。

返回类型:

dict[str, BaseDistribution]

另请参阅

请参考 intersection_search_space() 作为 infer_relative_search_space() 的一个实现。

reseed_rng()

重新设置采样器的随机数生成器种子。

如果试验以选项 n_jobs>1 并行执行,Study 实例会调用此方法。在这种情况下,采样器实例会被复制,包括随机数生成器的状态,并且它们可能会建议相同的值。为了防止这个问题,此方法为每个随机数生成器分配一个不同的种子。

返回类型:

None

sample_independent(study, trial, param_name, param_distribution)[源代码]

为给定分布采样一个参数。

此方法仅用于 sample_relative() 方法返回的搜索空间中未包含的参数。此方法适用于不使用参数之间关系(例如随机采样和 TPE)的采样算法。

注意

任何内置采样器在采样新参数时都会忽略失败的试验。因此,从采样器的角度来看,失败的试验被视为已删除。

参数:
  • study (Study) – 目标研究对象。

  • trial (FrozenTrial) – 目标试验对象。在修改此对象之前请复制一份。

  • param_name (str) – 采样的参数名称。

  • param_distribution (BaseDistribution) – 指定采样算法先验和/或尺度的分布对象。

返回:

一个参数值。

返回类型:

Any

sample_relative(study, trial, search_space)[源代码]

在给定搜索空间中采样参数。

此方法在每个试验开始时调用一次,即在目标函数评估之前调用。此方法适用于使用参数之间关系(例如高斯过程和 CMA-ES)的采样算法。

注意

任何内置采样器在采样新参数时都会忽略失败的试验。因此,从采样器的角度来看,失败的试验被视为已删除。

参数:
返回:

一个包含参数名称和值的字典。

返回类型:

dict[str, Any]