evox.workflows.eval_monitor

模块内容

EvalMonitor

评估监控器被用于单目标和多目标工作流。它与评估流程挂钩,可以监控子代及其相应的适应度并对评估计数进行跟踪。此外,它还能即时记录最优解或帕累托前沿。

API

class evox.workflows.eval_monitor.EvalMonitor(multi_obj: bool = False, full_fit_history: bool = True, full_sol_history: bool = False, full_pop_history: bool = False, topk: int = 1, device: torch.device | None = None, history_device: torch.device | None = None)[源代码]

Bases: evox.core.Monitor

评估监控器被用于单目标和多目标工作流。它与评估流程挂钩,可以监控子代及其相应的适应度并对评估计数进行跟踪。此外,它还能即时记录最优解或帕累托前沿。

初始化

初始化监视器。

参数:
  • multi_obj -- 是否为多目标优化。默认值为 False。

  • full_fit_history -- 是否记录适应度值的完整历史。默认为True。将其设置为FALSE可能会减少内存使用。

  • full_sol_history -- 是否记录完整的解的历史。默认为 False。将其设置为 True 可能会增加内存使用量。

  • topk -- 只影响单目标优化。要记录的精英解决方案的数量。默认为 1,将记录最佳个人。

  • device -- 监视器的设备。默认值为 None。

  • history_device -- 记录历史的设备。默认为 None。如果为 None,将使用 cpu。

小技巧

history_device 设置为与监视器相同的设备可以节省数据传输时间,但可能会增加设备上的内存使用量。

备注

当使用 opt_direction="max" 时,适应度值会在内部被乘以 -1,以确保优化逻辑始终将最优适应度视为最小值。因此,原始适应度值(例如,monitor.topk_fitnessmonitor.fitness_history 等)将显示为取反的值。然而,像 monitor.get_best_fitness()monitor.get_pf_fitness() 这样的访问方法会自动反转这种取反操作并返回原始的、未修改的值。

property fitness_history: List[torch.Tensor]
property fit_history: List[torch.Tensor]
property solution_history: List[torch.Tensor]
property sol_history: List[torch.Tensor]
property aux_history: Dict[str, List[torch.Tensor]]
property auxiliary_history: Dict[str, List[torch.Tensor]]
set_config(**config)[源代码]
record_auxiliary(aux: Dict[str, torch.Tensor])[源代码]
post_ask(candidate_solution: torch.Tensor)[源代码]
pre_tell(fitness: torch.Tensor)[源代码]
record_history()[源代码]
get_latest_fitness() torch.Tensor[源代码]

从最新迭代中获取适应度值。

get_latest_solution() torch.Tensor[源代码]

从最新的迭代中获取解决方案。

get_topk_fitness() torch.Tensor[源代码]

获取当前前k个适应度值。

get_topk_solutions() torch.Tensor[源代码]

获取当前最优的前k个解。

get_best_solution() torch.Tensor[源代码]

获取迄今为止的最佳解决方案。

get_best_fitness() torch.Tensor[源代码]

获取当前最佳适应度值。

get_pf_fitness(deduplicate=True) torch.Tensor[源代码]

获取到目前为止评估的所有解决方案的近似帕累托前沿适应度值。需要启用 full_fit_history

get_pf_solutions(deduplicate=True) torch.Tensor[源代码]

获取到目前为止已评估的所有解决方案的近似帕累托前沿解。需要启用 full_sol_historyfull_sol_history。如果 deduplicate 设置为 True,则重复的解决方案将被删除。

get_pf(deduplicate=True) Tuple[torch.Tensor, torch.Tensor][源代码]

获取到目前为止评估的所有解的近似帕累托前沿解和适应度值。需要启用 full_sol_historyfull_fitness_history。如果将 deduplicate 设置为 True,则重复的解将被移除。

get_fitness_history() List[torch.Tensor][源代码]

获取适应度值的完整历史记录。

get_solution_history() List[torch.Tensor][源代码]

获取完整的解决方案历史。

plot(problem_pf=None, source='eval', **kwargs)[源代码]

绘制适应度历史。如果提供了问题的 Pareto front,它也会被绘制。

参数:
  • problem_pf -- 问题的帕累托前沿。默认值为 None。

  • source -- 数据来源,可以是 "eval" 或 "pop",默认为 "eval"。当选择 "eval" 时,将绘制来自问题评估端的适应度,表示问题所观察到的内容。当选择 "pop" 时,将绘制算法内部种群的适应度,表示算法所观察到的内容。

  • kwargs -- 为绘图提供的额外参数。