ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

深挖Opytimizer的History:提取每轮迭代数据做优化过程深度分析

深挖Opytimizer的History:提取每轮迭代数据做优化过程深度分析 深挖Opytimizer的History提取每轮迭代数据做优化过程深度分析【免费下载链接】opytimizer Opytimizer is a Python library consisting of meta-heuristic optimization algorithms.项目地址: https://gitcode.com/gh_mirrors/op/opytimizerOpytimizer 是一个 Python 元启发式优化算法库内置 PSO、GA、WOA 等数十种优化器其自带的History 模块会在每轮迭代自动记录最优个体的位置与适应度值。本文带你深挖opytimizer/utils/history.py中的 History 类学会提取每轮迭代数据、绘制收敛曲线、保存检查点完成对优化过程的深度分析。为什么需要 Opytimizer History大多数人在跑完优化后只关心一个结果最终的最优解。但很多场景你其实想知道的是场景需要的数据算法是否提前收敛早熟每轮的最优适应度变化趋势个体是如何逼近最优解的每个 agent 每轮的位置轨迹这次实验花了多久总耗时History 会自动记录time跑了一半断了怎么继续检查点文件 每轮历史History 正是为此设计的迭代数据记录仪Opytimizer.start()在每轮update evaluate之后都会调用一次history.dump(agents..., best_agent...)见 opytimizer/opytimizer.py 第 242 行附近把数据按轮次追加成列表最后一维就是迭代序号。快速开始三步开启完整记录opt Opytimizer(space, optimizer, function, save_agentsTrue) opt.start(n_iterations10)save_agentsFalse是默认值。开启后会记录搜索空间中所有 agent的每轮位置与适应度数据量较大只建议在分析阶段使用日常调参保持关闭即可。运行结束后opt.history中已包含这些键键内容形状近似best_agent每轮最优个体的位置, 适应度每轮一个 (position, fit) 元组agents每轮全部 agent 的位置, 适应度仅save_agentsTrue时记录time任务总耗时秒单个标量get_convergence()一键提取每轮迭代数据分析的第一步是把历史数据取出来。History 的核心方法就一个——get_convergence(key, index0)它直接返回 NumPy 数组best_agent_pos, best_agent_fit opt.history.get_convergence(best_agent)各 key 的返回内容对照key返回值best_agent(位置数组, 适应度数组)最后一个索引即最终结果agents传入index指定某个 agent返回(该agent每轮位置, 每轮适应度)local_position仅位置数组局部搜索类算法使用官方示例examples/utils/inspect_optimization_history.py完整演示了这套流程用 PSO 在 Sphere 函数上跑 10 轮后直接对比History 中的最终最优个体与搜索空间中的 best_agent二者一致说明记录是可靠的。深度分析实战三条常用分析路径1. 画收敛曲线把best_agent_fit丢进内置的收敛绘图函数即可from opytimizer.visualization import convergence convergence.plot(best_agent_fit, titlePSO 收敛曲线)该函数支持多条曲线对比labels参数非常适合比较不同优化器在同一函数上的收敛速度实现见opytimizer/visualization/convergence.py。2. 追踪单个 agent 的行走轨迹开启save_agentsTrue后index参数让你能取出任意第 N 个 agent 的完整轨迹判断种群是协同收敛还是各自为战agent_0_pos, agent_0_fit opt.history.get_convergence(agents, index0)3. 独立使用 History 做通用记录History 并不绑定 Opytimizer 主流程。dump()接受任意关键字参数并自动累积成列表因此也可以作为通用迭代记录器参考examples/utils/interact_with_history.pyh History() h.dump(x1) h.dump(x2) print(h.x) # [1, 2]检查点与断点续跑save / load深度分析常常伴随长时间实验History 与检查点机制天然互补手动保存opt.save(task.pkl)会把整个优化对象含 History序列化到磁盘随后用Opytimizer.load(task.pkl)加载即可继续取数分析自动检查点传入CheckpointCallback(frequency1)回调start()会按指定频率自动落盘见examples/applications/additional_features/create_optimization_checkpoints.py断点续跑从文件加载后再次调用start(n_iterations25)History 会继续追加等效于一次性长跑见examples/applications/additional_features/resume_optimization_from_file.py。也就是说即使实验中断你之前每一轮的迭代数据都安全躺在检查点文件里随时可以加载后做分析。使用 History 的 3 个实用技巧控制内存save_agents关闭时History 只存best_agent和time长时间实验几乎没有额外开销需要个体轨迹时再临时开启。数据就是列表每个键的值都是按轮次追加的列表因此除get_convergence()外你也能直接opt.history.best_agent拿到原始元组做自定义处理。多次 start() 自动续记连续多次调用start()迭代序号继续累加History 曲线不会断裂适合分批实验。小结目标关键 API记录每轮数据History.dump()start 时自动调用提取迭代数据history.get_convergence(best_agent)分析单个 agentget_convergence(agents, indexk)可视化opytimizer/visualization/convergence.py的plot()保存与续跑opt.save()/Opytimizer.load()/CheckpointCallbackOpytimizer 的 History 模块用最简洁的dump 进列表、按 key 取出的模型把每轮迭代的位置、适应度与耗时完整沉淀下来。掌握get_convergence()这一个方法你就能从收敛速度诊断、个体轨迹追踪到实验断点续跑完成对优化过程的深度分析。 更多 API 细节可参考docs/api/opytimizer.utils.history.rst文档页。【免费下载链接】opytimizer Opytimizer is a Python library consisting of meta-heuristic optimization algorithms.项目地址: https://gitcode.com/gh_mirrors/op/opytimizer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表