Study¶
-
class
optuna.multi_objective.study.
MultiObjectiveStudy
(study: optuna.study.Study)[源代码]¶ 多目标优化对应的 study 对象,也就是 trial 的集合。
该对象提供了一系列接口,可用于运行新的
Trial
、获取 trial 历史记录和设置/获取用户定义属性。注意,我们并不推荐直接使用该构造函数。要创建或者加载一个 study 的话,请参考
create_study()
和load_study()
。注解
在 v1.4.0 中作为试验性特性引入,在未来版本中,该接口可能在没有预先告知的情况下被改变。参考 https://github.com/optuna/optuna/releases/tag/v1.4.0.
-
property
directions
¶ 返回优化方向列表。
- 返回
一个包含了每一个目标函数值的优化方向的列表。
-
enqueue_trial
(params: Dict[str, Any]) → None[源代码]¶ 将一个指定参数值的 trial 送入队列。
你可以固定在下一次目标函数求值中将用到的采样参数。
更多细节请参考
optuna.study.Study.enqueue_trial()
的文档。- 参数
params -- 传递给目标函数的参数值。
-
get_pareto_front_trials
() → List[optuna.multi_objective.trial.FrozenMultiObjectiveTrial][源代码]¶ 返回属于该 study 的帕累托前言面的 trial 。
如果没有其他 trial 能决定整个 trial 的话,该 trial 属于对应的帕累托前沿面。我们称一个 trial
t0
决定了另一个 trialt1
if `` 如果all(v0 <= v1) for v0, v1 in zip(t0.values, t1.values)
而且any(v0 < v1) for v0, v1 in zip(t0.values, t1.values)
成立的话。- 返回
一个由
FrozenMultiObjectiveTrial
对象构成的列表。
-
get_trials
(deepcopy: bool = True) → List[optuna.multi_objective.trial.FrozenMultiObjectiveTrial][源代码]¶ 返回该 study 中所有的 trial 。
返回的 trial 根据 trial number 排序。
对库用户来说,我们推荐使用更上手的
trials
属性来获取 trial。- 参数
deepcopy -- 用于控制是否对 trial 应用
copy.deepcopy()
的选项。注意,如果你将该选项设置成False
, 那就不要修改任何返回 trial 中的东西。否则 study 的内部状态可能会改变并且发生无法预知的行为。- 返回
一个由
FrozenMultiObjectiveTrial
对象构成的列表。
-
property
n_objectives
¶ 返回目标函数的数量。
- 返回
目标函数的数量。
-
optimize
(objective: Callable[[multi_objective.trial.MultiObjectiveTrial], Tuple[float]], timeout: Optional[int] = None, n_trials: Optional[int] = None, n_jobs: int = 1, catch: Union[Tuple[()], Tuple[Type[Exception]]] = (), callbacks: Optional[List[Callable[[multi_objective.study.MultiObjectiveStudy, multi_objective.trial.FrozenMultiObjectiveTrial], None]]] = None, gc_after_trial: bool = True, show_progress_bar: bool = False) → None[源代码]¶ 优化一个目标函数。
除了接受一个返回多个目标函数值的目标函数外,该方法和
optuna.study.Study.optimize()
是一样的。更多细节请参考
optuna.study.Study.optimize()
的文档。
-
property
sampler
¶ 返回 sampler 。
- 返回
A
BaseMultiObjectiveSampler
object.
-
set_user_attr
(key: str, value: Any) → None[源代码]¶ 设定一个该 study 的用户属性。
- 参数
key -- 属性键
value -- 属性值,该值应当是可 JSON 序列化的。
-
property
trials
¶ 返回该 study 中所有的 trial 。
返回的 trial 根据 trial number 排序。
这是
self.get_trials(deepcopy=True)
的简写形式。- 返回
一个由
FrozenMultiObjectiveTrial
对象构成的列表。
-
property
user_attrs
¶ 返回用户属性。
- 返回
包含所有用户属性的字典。
-
property
-
optuna.multi_objective.study.
create_study
(directions: List[str], study_name: Optional[str] = None, storage: Union[None, str, optuna.storages._base.BaseStorage] = None, sampler: Optional[multi_objective.samplers.BaseMultiObjectiveSampler] = None, load_if_exists: bool = False) → optuna.multi_objective.study.MultiObjectiveStudy[源代码]¶ 创建一个新的
MultiObjectiveStudy
。- 参数
directions -- 每一个目标函数值的优化方向。
minimize
代表最小化,maximize
代表最大化。study_name -- Study 名。如果该值为 None,那么 Optuna 会
storage -- 数据库 URL。如果该参数被设置成 None 的话,Optuna 将采用内存存储,而
Study
也就无法被持久化。 .. note:: 在传入一个数据库 URL 后,Optuna 会在内部使用 SQLAlchemy 来处理数据库。更多细节请参考 SQLAlchemy's document 。如果想指定非默认的 SQLAlchemy Engine 的话,你可以不用URL,而是用你所需的选项来实例化一个RDBStorage
并将其传递给storage
参数。 .. _SQLAlchemy: https://www.sqlalchemy.org/ .. _SQLAlchemy's document: https://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls .. _SQLAlchemy Engine: https://docs.sqlalchemy.org/en/latest/core/engines.htmlsampler -- 一个实现了幕后 suggestion value 算法的 sampler 对象。如果设置成
None
的话, Optuna 将使用NSGAIIMultiObjectiveSampler
作为默认值。参见samplers
。load_if_exists -- 用于控制处理 study 名冲突情况下 Optuna 行为的选项。如果
load_if_exists
是False
且一个名为study_name
的 study 已经在storage
中,Optuna 将抛出一个DuplicatedStudyError
错误。否则,Optuna 将跳过创建 study 的过程,直接返回现存的那个 study。
- 返回
注解
在 v1.4.0 中作为试验性特性引入,在未来版本中,该接口可能在没有预先告知的情况下被改变。参考 https://github.com/optuna/optuna/releases/tag/v1.4.0.
-
optuna.multi_objective.study.
load_study
(study_name: str, storage: Union[str, optuna.storages._base.BaseStorage], sampler: Optional[multi_objective.samplers.BaseMultiObjectiveSampler] = None) → optuna.multi_objective.study.MultiObjectiveStudy[源代码]¶ 加载指定名称的
MultiObjectiveStudy
。- 参数
study_name -- Study 名。每个 study 都有一个唯一名称作为标识符。
storage -- 像
sqlite:///example.db
这样的数据库 URL 。 更多细节请参考create_study()
。sampler -- A sampler object that implements background algorithm for value suggestion. If
None
is specified,RandomMultiObjectiveSampler
is used as the default. See alsosamplers
.
- 返回
注解
在 v1.4.0 中作为试验性特性引入,在未来版本中,该接口可能在没有预先告知的情况下被改变。参考 https://github.com/optuna/optuna/releases/tag/v1.4.0.