Java教程

【优化求解】基于生物地理学结合重力引力搜索优化求解算法matlab源码

本文主要是介绍【优化求解】基于生物地理学结合重力引力搜索优化求解算法matlab源码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 一、重力引力搜索算法

 1.1BBO算法

生物地理学优化算法(BBO)是由Dan Simon于2008年提出的一种基于生物地理学理论发展起来的算法。与其他智能算法类似,BBO也是一种基于种群优化的算法,不过它将种群中的每个解看成一个栖息地,将解的适应度看成栖息地的HSI,解的每个分量则是一个SIV,通过模拟生物地理学中的迁移和变异过程来对种群进行不断演化,从而求解优化问题。BBO算法的两个主要操作就是迁移操作和变异操作。

一、迁移操作

BBO算法将优化问题的每个解看成一个栖息地。解的适应度越高,表示栖息地拥有的物种越多,其迁出率就越高、迁入率就越低:反之,解的适应度越低,其对应的迁出率越低、迁入率越高。
迁移操作的目的就是在不同的解之间进行信息分享,其中好的解倾向于把自身的信息传播给其他解,而差的解更倾向于从其他解中接收信息。在具体实现时,BBO算法的每次迭代都会考察种群中的每个解H(i),设其迁入率和迁出率分别为:λ(i)和μ(i),则其每个分量都有λi的概率被修改(即进行迁入);如果要迁入,则以迁出率为概率从种群中选择一个迁出解H(j),再将H(i)的当前分量替换为Hj的对应分量。对H(i)的所有分量都执行完上述操作后,就产生了一个新解H’(i)。算法比较H(i)和H’(i)的适应度,将适应度更高的一个保留在种群中。
上述迁移操作的过程可用算法过程下面所示的伪代码来描述,其中D表示问题的维度即解向量的长度,rand()用于生成一个[0,1]内的随机数。
在这里插入图片描述

二、变异操作

一些重大突发事件会急剧改变一个自然栖息地的某些性质,从而改变SHI并导致物种数量发生显著变化。BBO算法将这种情况建模为SIV变异。物种数量过多或过少时,物种数量概率都相对较低;在中等的物种数量下(接近平衡点),物种数量概率较高。可见上述物种概率指呈中心对称分布,如下图所示。
在这里插入图片描述
假设要求解的是一个连续优化问题,问题第d维的取值范围为[ld,ud],则BBO的变异操作过程可用下图所示算法过程的伪代码来描述。
在这里插入图片描述

总结

BBO算法由于进化机理的新颖性,已受到计算智能领域众多学者的关注。尽管已经取得很多重要的成果,但相对其他进化算法如来说,其更深入的理论研究包括BBO算法中的参数选取、复杂性分析问题、适应度函数设计以及算法在工程实际中的应用还有待扩展。

1.2重力搜索算法

引力搜索算法(Gravitational Search Algorithm,GSA)是Esmat Rashedi等人在2009年提出的一种随机性启发式搜索算法,这种算法的灵感来自于牛顿的万有引力定律与运动定律:1.任意两个质点有通过连心线方向上的力相互吸引,该引力大小与它们质量的乘积成正比与它们距离的平方成反比。2.力使物体获得加速度。

在GSA中,质点被抽象成解空间的一个解,解之间存在一个相互吸引力,这个吸引力由解的质量与两个解之间的距离确定,质点的质量被抽象成解的评估函数值。在解空间中,每个解由其他解对其的吸引力获得加速度,质量更大(评估函数值更优)所提供的加速度更大,从而使解向更优解的方向移动。

看到这里,有些小伙伴会以为GSA是个与PSO差不多的算法,是的,GSA与PSO的外层框架是一致的,但是,它们最关键的粒子移动策略却是不同的:

1.在PSO中,粒子的移动只使用两个最佳位置pbest和gbest。但是在GSA中,智能体的方向是根据所有其他智能体或部分较优的智能体获得的总力来计算的。
2.PSO使用一种内存来更新速度(由于pbest和gbest)。然而,GSA是无内存的,只有智能体的当前位置在更新过程中起作用。
3.在PSO中,更新不考虑解之间的距离,而在GSA中,力与解之间的距离成反比。
4.PSO模拟了鸟类的社会行为,而GSA的灵感来自于物理现象。

GSA的主要过程如下:

1. 确定搜索空间。
2. 随机初始化个体种群。
3. 对种群进行适应度评价。
4. 更新引力常量G,更新种群中最好的个体 best与最差的个体worst,更新个体的质量。
5. 计算每个个体在不同方向上的总引力。
6. 计算个体的加速度,基于此更新个体的速度。
7. 根据速度更新个体在解空间中的位置。
8. 重复步骤3-7直到达到停止标准。

算法流程:
在这里插入图片描述

 

二、部分代码

% GSA-BBO HYBRIDIZATION ALGORITHM CODE
% SAJAD AHMAD RATHER
% 11/03/2016,05:55 PM
% Main function for using GSA algorithm.
clear all;clc
% inputs:
% N:  Number of agents.
% max_it: Maximum number of iterations (T).
% ElitistCheck: If ElitistCheck=1, algorithm runs with eq.21 and if =0, runs with eq.15.
% Rpower: power of 'R' in eq.28.
% F_index: The index of the test function. See tables 1,2,3 of the mentioned article.
% Insert your own objective function with a new F_index in 'test_functions.m'
% and 'test_functions_range.m'.
% outputs:
% Fbest: Best result. 
% Lbest: Best solution. The location of Fbest in search space.
% BestChart: The best so far Chart over iterations. 
% MeanChart: The average fitnesses Chart over iterations.
% n=Smax:Maximum number of species
% Pos:original population size
k= 2; % elitism parameter: how many of the best habitats to keep from one generation to the next
I = 1; % max immigration rate for each island
E1 = 1; % max emigration rate, for each island
N=50; 
Siv=4;%Suitability index variables(e.g;land,temperature,rainfall,diversity of vegetation) 
n=N;
Pos=N;
max_it=1000;
ElitistCheck=1; 
Rpower=1;
min_flag=1; % 1: minimization 0: maximization
F_index=1
[Fbest,Lbest,BestChart,MeanChart]=GSA(F_index,N,max_it,ElitistCheck,min_flag,Rpower,k,I,E1,Pos,Siv,n);Fbest,
semilogy(MeanChart,'--k');
title(['\fontsize{12}\bf F',num2str(F_index)]);
xlabel('\fontsize{12}\bf Iteration');ylabel('\fontsize{12}\bf  Average Best-so-far');
legend('\fontsize{10}\bf GSA-BBO',1);

三、仿真结果

 

 

四、参考文献

Sajad Ahmad Rather (2021). GSA-BBO HYBRIDIZATION ALGORITHM


这篇关于【优化求解】基于生物地理学结合重力引力搜索优化求解算法matlab源码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!