## 安装内容
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. 打开命令行，进入代码所在目录，运行
```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*，并运行
```shell
python main.py --exp with_exp --job 6 --reset_db True
```
4. 漫长的等待（3.4万个样本），直到运行完成

## 获得结果，绘制图表

### 风险节点分析
1. 运行*risk_analysis_sum_result.py*文件，该程序自动产生风险节点分析统计数据并放置到output_result/risk文件夹中
2. 依次运行*risk_analysis_prod_network.py*，*risk_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^3，3^5，因子选项中将列名依次修改为：is_prf_size，is_prf_conn，ex_cap_type，n_max_trial，ex_cap_para，prob_new_conn，t_max_trial，n_sourcing
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*文件中
