本项目使用遗传算法(Genetic Algorithm)来优化基于代理的模型(Agent-Based Model)的关键参数,目标是使模型生成的脆弱产业集合与目标产业集合尽可能匹配。项目包含完整的遗传算法实现、ABM模型集成、数据库操作和结果分析功能。
Go to file
Cricial 91f2122b65 10.09添加git 2025-10-09 13:36:20 +08:00
.idea 10.09添加git 2025-10-09 13:36:20 +08:00
GA_Agent_0925 10.09添加git 2025-10-09 13:36:20 +08:00
__pycache__ 10.09添加git 2025-10-09 13:36:20 +08:00
cache 10.09添加git 2025-10-09 13:36:20 +08:00
input_data 10.09添加git 2025-10-09 13:36:20 +08:00
output_result 10.09添加git 2025-10-09 13:36:20 +08:00
11.py 10.09添加git 2025-10-09 13:36:20 +08:00
README.md 10.09添加git 2025-10-09 13:36:20 +08:00
SQL_analysis_experiment.sql 10.09添加git 2025-10-09 13:36:20 +08:00
SQL_analysis_risk.sql 10.09添加git 2025-10-09 13:36:20 +08:00
SQL_db_user_create.sql 10.09添加git 2025-10-09 13:36:20 +08:00
SQL_export_high_risk_setting.sql 10.09添加git 2025-10-09 13:36:20 +08:00
SQL_migrate_db.sql 10.09添加git 2025-10-09 13:36:20 +08:00
ToDo.md 10.09添加git 2025-10-09 13:36:20 +08:00
computation.py 10.09添加git 2025-10-09 13:36:20 +08:00
conf_db.yaml 10.09添加git 2025-10-09 13:36:20 +08:00
conf_db_prefix.yaml 10.09添加git 2025-10-09 13:36:20 +08:00
conf_experiment.yaml 10.09添加git 2025-10-09 13:36:20 +08:00
controller_db.py 10.09添加git 2025-10-09 13:36:20 +08:00
degree_distribution_firm.png 10.09添加git 2025-10-09 13:36:20 +08:00
degree_distribution_with_labels.png 10.09添加git 2025-10-09 13:36:20 +08:00
firm.py 10.09添加git 2025-10-09 13:36:20 +08:00
firm_network.pkl 10.09添加git 2025-10-09 13:36:20 +08:00
iiabmdb_basic_info.sql 10.09添加git 2025-10-09 13:36:20 +08:00
main.py 10.09添加git 2025-10-09 13:36:20 +08:00
my_model.py 10.09添加git 2025-10-09 13:36:20 +08:00
orm.py 10.09添加git 2025-10-09 13:36:20 +08:00
product.py 10.09添加git 2025-10-09 13:36:20 +08:00
requirements.txt 10.09添加git 2025-10-09 13:36:20 +08:00
requirements_manual_selected_20230304.txt 10.09添加git 2025-10-09 13:36:20 +08:00
risk_analysis_count.py 10.09添加git 2025-10-09 13:36:20 +08:00
risk_analysis_firm_network.py 10.09添加git 2025-10-09 13:36:20 +08:00
risk_analysis_prod_network.py 10.09添加git 2025-10-09 13:36:20 +08:00
risk_analysis_sum_result.py 10.09添加git 2025-10-09 13:36:20 +08:00
企业描述性数据分析.py 10.09添加git 2025-10-09 13:36:20 +08:00
企业规模数据描述性统计表.xlsx 10.09添加git 2025-10-09 13:36:20 +08:00
执行sql语句.py 10.09添加git 2025-10-09 13:36:20 +08:00
查看进度.py 10.09添加git 2025-10-09 13:36:20 +08:00
绘制度.py 10.09添加git 2025-10-09 13:36:20 +08:00

README.md

安装内容

  1. 数据库推荐使用mysql 8.0以上版本
  2. Python 3.8
  3. 通过pip等方法安装requirements_manual_selected_20230304.txt文件中的包

前期准备工作

  1. 复制整个代码到本地
  2. 用root及密码登录mysql在本地数据库中创建一个数据库命名为iiabmdb
  3. 在mysql中运行SQL_db_user_create.sql里的sql命令创建数据库用户。如果创建用户报错需打开该文件并运行第三行被注释掉的代码。该文件后面的sql命令也需要运行将数据库用户的权限赋予iiabmdb数据库
  4. 之后直接运行controller.py文件如果没有报错则说明前期准备工作完成

运行程序

  1. conf_db_prefix.yaml文件中的db_prefix改为db_name_prefix: without_exp
  2. 打开命令行,进入代码所在目录,运行
python main.py --exp without_exp --job 6 --reset_db True
  1. 等待运行完成1.2万个样本)。结束后,将db_name_prefix: without_exp改为db_name_prefix: with_exp,并运行
python main.py --exp with_exp --job 6 --reset_db True
  1. 漫长的等待3.4万个样本),直到运行完成

获得结果,绘制图表

风险节点分析

  1. 运行risk_analysis_sum_result.py文件该程序自动产生风险节点分析统计数据并放置到output_result/risk文件夹中
  2. 依次运行risk_analysis_prod_network.pyrisk_analysis_firm_network.py文件将自动产生相关结果放置到output_result/risk文件夹中

韧性影响因素分析

  1. 运行SQL_analysis_experiment.sql文件将汇总结果手工复制至output_result/resilience文件夹experiment_result.csv文件中
  2. 使用Minitab进行田口设计分析
  3. 新建田口设计统计——DOE——田口——创建田口设计——混合水平设计因子数选项设置为8设计选项设置为L36水平^列为2^33^5因子选项中将列名依次修改为is_prf_sizeis_prf_connex_cap_typen_max_trialex_cap_paraprob_new_connt_max_trialn_sourcing
  4. 将output_result/resilience文件夹experiment_result.csv文件中结果复制入田口设计表格右侧列
  5. 依次对各个韧性指标进行田口设计分析统计——DOE——田口——分析田口设计从mean_count_firm_prodmean_max_ts_firm_prodmean_n_remove_firm_prodmean_end_ts中选择一个韧性指标图形选项勾选均值分析选项中显示响应表勾选均值拟合线性模型勾选均值点击确定
  6. 手工汇总方差分析结果至output_result/resilience文件夹anova.csv文件中,汇总响应表结果至anova_visualization.csv文件中