多目标旅行商问题(目前的目标函数还只是两个)的演化算法,python实现,包括NSGA-II和SPEA2,解集的评估指标包括IGD、HV和Spacing
文件结构:
基本环境需求: python>3.8
python库需求: 见 /Code/requirement
运行单个算法:在方法名对应的文件夹下运行main.py
即可。以运行NSGA-II方法举例:
cd ./Code/NSGA-II
python main.py
调整算法参数:算法需要的参数都设置在argument.py
中,在文件中调整即可。
对结果进行评估:运行/Code/evaluate.py
即可。
结果文件夹中的文件结构如下:
result
|- 方法名称
| |- 数据文件名称
| | |- non_domitated_solution_{iter}.csv: 帕累托前沿的解的全排列表示和函数值,每10/50/100次迭代记录一次
| | |- 帕累托前沿绘图结果,每10/50/100次画一次
| | |- log文件
|- evaluate
| |- 数据文件名称
| | |- eval_HV_pic.png:HV指标随迭代变化的绘图结果
| | |- eval_IGD_pic.png:HV指标随迭代变化的绘图结果
| | |- eval_Spacing_pic.png:HV指标随迭代变化的绘图结果
| | |- eval_result_HSGA.csv:NSGA的各项指标在迭代中的记录
| | |- eval_result_SPEA.csv:SPEA的各项指标在迭代中的记录
目前项目中运行结果使用的参数设置为:
数据名 | 迭代次数 | 种群数量 | 交叉概率 | 变异概率 |
---|---|---|---|---|
bayg29 | 200 | 50 | 0.9 | 0.3 |
bays29 | 200 | 50 | 0.9 | 0.3 |
dantzig42 | 1000 | 100 | 0.9 | 0.5 |
gr120 | 2000 | 200 | 0.9 | 0.5 |
pa561 | 2000 | 200 | 0.9 | 0.5 |
代码和结果仅供参考,希望能为入门演化算法的人们提供一点小小的帮助~