资源简介
新出BFA优化算法,用于求解电力系统经济调度等优化问题,效果较好
代码片段和文件信息
function [hisfbestvalbestmemberfbestfmean] = BFA(FUNNDimPopSizeMaxIter)
%% 参数初始化
nc = 4; % 最大连续前进步数
%% 环境参数初始化
his = zeros(1MaxIter); % 全局最优点
his_idx = 1;%全局最优点出现的代数
%% 定义控制变量的上下界
Bound = FUN();
Boundl=ones(NDimPopSize);
Boundu=ones(NDimPopSize);
for i=1:1:PopSize
Boundl(:i)=Bound(:1);
Boundu(:i)=Bound(:2);
end
LowerBound = Boundl.*ones(NDimPopSize); % 每个细菌控制变量的下界
UpperBound = Boundu.*ones(NDimPopSize); % 每个细菌控制变量的上界
%% 初始化转向角
angle = pi/4.*ones(NDim-1PopSize); % 每个细菌的转向角
a = round(((NDim+1)^.5)); % 根据控制变量个数确定的细菌的最大转向角
%% 初始化细菌群体
population = rand(NDim PopSize).*(UpperBound-LowerBound) + LowerBound; % 随机初始化每个细菌的位置
vmax = ones(NDimPopSize); % 初始化菌群的速度向量
for i = 1:NDim
vmax(i:) = (UpperBound(i:)-LowerBound(i:)); % 最大的速度向量是变量的范围
end
r = norm(vmax(:1)); % r 是最大速度向量的模
distance = r*repmat(ones(1PopSize)NDim1); % 定义菌群中每个个体前进的步长
direction = zeros(NDimPopSize); % 定义细菌转向的方向向量direction
%% 评价初始种群
fvalue = zeros(1PopSize); % 初始化每个细菌个体的适应值
for i = 1:PopSize % 评价种群的中每个细菌个体
fvalue(i) = FUN(population(:i));
end
[fbestvalindex] = min(fvalue); %记录群体中最小的适应值及其编号
bestmember = population(:index); % 记录群体中最好的个体所在的位置
%% 寻优主循环
iteration = 0;
while iteration iteration = iteration +1;
for j = 1:PopSize
R1 = randn(1); % 产生步长公式中的随机数
R2 = rand(NDim-11); % 随机转向角公式中的随机数矩阵
R3 = rand(NDim 1); % 密度感应中吸引表达式中的随机数
%% 确定转向角
Tumbleangle = -(pi/(a^2)).*R2+angle(:j); % 随机选择转向角
distance(:j) = r*R1; % 随机选择前进步长
direction(1j) = prod(cos(Tumbleangle(1:NDim-1))); % 将转向角转换为笛卡尔坐标系中的转向向量
for i = 2:NDim-1
direction(ij) = sin(Tumbleangle(i)).*prod(cos(Tumbleangle(i:NDim-1)));
end
direction(NDimj) = sin(Tumbleangle(NDim-1));
NewPosition = population(:j)+distance(:j).*direction(:j); % 转向运动后细菌的新位置
Outflag = (NewPosition>UpperBound(:j) | NewPosition NewPosition = NewPosition-Outflag.*distance(:j).*direction(:j); % 将变量控制在要求范围之内
Newfvalue = FUN(NewPosition); %计算新位置的适应值
%% 前进运动
searchcounter = 0; % 前进步数计数器
while searchcounter < nc
if Newfvalue < fvalue(j)
population(:j) = NewPosition; % 新位置若更优秀的话细菌前进到新位置
angle(:j) = Tumbleangle; % 细菌的转向角更新为当前的转向角
NewPosition = population(:j)+distance(:j).*direction(:j); % 更新下一步的位置
Outflag = (NewPosition>UpperBound(:j) | NewPosition
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5747 2013-05-14 21:41 BFA code\BFA.asv
文件 5638 2013-05-14 21:41 BFA code\BFA.m
文件 415968 2013-05-20 10:02 BFA code\bfa.txt
文件 225 2013-05-14 21:41 BFA code\bfashell.asv
文件 274 2013-05-14 21:41 BFA code\bfashell.m
文件 2176 2013-05-14 21:41 BFA code\bpmpd\lp.m
文件 2248 2013-05-14 21:41 BFA code\bpmpd\qp.m
文件 1384 2013-05-14 21:41 BFA code\bustypes.m
文件 2457 2013-05-14 21:41 BFA code\CalFitnessDE.asv
文件 1977 2013-05-14 21:41 BFA code\CalFitnessnew.asv
文件 1977 2013-05-14 21:41 BFA code\CalFitnessnew.m
文件 3600 2013-05-14 21:41 BFA code\calpf.m
文件 6991 2013-05-14 21:41 BFA code\calpfnew.asv
文件 8150 2013-05-14 21:41 BFA code\calpfnew.m
文件 7602 2013-05-14 21:41 BFA code\calpfnewtest.m
文件 5954 2013-05-14 21:41 BFA code\case.m
文件 37081 2013-05-14 21:41 BFA code\case118.m
文件 37081 2013-05-14 21:41 BFA code\case118old.m
文件 9944 2013-05-14 21:41 BFA code\case30.m
文件 78411 2013-05-14 21:41 BFA code\case300.m
文件 11288 2013-05-14 21:41 BFA code\case30bus.m
文件 11275 2013-05-14 21:41 BFA code\case30busga.asv
文件 11254 2013-05-14 21:41 BFA code\case30busga.m
文件 10206 2013-05-14 21:41 BFA code\case30pwl.m
文件 10108 2013-05-14 21:41 BFA code\case30Q.m
文件 11163 2013-05-14 21:41 BFA code\case30test.m
文件 14659 2013-05-14 21:41 BFA code\case57.m
文件 5954 2013-05-14 21:41 BFA code\case9.m
文件 6032 2013-05-14 21:41 BFA code\case9Q.m
文件 9908 2013-05-14 21:41 BFA code\cdf2matp.asv
............此处省略72个文件信息
相关资源
- matlab频率估计
- 计算脉搏信号的方法 PPG (Blood Puls
- 石墨烯的电导率计算 (Complex conduc
- 提取地震子波的完整代码(Wave Extra
- PHD和CPHD两种算法的仿真程序
- ILC 迭代学习控制的matlab程序
- k-medoids聚类算法matlab源代码
- Chameleon变色龙层次聚类算法实现
- 平均电流控制的boost pfc仿真(BoostPF
- haar-like特征的提取代码
- 基于机器视觉的零件缺陷检测
- 用于图像处理的三类边缘保护滤波器
- 永磁同步电机的滑模变结构(SMC)仿
- 典型雷达信号的侦察分析和雷达干扰
- cacfar单元平均恒虚警检测方法
- matlab实现阈值图像分割
- 最近邻域标准滤波器(NNSF)和概率数
- matlab有限元格式求解二维热传导(h
- matlab实现的利用backstepping算法设计的
- matlab实现的三维UWBTDOA AOA联合定位算法
- 异步电机 matlab仿真模型
- 模拟SIR信息传播模型的CP过程的仿真程
- matlab实现ID3 决策树算法
- matlab实现的标准大气模型
- Gammatone人耳滤波器
- MATLAB信号处理 、频谱分析、汉宁窗函
- fattal算法的梯度域实现色调映射(G
- 贝叶斯网络(BNT)结构和参数的学习
- matlab实现的对统计数据进行威布尔分
- 数字下变频器的matlab仿真
评论
共有 条评论