You need to enable JavaScript to run this app. 如何在Genetic Algorithm遗传算法中获取每轮迭代的优化结果?
优惠活动
大模型
产品
解决方案
定价
更多

如何在Genetic Algorithm遗传算法中获取每轮迭代的优化结果?

自定义遗传算法绘图的实现方法

你要的每次迭代优化结果已经可以通过现有代码里的model.report属性直接获取:

  • model.report是按迭代顺序排列的列表,每个元素对应对应迭代次结束后当前找到的全局最优目标函数值,列表长度等于算法实际运行的总迭代次数。

你拿到该数据后,先关闭库的默认自动绘图,即可自行自定义绘图样式。关闭默认绘图只需在算法参数中添加'plot_obj': False配置即可,参考参数如下:

algorithm_param={'max_num_iteration': None, 
                'population_size':100,
                'mutation_probability':0.1,
                'elit_ratio': 0.1,
                'crossover_probability': 0.5,
                'parents_portion': 0.2,
                'crossover_type':'uniform',
                'max_iteration_without_improv':100,
                'plot_obj': False} # 关闭默认自动绘图

自定义收敛曲线参考代码:

import matplotlib.pyplot as plt

# 模型初始化代码不变
model=ga(function=f,dimension=len(x_coef),variable_type='real',
         variable_boundaries=varbound, algorithm_parameters=algorithm_param)

model.run()
convergence = model.report # 每代最优值序列
solution = model.output_dict # 最终最优解

# 自定义绘图
plt.figure(figsize=(10,6))
plt.plot(convergence, label='最优目标值', color='#2c7fb8', linewidth=2)
plt.xlabel('迭代次数', fontsize=12)
plt.ylabel('目标函数值', fontsize=12)
plt.title('遗传算法优化收敛曲线', fontsize=14)
plt.grid(alpha=0.3)
plt.legend()
plt.show()

如果需要获取每一轮迭代的全量种群数据(包含所有个体的参数、所有个体的目标函数值),可以手动逐次执行迭代逻辑,代替直接调用run()方法,每轮迭代结束后自行保存需要的字段即可。

优化结果示例图

内容的提问来源于stack exchange,提问作者roudan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 06:30:01