本系统实现了五种经典优化算法对CEC2017基准函数的比较实验:
- 遗传算法 (GA): 基于自然选择和遗传机制的进化算法
- 禁忌搜索 (TS): 基于记忆的局部搜索算法
- 模拟退火 (SA): 基于物理退火过程的随机搜索算法
- 粒子群优化 (PSO): 基于鸟群觅食行为的群体智能算法
- 蚁群优化 (ACO): 基于蚂蚁觅食行为的群体智能算法
为确保算法比较的公平性,所有算法采用相同的实验设置:
- 种群/群体大小: 50
- 最大迭代次数: 1000次
- 独立运行次数: 每种算法对每个函数独立运行20次
- 变量维度: 10维
- 搜索范围: [-100, 100]
- 随机种子: 每次运行使用不同但确定的随机种子
选择CEC2017基准函数集中的4个代表性函数:
- f1: Shifted and Rotated Bent Cigar (单峰函数)
- f4: Shifted and Rotated Rosenbrock's Function (多峰函数)
- f11: Hybrid Function 1 (混合函数)
- f21: Composition Function 1 (复合函数)
- Python 3.6+
- NumPy
- CEC2017 benchmark suite
运行所有算法对所有测试函数的完整比较:
python algorithm_comparison.py --full这将执行:
- 5种算法 × 4个函数 × 20次独立运行 = 400次实验
- 自动生成比较分析报告
- 保存详细结果到CSV文件
只对特定函数运行所有算法比较:
python algorithm_comparison.py --func=1 # 只测试f1函数
python algorithm_comparison.py --func=4 # 只测试f4函数快速验证系统功能(每个算法只运行3次):
python algorithm_comparison.py --testpython simple_main.py --all # 完整实验
python simple_main.py --test # 快速测试
python simple_main.py --func=1,5 # 指定函数和运行次数python tabu_search.py # 禁忌搜索测试
python simulated_annealing.py # 模拟退火测试
python particle_swarm.py # 粒子群优化测试
python ant_colony.py # 蚁群优化测试所有实验结果保存在 results/ 目录下:
ga_f1_run1_generations.csv: 遗传算法f1函数第1次运行的每代数据pso_f4_run5_iterations.csv: 粒子群优化f4函数第5次运行的迭代数据sa_f11_run10_iterations.csv: 模拟退火f11函数第10次运行的迭代数据- ... (其他算法类似)
ga_f1_summary.csv: 遗传算法f1函数20次运行汇总pso_f4_summary.csv: 粒子群优化f4函数20次运行汇总- ... (其他算法和函数的组合)
algorithm_comparison_summary.csv: 所有算法所有函数的比较汇总
- 选择方式:锦标赛选择 (tournament_size=3)
- 交叉方式:均匀交叉 (crossover_rate=0.9)
- 变异方式:高斯变异 (mutation_rate=0.1)
- 禁忌表大小:20
- 邻域大小:10
- 步长:0.1
- 初始温度:100.0
- 终止温度:0.01
- 冷却率:0.95
- 扰动步长:0.1
- 惯性权重:0.9 → 0.4 (线性衰减)
- 认知参数:c1 = 2.0
- 社会参数:c2 = 2.0
- 信息素重要性:α = 1.0
- 启发式重要性:β = 2.0
- 挥发率:ρ = 0.1
- 网格数:每维20个网格
实验过程中会显示:
- 每100代/迭代的进度信息
- 每次运行的最终结果
- 20次运行的统计汇总
- 算法间的比较分析
- 运行时间: 完整实验可能需要较长时间,建议先运行快速测试模式
- 内存使用: 所有结果数据会保存,确保有足够磁盘空间
- 随机性: 虽然使用固定种子,但不同运行环境可能产生略微不同的结果
- 参数调优: 当前使用标准参数,可根据需要在各算法文件中调整
如需添加新算法或新测试函数:
- 新算法: 参考现有算法文件的接口,实现相同的
run_single_experiment和run_multiple_experiments方法 - 新函数: 在
config.py的TEST_FUNCTIONS中添加函数信息 - 新指标: 在
algorithm_comparison.py中扩展分析功能
📊 算法比较分析报告
================================================================================
📈 F1 - Shifted and Rotated Bent Cigar
目标值: 100
------------------------------------------------------------
算法 最优值 平均值 标准差 中位数
------------------------------------------------------------
粒子群优化 1.01e+02 2.45e+03 2.29e+03 1.86e+03
禁忌搜索 1.74e+05 7.06e+10 7.42e+10 5.74e+10
蚁群优化 1.40e+08 5.19e+08 6.17e+08 2.92e+08
遗传算法 4.47e+08 1.73e+09 1.18e+09 1.41e+09
模拟退火 1.46e+10 9.62e+10 4.45e+10 9.34e+10
📈 F11 - Hybrid Function 1 (N=3)
目标值: 1100
------------------------------------------------------------
算法 最优值 平均值 标准差 中位数
------------------------------------------------------------
粒子群优化 1.10e+03 1.11e+03 3.54e+00 1.11e+03
蚁群优化 1.11e+03 1.13e+03 2.69e+01 1.12e+03
遗传算法 1.12e+03 1.17e+03 4.59e+01 1.15e+03
禁忌搜索 1.14e+03 4.82e+03 8.74e+03 1.33e+03
模拟退火 1.27e+03 2.00e+03 9.00e+02 1.58e+03
📈 F21 - Composition Function 1 (N=3)
目标值: 2100
------------------------------------------------------------
算法 最优值 平均值 标准差 中位数
------------------------------------------------------------
粒子群优化 2.20e+03 2.28e+03 5.56e+01 2.31e+03
禁忌搜索 2.20e+03 2.44e+03 1.44e+02 2.49e+03
遗传算法 2.21e+03 2.32e+03 4.75e+01 2.34e+03
蚁群优化 2.24e+03 2.29e+03 2.77e+01 2.30e+03
模拟退火 2.25e+03 2.33e+03 3.74e+01 2.33e+03
📈 F4 - Shifted and Rotated Rosenbrock's Function
目标值: 400
------------------------------------------------------------
算法 最优值 平均值 标准差 中位数
------------------------------------------------------------
粒子群优化 4.00e+02 4.06e+02 3.39e+00 4.04e+02
蚁群优化 4.06e+02 4.09e+02 1.18e+00 4.09e+02
遗传算法 4.11e+02 4.30e+02 2.58e+01 4.18e+02
禁忌搜索 5.61e+02 1.30e+03 6.95e+02 1.10e+03
模拟退火 6.22e+02 1.34e+03 6.51e+02 9.61e+02
📋 总体实验统计
==================================================
算法 平均排名 最佳次数 总实验时间(s)
--------------------------------------------------
遗传算法 3.2 0 90.4
禁忌搜索 3.0 0 59.9
模拟退火 5.0 0 268.9
粒子群优化 1.0 4 63.2
蚁群优化 2.8 0 1433.4
⏱️ 总实验时间: 1915.85秒 (31.9分钟)