写在开始
现实生活中的很多优化问题具有动态特征,这类优化问题称为动态优化问题(DOPs)。传统的静态优化算法难以适应这些环境的变化,动态优化算法(EDOAs)专为解决这类问题而设计,有许多的研究者投入动态优化方向进行研究,产生了大量优质的EDOAs,促进了研究方向的不断突破。但在当下,当研究者开始研究自己的EDOA,并准备对比其他算法时,就会发现并没有一个统一的实验平台对以往的EDOAs进行管理,且很多EDOA的源码并未公开,研究者通常需要自行编写算法与测试问题的代码,这导致了几个问题:
- 即便是算法的细微实现差异都会导致显著的性能差异,例如,在复杂的动态优化算法中,一个微小的代码修改可能会影响算法的收敛速度或在不同环境下的适应性。
- 一些研究可能使用相同的动态基准生成器(如Moving Peaks Benchmark),但对基准生成器的参数配置存在差异(如随机数生成器、初始峰值配置等),这些设置会直接影响问题的难度。因此,不同研究在性能比较时,如果未采用一致的参数配置,会导致不公平的对比结果。
- 在动态优化问题中,算法的性能通常通过不同的指标来衡量,如离线误差($E_o$)和环境变化前最好误差($E_{bbc}$)。然而,不同研究对这些指标的计算方式可能存在差异,导致结果的不可比性。
- 部分EDOA实现中使用了问题的内部参数(如峰值位置的变化幅度或环境变化频率)来辅助算法的自适应,这在一定程度上给该算法带来不公平优势。公平的实验应将问题实例视为“黑箱”,不依赖问题的内部信息,以保证对所有算法的一致性。
为了支持研究者们在动态优化领域进行公平公正的算法性能测试,我和Danial Yazdani还有一些其他的伙伴从2021年开始,着手开发了一个MATLAB开源平台——EDOLAB。为了解决上述不公平的问题,EDOLAB采用了模块化的设计,所有算法在一致的框架下实现,并使用标准化的基准生成器和性能指标进行评价,以确保公平和可重复的实验环境,以便研究者能够轻松地在不同动态优化算法之间进行比较和实验,同时EDOLAB包含教育模块,能够让研究者方便给自己的受众展示算法的详细行为。
EDOLAB的构成
EDOLAB是一个主要面向进化动态优化算法(Evolutionary Dynamic Optimization Algorithms, EDOAs)的平台,提供了丰富的工具和资源。它包含了25种不同的EDOAs以及4个Benchmark,便于研究者进行算法实验、分析和可视化。EDOLAB可以让用户在不同的动态环境中进行实验,从而帮助理解算法在环境变化时的响应能力和适应性。
丰富的算法库
25种不同的EDOAs如下所示:
算法 | 参考文献 | 优化组件 | 种群结构 | 子种群数量 | 种群大小 | 种群聚类方式 |
---|---|---|---|---|---|---|
ACFPSO | ref 1 | PSO | 多种群 | 自适应 | 自适应 | 按索引 |
AMPDE | ref 2 | DE | 多种群 | 自适应 | 自适应 | 按位置 |
AMPPSO | ref 2 | PSO | 多种群 | 自适应 | 自适应 | 按位置 |
AmQSO | ref 3 | PSO | 多种群 | 自适应 | 自适应 | 按索引 |
AMSO | ref 4 | PSO | 多种群 | 自适应 | 自适应 | 按位置 |
CDE | ref 5 | DE/best/2/bin | 多种群 | 固定 | 固定 | 按索引 |
CESO | ref 6 | DE/rand/1/exp 和 PSO | 双种群 | 固定 | 固定 | N/A |
CPSO | ref 7 | PSO | 多种群 | 自适应 | 固定 | 按位置 |
CPSOR | ref 7 | PSO | 多种群 | 自适应 | 固定 | 按位置 |
DSPSO | ref 9 | PSO | 多种群 | 自适应 | 固定 | 按位置和适应度 |
DynDE | ref 10 | DE/best/2/bin | 多种群 | 固定 | 固定 | 按索引 |
DynPopDE | ref 11 | DE/best/2/bin | 多种群 | 自适应 | 自适应 | 按索引 |
FTMPSO | ref 12 | PSO | 多种群 | 自适应 | 自适应 | 按索引 |
HmSO | ref 13 | PSO | 多种群 | 固定 | 固定 | 按索引 |
IDSPSO | ref 14 | PSO | 多种群 | 自适应 | 固定 | 按位置和适应度 |
ImQSO | ref 15 | PSO | 多种群 | 固定 | 固定 | 按索引 |
mCMA-ES | ref 16 | CMA-ES | 多种群 | 自适应 | 自适应 | 按索引 |
mDE | ref 16 | DE/best/2/bin | 多种群 | 自适应 | 自适应 | 按索引 |
mjDE | ref 16 | jDE | 多种群 | 自适应 | 自适应 | 按索引 |
mPSO | ref 16 | PSO | 多种群 | 自适应 | 自适应 | 按索引 |
mQSO | ref 17 | PSO | 多种群 | 固定 | 固定 | 按索引 |
psfNBC | ref 18 | PSO | 多种群 | 自适应 | 固定 | 按位置和适应度 |
RPSO | ref 19 | PSO | 单种群 | 固定 | 固定 | N/A |
SPSOAD+AP | ref 20 | PSO | 多种群 | 自适应 | 自适应 | 按位置和适应度 |
TMIPSO | ref 21 | PSO | 双种群 | 固定 | 固定 | N/A |
ref 2: Li, C., Nguyen, T. T., Yang, S., et al. An adaptive multipopulation framework for locating and tracking multiple optima[J]. IEEE Transactions on Evolutionary Computation, 2016, 20(4): 590-604.
ref 3: Blackwell, T., Branke, J., Li, X. Particle swarms for dynamic optimization problems[C]//Swarm Intelligence. Springer, 2008: 193-217.
ref 4: Li, C., Yang, S., Ming Y. An adaptive multi-swarm optimizer for dynamic optimization problems[J]. Evolutionary Computation, 2014, 22(4): 559-594.
ref 5: Du Plessis, M. C., Engelbrecht, A. P. Using competitive population evaluation in a differential evolution algorithm for dynamic environments[J]. European Journal of Operational Research, 2012, 218(1): 7-20.
ref 6: Lung, R. I., Dumitrescu, D. A collaborative model for tracking optima in dynamic environments[C]//IEEE Congress on Evolutionary Computation, 2007: 564-567.
ref 7: Yang, S., Li, C. A clustering particle swarm optimizer for dynamic optimization[J]. IEEE Transactions on Evolutionary Computation, 2010, 10(3): 859-871.
ref 8: Li, C., Yang, S. A general framework of multipopulation methods with clustering in undetectable dynamic environments[J]. IEEE Transactions on Evolutionary Computation, 2012, 16(4): 556-577.
ref 9: Parrott, D., Li, X. Locating and tracking multiple dynamic optima by a particle swarm model using speciation[J]. IEEE Transactions on Evolutionary Computation, 2006, 10(4): 440-458.
ref 10: Mendes, R., Mohais, A. DynDE: A differential evolution for dynamic optimization problems[C]//IEEE Congress on Evolutionary Computation, 2005: 2808-2815.
ref 11: Du Plessis, M. C., Engelbrecht, A. P. Differential evolution for dynamic environments with unknown numbers of optima[J]. Journal of Global Optimization, 2013, 55(1): 73-99.
ref 12: Yazdani, D., Yazdani, D., Luo, W., et al. A novel multi-swarm algorithm for optimization in dynamic environments based on particle swarm optimization[J]. Applied Soft Computing, 2013, 13(4): 2144–2158.
ref 13: Kamosi, M., Hashemi, A. B., Meybodi, M. R. A hibernating multi-swarm optimization algorithm for dynamic environments[C]//Nature and Biologically Inspired Computing. IEEE, 2010: 363-369.
ref 14: Blackwell, T., Branke, J., Li, X. Particle swarms for dynamic optimization problems[J]. Swarm Intelligence: Introduction and Applications, 2008, 193-217.
ref 15: Kordestani, J. K., Meybodi, M. R., Rahmani, A. M. A note on the exclusion operator in multi-swarm PSO algorithms for dynamic environments[J]. Connection Science, 2019, 31(1): 1-25.
ref 16: Yazdani, D., Omidvar, M. N., Li, X., & Yao, X. Scaling up dynamic optimization problems: A divide-and-conquer approach[J]. IEEE Transactions on Evolutionary Computation, 2019, 24(1): 1-15.
ref 17: Blackwell, T., Branke, J. Multiswarms, exclusion, and anti-convergence in dynamic environments[J]. IEEE Transactions on Evolutionary Computation, 2006, 10(4): 459-472.
ref 18: Luo, W., Sun, J., Bu, C., et al. Identifying species for particle swarm optimization under dynamic environments[C]//IEEE Symposium Series on Computational Intelligence, 2018: 1921-1928.
ref 19: Hu, X., Eberhart, R. C. Adaptive particle swarm optimization: Detection and response to dynamic systems[C]//IEEE Congress on Evolutionary Computation, 2002: 1666-1670.
ref 20: Yazdani, D., Yazdani, D., Yazdani, D., Omidvar, M. N., Gandomi, A. H., Yao, X. A species-based particle swarm optimization with adaptive population size and deactivation of species for dynamic optimization problems[J]. ACM Transactions on Evolutionary Learning and Optimization, 2023, 3(4): 14.
ref 21: Wang, H., Wang, X., & Yang, S. Triggered memory-based swarm optimization in dynamic environments[M]. University of Leicester, 2007.
丰富的问题库
4个Benchmark包含:Moving Peaks Benchmark(MPB)$^{[22]}$、Generalized Dynamic Benchmark Generator(GDBG)$^{[23]}$、Free Peaks([FPs])$^{24}$以及Generalized Moving Peaks Benchmark(GMPB)$^{[25]}$。
ref 23: Li, C., Yang, S., Nguyen, T. T. Benchmark Generator for CEC’2009 Competition on Dynamic Optimization[M]. Center for Computational Intelligence, 2008.
ref 24: Li, C., Nguyen, T. T., Zeng, S., Yang, M., Wu, M. An open framework for constructing continuous optimization problems[J]. IEEE Transactions on Cybernetics, 2018, 49(6): 2276-2288.
ref 25: Yazdani, D., Branke, J., Omidvar, M. N., Nguyen, T. T., Yao, X. IEEE CEC 2022 competition on dynamic optimization problems generated by generalized moving peaks benchmark[M]. arXiv preprint arXiv:2106.06174, 2021.
四个Benchmark的适应度地形图如下所示:
可视化教育模块
EDOLAB的教育模块是专为教育目的设计的,尤其适合新研究者。通过该模块,可以观察到:
- 二维问题空间的变化
- 个体随时间的迁移和变化轨迹
- 算法如何应对环境变化并追踪移动的最优解
灵活的实验模块
EDOLAB允许用户通过GUI界面或脚本模式运行实验,为研究者提供了极大的灵活性。研究者可以使用平台内置的算法和问题,也可以将新算法、性能指标和问题添加到平台中,进行实验和性能评估。
EDOLAB包含两个性能评价指标:离线误差($E_o$)和变化前最好误差($E_{bbc}$)。
- $E_o$ (Offline Error):指的是离线误差,衡量的是在动态优化问题(DOP)中算法在整个过程中的平均误差。通常通过多次运行后计算其均值、标准差以及中位数,以综合评估算法在动态环境中适应变化的性能。计算公式如下,其中$\hat{e}$是环境总数,$u$是变化频率,$\boldsymbol{x}_e^{\star}$ 是第 $e$ 个环境中的最优位置,$\boldsymbol{x}_{e}^{*{((e-1)u+b)}}$ 是第 $e$ 环境中第 $b$ 个适应度评估中找到的最优解。
$$ E_o=\frac{1}{\hat{e} u} \sum_{e=1}^{\hat{e}} \sum_{b=1}^{u}\left(f_e\left(\boldsymbol{x}_e^{\star}\right)-f_e\left(\boldsymbol{x}_{e}^{*{((e-1)u+b)}}\right)\right) $$
- $E_{bbc}$ (Average Error Before Environmental Changes):指的是环境变化之前的平均误差,即在每次环境改变之前的误差值的平均。这个指标反映了算法在稳定阶段(环境不变时)的适应性表现,同样计算其均值、标准差和中位数来评估算法的稳定性。计算公式如下,其中 $\boldsymbol{x}_{e}^{*}$ 是在第 $e$ 个环境中找到的最优解。
$$ E_{bbc}=\frac{1}{\hat{e}} \sum_{e=1}^{\hat{e}}\left(f_e\left(\boldsymbol{x}_e^{\star}\right)-f_e\left(\boldsymbol{x}_{e}^{*}\right)\right) $$
EDOLAB的使用
EDOLAB支持图形用户界面(GUI)和命令(非GUI)模式,方便研究者根据需要选择适合的操作方式,EDOLAB运行的数据流图如下所示。
GUI模式
在GUI模式下,用户可以选择实验模式与教育模式,用户可以在界面中选择特定的算法和基准测试,并设置参数(如维度、环境变化频率、变化幅度、环境数量等),然后运行。这一模块旨在为用户提供易于配置和操作的实验环境,便于快速进行算法测试和性能评估。
实验模式
- 在EDOLAB根目录中执行
GUI.MLAPP
或RunWithGUI.m
- 选择实验(Experiment)标签
- 选择一个算法和基准测试
- 设置参数:[维度、目标区域数量、变化频率、变化幅度、环境数量、运行次数]
- 运行实例
教育模式
- 在EDOLAB根目录中执行
GUI.MLAPP
或RunWithGUI.m
- 选择教育(Educational)标签
- 选择一个算法和基准测试
- 设置参数:[目标区域数量、变化频率、变化幅度、环境数量] 请注意,教育模块用于教育展示,因此维度固定为2
- 运行实例
非GUI模式
对于更高级的用户,EDOLAB提供了非GUI模式,只需在MATLAB中打开并编辑RunWithoutGUI.m
文件,用户可以手动设置算法名称、基准名称以及相应的参数(如峰值数量、环境数量等),然后直接运行实验。该模式允许用户灵活控制算法的输入输出,便于更精细的实验控制和结果分析。
- 在EDOLAB根目录中打开
RunWithoutGUI.m
- 设置算法名称(AlgorithmName)与问题名称(BenchmarkName)
%% ********Selecting Algorithm & Benchmark********
AlgorithmName = 'psfNBC'; %Please input the name of algorithm (EADO) you want to run here (names are case sensitive).
% The list of algorithms (EADOs) and some of their details can be found in Table 1 of the EDOLAB's paper.
% The current version of EDOLAB includes the following algorithms (EADOs):
% 'ACFPSO', 'AMPDE', 'AMPPSO', 'AmQSO', 'AMSO', 'CDE', 'CESO', 'CPSO', 'CPSOR'
% 'DSPSO', 'DynDE', 'DynPopDE', 'FTMPSO', 'HmSO', 'IDSPSO', 'ImQSO'
% 'mCMAES', 'mDE', 'mjDE', 'mQSO' , 'SPSO_AD_AP', 'psfNBC', 'RPSO', 'TMIPSO'
BenchmarkName = 'GMPB'; %Please input the name of benchmark you want to use here (names are case sensitive).
% The current version of EDOLAB includes the following benchmark generators: 'MPB' , 'GMPB' , 'FPs' , 'GDBG'
- 设置问题参数
%% ********Benchmark parameters and Run number********
PeakNumber = 10; %The default value is 10
ChangeFrequency = 5000;%The default value is 5000
Dimension = 5; %The default value is 5. It must be set to 2 for using Education module
ShiftSeverity = 1; %The default value is 1
EnvironmentNumber = 100; %The default value is 100
RunNumber = 31; %It should be set to 31
- 算法参数需要在用户定义的算法目录中进行设置
- 设置是否进行优化实时可视化
% For experimention module
VisualizationOverOptimization = 0
% For education module
VisualizationOverOptimization = 1
- 如果
VisualizationOverOptimization == 0
,实验模块将被激活,用户可以配置是否进行画图、生成Excel结果表
% No need for plot
OutputFigure = 0
% Requires offline and current error plots as visualized outputs of the experiment
OutputFigure = 1
% No need for excel output
GeneratingExcelFile = 0
% Requires an excel file containing output statistics and results
GeneratingExcelFile = 1
输出的Excel结果表具有较强的可读性,可以为用户提供详细的实验信息。
EDOLAB的扩展
EDOLAB的架构设计具有很强的可扩展性,使得研究人员可以根据自己的研究需求轻松添加新的算法、基准生成器和性能指标。这种模块化设计为研究人员提供了高度的实验灵活性,并促进了新技术和方法的快速集成和测试。
添加基准生成器
若要添加新的基准生成器,用户需在Benchmark
文件夹下创建一个新子文件夹,并命名为新的基准名称。接着,在此子文件夹中创建包含基准函数的_fitness_ABC.m_
文件和生成基准实例的BenchmarkGenerator_ABC.m
文件。用户需要在生成器中定义所有参数,并通过结构体Problem
初始化所有环境参数。
添加性能指标
用户可以通过在fitness.m
文件中添加所需的代码收集信息,并将代码集成到EDOA的性能指标计算部分中,以便于在主函数中直接计算自定义的性能指标。此功能极大地支持算法的自定义和结果分析。
添加新的EDOA
如果需要添加新的EDOA,可以在Algorithm
文件夹中创建一个与算法名称相同的子文件夹,并将新算法的所有函数文件放置在该文件夹内。为了在EDOLAB中调用该算法,用户需在主目录下编辑RunWithoutGUI.m
文件,并在算法主函数中调用BenchmarkGenerator.m
生成问题实例。此步骤使得新算法可以无缝集成到EDOLAB中进行实验。
写在结尾
EDOLAB论文发表在期刊TOMS上,目前正在二审中,同时平台也正在不断的扩充功能,如果您觉得EDOLAB对您有帮助,请前往Github仓库为我们点亮Star。
3 条评论
你小子,一区论文到手
你小子,一区论文到手
你小子,一区论文到手