5.4 KiB
5.4 KiB
遗传算法优化ABM模型参数项目
项目概述
本项目使用遗传算法(Genetic Algorithm)来优化基于代理的模型(Agent-Based Model)的关键参数,目标是使模型生成的脆弱产业集合与目标产业集合尽可能匹配。项目包含完整的遗传算法实现、ABM模型集成、数据库操作和结果分析功能。
项目结构
项目根目录/
├── main.py # 遗传算法主程序
├── evaluate_func.py # 适应度函数和评估逻辑
├── creating.py # 遗传算法工具箱创建
├── config.json # 配置文件
├── controller_db.py # 数据库控制器(需补充)
├── my_model.py # ABM模型实现(需补充)
├── orm.py # 数据库ORM配置(需补充)
├── GA_Agent_0925/ # 遗传算法相关模块
│ ├── creating.py # 工具箱创建
│ ├── orm.py # 数据库配置
│ └── SQL_analysis_risk_ga.sql # 分析SQL脚本
├── results/ # 结果输出目录(自动创建)
└── requirements.txt # 依赖包列表(需补充)
功能特性
核心功能
- 遗传算法优化:使用DEAP框架实现完整的遗传算法流程
- 多进程并行计算:支持多进程运行ABM模型,提高计算效率
- 实时结果记录:每代最优个体和适应度实时保存到文件
- 收敛曲线可视化:自动生成算法收敛过程图表
- 产业匹配分析:详细分析模拟结果与目标产业的匹配情况
参数优化范围
算法优化以下12个关键ABM模型参数:
n_max_trial- 最大尝试次数 [1, 60]prf_size- 偏好大小 [0.0, 1.0]prf_conn- 偏好连接 [0.0, 1.0]cap_limit_prob_type- 容量限制概率类型 [0, 1]cap_limit_level- 容量限制水平 [5, 80]diff_new_conn- 新连接差异 [0.0, 1.0]netw_prf_n- 网络偏好N [1, 20]s_r- 小r参数 [0.01, 0.5]S_r- 大R参数 [0.5, 1.0]x- X参数 [0.0, 1.0]k- K参数 [0.1, 5.0]production_increase_ratio- 生产增加比率 [1.0, 5.0]
配置说明
config.json 示例
{
"seed": 42,
"pop_size": 50,
"n_gen": 100,
"cx_prob": 0.7,
"mut_prob": 0.2
}
参数说明
seed: 随机数种子,确保结果可重现pop_size: 种群大小n_gen: 进化代数cx_prob: 交叉概率mut_prob: 变异概率
使用方法
1. 准备数据库
确保数据库服务运行,并配置正确的连接参数在orm.py中。
2. 运行遗传算法
python main.py
3. 监控运行过程
程序运行时会显示进度条和每代信息:
- 当前进化代数
- 最优个体适应度
- 平均适应度
- 产业匹配情况
4. 查看结果
运行完成后,在results/目录下生成:
best_individual_each_gen.txt- 每代最优个体记录best_result_with_industry.json- 最终最优结果convergence.png- 收敛曲线图
输出文件说明
文本输出文件
实验开始时间:2024-01-01 14
以下为每一代的最优个体基因参数:
第1代最优基因:[参数列表] 最优适应度: 0.8500
第2代最优基因:[参数列表] 最优适应度: 0.8700
...
JSON结果文件
包含完整的优化结果:
- 算法配置参数
- 最优个体基因值
- 最优适应度值
- 收敛曲线数据
- 时间戳信息
可视化结果
生成收敛曲线图,显示最佳适应度和平均适应度随代数的变化趋势。
适应度函数逻辑
目标函数
适应度 = -误差,其中误差计算为:
误差 = |模拟脆弱产业集合 Δ 目标产业集合|
产业匹配分析
- 匹配产业: 模拟结果与目标重合的产业
- 多余产业: 模拟结果中多出的产业
- 缺失产业: 目标中未被模拟覆盖的产业
目标产业集合
包含35个关键半导体产业链编号,涵盖:
- 半导体设备类(光刻机、刻蚀设备等)
- 半导体材料类(光刻胶、清洗溶剂等)
- 晶圆制造类
- 封装测试类
- 芯片设计类
数据库操作
样本管理
- 自动从数据库获取随机样本
- 样本锁定机制防止重复使用
- 临时表管理和清理
结果存储
- 每个GA个体分配唯一ID
- 模拟结果与GA个体关联存储
- 支持多进程并发访问
故障排除
常见问题
- 数据库连接失败: 检查
orm.py中的连接配置 - 缺少依赖包: 运行
pip install -r requirements.txt - ABM模型错误: 检查
my_model.py的实现 - 内存不足: 减少种群大小或并行进程数
日志信息
程序运行时会输出详细日志,包括:
- GA个体参数
- 数据库操作状态
- 产业匹配统计
- 错误和异常信息
扩展开发
添加新参数
- 在
creating.py中注册新基因 - 在
evaluate_func.py的fitness函数中映射参数 - 更新ABM模型以使用新参数
修改目标产业
编辑evaluate_func.py中的get_target_vulnerable_industries()函数,更新目标产业列表。
调整算法策略
修改main.py中的遗传算子:
- 选择策略:
tools.selTournament - 交叉算子:
tools.cxTwoPoint - 变异算子:
tools.mutShuffleIndexes
许可证
本项目仅供学术研究使用。
技术支持
如有问题请联系项目维护团队。