readme文件修改
This commit is contained in:
150
README.md
150
README.md
@@ -15,11 +15,11 @@
|
||||
```shell
|
||||
python main.py --exp without_exp --job 6 --reset_db True
|
||||
```
|
||||
3. 等待运行完成(1.2万个样本)。结束后,将*db_name_prefix: without_exp*改为*db_name_prefix: with_exp*,并运行
|
||||
3. 等待运行完成。结束后,将*db_name_prefix: without_exp*改为*db_name_prefix: with_exp*,并运行
|
||||
```shell
|
||||
python main.py --exp with_exp --job 6 --reset_db True
|
||||
```
|
||||
4. 漫长的等待(3.4万个样本),直到运行完成
|
||||
4. 漫长的等待,直到运行完成
|
||||
|
||||
## 获得结果,绘制图表
|
||||
|
||||
@@ -34,3 +34,149 @@ python main.py --exp with_exp --job 6 --reset_db True
|
||||
4. 将output_result/resilience文件夹*experiment_result.csv*文件中结果复制入田口设计表格右侧列
|
||||
5. 依次对各个韧性指标进行田口设计分析(统计——DOE——田口——分析田口设计),从mean_count_firm_prod,mean_max_ts_firm_prod,mean_n_remove_firm_prod,mean_end_ts中选择一个韧性指标,图形选项勾选均值,分析选项中显示响应表勾选均值,拟合线性模型勾选均值,点击确定
|
||||
6. 手工汇总方差分析结果至output_result/resilience文件夹*anova.csv*文件中,汇总响应表结果至*anova_visualization.csv*文件中
|
||||
|
||||
### 数据可视化工具
|
||||
|
||||
#### 绘制图.py
|
||||
该脚本用于生成**各风险等级企业结构占比堆叠柱状图**,展示不同风险等级下的产业类别分布(包括材料、设备、设计、制造封测等),带有柱内百分比标签,便于快速了解各风险等级的产业结构特征。
|
||||
|
||||
#### 绘制度.py
|
||||
该脚本通过读取产业链网络数据和企业网络缓存数据,生成两个度分布图:
|
||||
- **产业链度分布图**(degree_distribution_with_labels.png):展示产业链中各节点的度数分布,反映产业之间的连接关系复杂性
|
||||
- **企业网络度分布图**(degree_distribution_firm.png):展示企业网络中各企业的度数分布,反映企业间的合作/竞争关系
|
||||
|
||||
## GA_Agent_0925:遗传算法优化 ABM 模型参数
|
||||
|
||||
> 📚 **详细文档**:本部分是快速参考,更详细的说明(包括每个文件的详细功能、完整使用指南、故障排除、扩展开发等)请查看 [`GA_Agent_0925/ge_abm_readme.md`](./GA_Agent_0925/ge_abm_readme.md)
|
||||
|
||||
### 项目概述
|
||||
该子项目位于 GA_Agent_0925 文件夹,使用遗传算法(Genetic Algorithm)来优化基于代理的模型(Agent-Based Model)的关键参数,目标是使模型生成的脆弱产业集合与目标产业集合尽可能匹配。项目包含完整的遗传算法实现、ABM 模型集成、数据库操作和结果分析功能。
|
||||
|
||||
### 项目结构
|
||||
```
|
||||
GA_Agent_0925/
|
||||
├── main.py # 遗传算法主程序
|
||||
├── evaluate_func.py # 适应度函数和评估逻辑
|
||||
├── creating.py # 遗传算法工具箱创建(基因注册)
|
||||
├── config.json # 配置文件(种群参数)
|
||||
├── my_model.py # ABM 模型实现
|
||||
├── orm.py # 数据库 ORM 配置
|
||||
├── controller_db.py # 数据库控制器
|
||||
├── SQL_analysis_risk_ga.sql # 分析 SQL 脚本
|
||||
└── results/ # 结果输出目录(自动创建)
|
||||
```
|
||||
|
||||
### 核心功能
|
||||
- **遗传算法优化**:使用 DEAP 框架实现完整的遗传算法流程,包括选择、交叉、变异等操作
|
||||
- **多进程并行计算**:支持多进程运行 ABM 模型,提高计算效率
|
||||
- **实时结果记录**:每代最优个体和适应度实时保存到文件
|
||||
- **收敛曲线可视化**:自动生成算法收敛过程图表
|
||||
- **产业匹配分析**:详细分析模拟结果与目标产业的匹配情况
|
||||
|
||||
### 优化参数范围
|
||||
算法优化以下 12 个关键 ABM 模型参数:
|
||||
1. `n_max_trial` - 最大尝试次数 [1, 60]
|
||||
2. `prf_size` - 偏好大小 [0.0, 1.0]
|
||||
3. `prf_conn` - 偏好连接 [0.0, 1.0]
|
||||
4. `cap_limit_prob_type` - 容量限制概率类型 [0, 1]
|
||||
5. `cap_limit_level` - 容量限制水平 [5, 80]
|
||||
6. `diff_new_conn` - 新连接差异 [0.0, 1.0]
|
||||
7. `netw_prf_n` - 网络偏好 N [1, 20]
|
||||
8. `s_r` - 小 r 参数 [0.01, 0.5]
|
||||
9. `S_r` - 大 R 参数 [0.5, 1.0]
|
||||
10. `x` - X 参数 [0.0, 1.0]
|
||||
11. `k` - K 参数 [0.1, 5.0]
|
||||
12. `production_increase_ratio` - 生产增加比率 [1.0, 5.0]
|
||||
|
||||
### 配置文件示例 (config.json)
|
||||
```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. **运行遗传算法**(进入 GA_Agent_0925 目录):
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
3. **监控运行过程**:程序运行时会显示进度条和每代信息(进化代数、最优适应度、平均适应度、产业匹配情况)
|
||||
4. **查看结果**:运行完成后,在 `results/` 目录下生成:
|
||||
- `best_individual_each_gen.txt` - 每代最优个体记录
|
||||
- `best_result_with_industry.json` - 最终最优结果及产业匹配详情
|
||||
- `convergence.png` - 收敛曲线图
|
||||
|
||||
### 适应度函数逻辑
|
||||
|
||||
#### 目标函数
|
||||
```
|
||||
适应度 = -误差,其中误差 = |模拟脆弱产业集合 Δ 目标产业集合|
|
||||
```
|
||||
|
||||
#### 产业匹配分析
|
||||
- **匹配产业**:模拟结果与目标重合的产业
|
||||
- **多余产业**:模拟结果中多出的产业
|
||||
- **缺失产业**:目标中未被模拟覆盖的产业
|
||||
|
||||
#### 目标产业集合
|
||||
包含 35 个关键半导体产业链编号,涵盖半导体设备类、材料类、晶圆制造类、封装测试类、芯片设计类等。
|
||||
|
||||
### 数据库操作
|
||||
- **样本管理**:自动从数据库获取随机样本,样本锁定机制防止重复使用,支持临时表管理和清理
|
||||
- **结果存储**:每个 GA 个体分配唯一 ID,模拟结果与 GA 个体关联存储,支持多进程并发访问
|
||||
|
||||
### 故障排除
|
||||
|
||||
#### 常见问题
|
||||
1. **数据库连接失败**:检查 orm.py 中的连接配置
|
||||
2. **缺少依赖包**:运行 `pip install -r requirements.txt`
|
||||
3. **ABM 模型错误**:检查 my_model.py 的实现和 evaluate_func.py 的参数映射
|
||||
4. **内存不足**:减少种群大小或并行进程数
|
||||
|
||||
#### 日志信息
|
||||
程序运行时输出详细日志,包括 GA 个体参数、数据库操作状态、产业匹配统计、错误和异常信息。
|
||||
|
||||
### 扩展开发
|
||||
|
||||
#### 添加新参数
|
||||
1. 在 creating.py 中注册新基因
|
||||
2. 在 evaluate_func.py 的 fitness 函数中映射参数
|
||||
3. 更新 my_model.py 以使用新参数
|
||||
|
||||
#### 修改目标产业
|
||||
编辑 evaluate_func.py 中的 `get_target_vulnerable_industries()` 函数,更新目标产业列表。
|
||||
|
||||
#### 调整算法策略
|
||||
修改 main.py 中的遗传算子:
|
||||
- 选择策略:`tools.selTournament`
|
||||
- 交叉算子:`tools.cxTwoPoint`
|
||||
- 变异算子:`tools.mutShuffleIndexes`
|
||||
|
||||
> 💡 **更多扩展指南**:有关自定义适应度函数、更换遗传算子、多目标优化等高级主题,请参考 [`GA_Agent_0925/ge_abm_readme.md`](./GA_Agent_0925/ge_abm_readme.md) 中的**扩展开发指南**部分。
|
||||
|
||||
### 详细文档导航
|
||||
|
||||
| 需求 | 查看文档 | 说明 |
|
||||
|------|--------|------|
|
||||
| 快速入门 | 本文件(README.md)| GA_Agent_0925 快速参考 |
|
||||
| **完整文档** | **[`GA_Agent_0925/ge_abm_readme.md`](./GA_Agent_0925/ge_abm_readme.md)** | **详细的API、使用指南、故障排除等** |
|
||||
| 核心算法细节 | ge_abm_readme.md § 核心文件详细说明 | main.py、evaluate_func.py、creating.py 等详细解释 |
|
||||
| 配置调优 | ge_abm_readme.md § 完整使用指南 | 参数配置、性能优化建议 |
|
||||
| 数据库操作 | ge_abm_readme.md § 数据库操作详解 | SQL查询、并发安全、表关系 |
|
||||
| 问题排查 | ge_abm_readme.md § 故障排除 | 常见问题、调试模式、性能优化 |
|
||||
| 高级扩展 | ge_abm_readme.md § 扩展开发指南 | 添加参数、自定义算子、多目标优化 |
|
||||
|
||||
## 许可证与联系
|
||||
本项目仅供学术研究使用。如有问题请联系项目维护团队。
|
||||
|
||||
Reference in New Issue
Block a user