果蝇优化算法
来源:互联网 发布:专辑封面设计软件 编辑:程序博客网 时间:2024/05/06 09:50
1、随机初始果蝇群体位置。
X_axis=10*rand();
Y_axis=10*rand();
2、附与果蝇个体利用嗅觉搜寻食物之随机方向与距离。
X(i)=X_axis+2*rand()-1;
Y(i)=Y_axis+2*rand()-1;
3、由于无法得知食物位置,因此先估计与原点之距离(Dist),再计算味道浓度判定值(S),此值为距离之倒数。
D(i)=(X(i)^2+Y(i)^2)^0.5;
S(i)=1/D(i);
4、味道浓度判定值(S)代入味道浓度判定函数(或称为 Fitness function)以求出该果蝇个体位置的味道浓度(Smelli)
Smell(i)=3-S(i)^2;
5、找出此果蝇群体的中味道浓度最高的果蝇(求极大值)。
[bestSmell bestindex]=max(Smell);
6、保留最佳味道浓度值与 x、y 坐标,此时果蝇群体利用视觉往该位置飞去。
X_axis=X(bestindex);
Y_axis=Y(bestindex);
Smellbest=bestSmell;
7、进入迭代寻优,重复执行步骤 2-5,并判断味道浓度是否优于前一迭代味道浓度,若是则执行步骤6。
matlab代码如下:
clc
clear
%初始化果蝇群体位置空间区间为[0,10]
X_axis=10*rand();
Y_axis=10*rand();
%设置参数
maxgen=100; %迭代次数
sizepop=20; %种群规模
%***果蝇寻优开始,利用嗅觉寻找食物。
for i=1:sizepop
%***附与果蝇个体利用嗅觉搜寻食物之随机方向与距离,区间为[-1,1]。
X(i)=X_axis+2*rand()-1;
Y(i)=Y_axis+2*rand()-1;
%计算味道浓度判定值
D(i)=(X(i)^2+Y(i)^2)^0.5;
S(i)=1/D(i);
%将S代入适应度函数Y=3-X.^2,计算果蝇个体位置的味道浓度
Smell(i)=3-S(i)^2;
end
%***找出此果蝇群体的中味道浓度最高的果蝇(求极大值)。
[bestSmell bestindex]=max(Smell);
%***保留最佳值位置,此时果蝇群体利用视觉往该位置飞去。
X_axis=X(bestindex);
Y_axis=Y(bestindex);
Smellbest=bestSmell;
%根据公式更新粒子位置和速度,并且根据新粒子的适应度值更新个体极值和群体极值
%果蝇迭代寻优开始
for g=1:maxgen
for i=1:sizepop
X(i)=X_axis+2*rand()-1;
Y(i)=Y_axis+2*rand()-1;
D(i)=(X(i)^2+Y(i)^2)^0.5;
S(i)=1/D(i);
Smell(i)=3-S(i)^2;
end
[bestSmell bestindex]=max(Smell);
if (bestSmell >Smellbest)
X_axis=X(bestindex);
Y_axis=Y(bestindex);
Smellbest=bestSmell;
end
%***每代最优Smell值纪录到yy数组中,并记录最优迭代坐标
yy(g)=Smellbest;
Xbest(g)=X_axis;
Ybest(g)=Y_axis;
end
%***绘制迭代味到浓度与果蝇飞行路径趋势图
figure(1) %图1为迭代次数与适应度值的关系,即收敛图
plot(yy)
title('Optimization process','fontsize',12)
xlabel('Iteration Number','fontsize',12);ylabel('Smell','fontsize',12);
figure(2)
plot(Xbest,Ybest,'b.');
title('Fruit fly flying route','fontsize',14)
xlabel('X-axis','fontsize',12);ylabel('Y-axis','fontsize',12);
- 果蝇优化算法
- 果蝇优化算法(FOA)
- 果蝇优化算法-matlab实现、过程剖析
- 群智能优化之果蝇算法
- 果蝇优化算法优化Z-SCORE模型参数
- 果蝇算法--背包问题
- 果蝇
- Matlab果蝇算法求解Schaffer函数的极值
- 果蝇大脑研究能够改进计算机相似性搜索算法
- 人工智能的“果蝇”
- 果蝇神经元聚类
- 从香蕉的果蝇说起
- 算法优化
- 优化算法
- 优化算法
- 人工智能算法- 优化算法
- 人工智能算法- 优化算法
- 优化算法 - 遗传算法
- 拖拽产生tableViewCell
- iCloud之订阅记录更改
- Thinkphp基类库扩展
- Codeforces Round #319 (Div. 2)
- hdu1421搬寝室 DP
- 果蝇优化算法
- STL源码剖析 [容器](二十一)[stl_hash_map.h]
- 推荐两个界面原型设计工具--GUIDesignStudio 和 Mockups For Desktop
- PCM数据格式
- JavaScript学习笔记
- Android底部菜单栏
- 单例模式简介及在WinForm编程中的实现方法
- 从PEE模式进入VLPS/LLS唤醒之后的状态
- Unable to execute dex: Multiple dex files define 解决方法