Skip to content

linyuww/cec2017_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cec2017_test 多算法优化比较实验系统

概述

本系统实现了五种经典优化算法对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

1. 完整比较实验

运行所有算法对所有测试函数的完整比较:

python algorithm_comparison.py --full

这将执行:

  • 5种算法 × 4个函数 × 20次独立运行 = 400次实验
  • 自动生成比较分析报告
  • 保存详细结果到CSV文件

2. 单函数比较

只对特定函数运行所有算法比较:

python algorithm_comparison.py --func=1    # 只测试f1函数
python algorithm_comparison.py --func=4    # 只测试f4函数

3. 快速测试模式

快速验证系统功能(每个算法只运行3次):

python algorithm_comparison.py --test

4. 单独运行某个算法

遗传算法

python 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: 所有算法所有函数的比较汇总

算法参数设置

遗传算法 (GA)

  • 选择方式:锦标赛选择 (tournament_size=3)
  • 交叉方式:均匀交叉 (crossover_rate=0.9)
  • 变异方式:高斯变异 (mutation_rate=0.1)

禁忌搜索 (TS)

  • 禁忌表大小:20
  • 邻域大小:10
  • 步长:0.1

模拟退火 (SA)

  • 初始温度:100.0
  • 终止温度:0.01
  • 冷却率:0.95
  • 扰动步长:0.1

粒子群优化 (PSO)

  • 惯性权重:0.9 → 0.4 (线性衰减)
  • 认知参数:c1 = 2.0
  • 社会参数:c2 = 2.0

蚁群优化 (ACO)

  • 信息素重要性:α = 1.0
  • 启发式重要性:β = 2.0
  • 挥发率:ρ = 0.1
  • 网格数:每维20个网格

输出格式

控制台输出

实验过程中会显示:

  • 每100代/迭代的进度信息
  • 每次运行的最终结果
  • 20次运行的统计汇总
  • 算法间的比较分析

注意事项

  1. 运行时间: 完整实验可能需要较长时间,建议先运行快速测试模式
  2. 内存使用: 所有结果数据会保存,确保有足够磁盘空间
  3. 随机性: 虽然使用固定种子,但不同运行环境可能产生略微不同的结果
  4. 参数调优: 当前使用标准参数,可根据需要在各算法文件中调整

扩展功能

如需添加新算法或新测试函数:

  1. 新算法: 参考现有算法文件的接口,实现相同的 run_single_experimentrun_multiple_experiments 方法
  2. 新函数: 在 config.pyTEST_FUNCTIONS 中添加函数信息
  3. 新指标: 在 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分钟)

About

a python program for cec2017

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages