资源简介
基于matlab程序语言的蚁群算法求解函数最优值,供广大科研工作者和程序爱好者学习使用参考!
代码片段和文件信息
function [maxValuemaxXMVMX]=ant_funname_max(funnameXYAntTimesRouP0)
% 利用蚁群算法求函数的极值
% input funname:优化函数的函数句柄
% XY:搜索范围即[x1x2y1y2z1z2]
% Ant:蚂蚁数量
% Times:蚂蚁移动次数
% Rou:信息素挥发系数
% P0:转移概率
% output maxValue:函数极大值
% maxX:函数极大值对应的自变量取值
% MV:每一代函数的极大值
% MX:每一代函数极大值对应的自变量取值
% example:
% funname=@CNOT_search;
% XY=[1.8782.8781.8782.8780.010.0650.010.065]; %自变量取值范围
% Ant=300; % 蚂蚁数量
% Times=80; % 蚂蚁移动次数
% Rou=0.9; % 信息素挥发系数
% P0=0.2; % 转移概率常数
% [maxValuemaxXMVMX]=ant_funname_max(funnameXYAntTimesRouP0);
% 随机设置蚂蚁的初始位置
Lower=XY(1:2:end-1);
Upper=XY(2:2:end);
UL=Upper-Lower;
X=repmat(LowerAnt1)+repmat(ULAnt1).*rand(Antlength(Lower));
Tau=search_value(Xfunname);
% 初始蚂蚁位置的分布图(仅限自变量为一维和二维的)
if abs(length(Lower)-2)<1e-4
figure;
[xy]=meshgrid(linspace(Lower(1)Upper(1)100)linspace(Lower(2)Upper(2)100));
for m=1:size(x1)
for n=1:size(x2)
z(mn)=search_value([x(mn)y(mn)]funname);
end
end
subplot(121);
mesh(xyz);
hold on;
plot3(X(:1)X(:2)Tau‘k*‘);
hold on
title(‘蚂蚁的初始分布位置‘);
xlabel(‘x‘);
ylabel(‘y‘);
zlabel(‘z‘);
xlim([XY(1)XY(2)]);
ylim([XY(3)XY(4)]);
elseif abs(length(Lower)-1)<1e-4
x=linspace(Lower(1)Upper(1)100);
for m=1:length(x)
y(m)=search_value(x(m)funname);
end
subplot(121);
plot(xy);
hold on;
plot(XTau‘k*‘);
hold on
title(‘蚂蚁的初始分布位置‘);
xlabel(‘x‘);
ylabel(‘y‘);
xlim([XY(1)XY(2)]);
end
% 存储每一代的最佳值
MX=zeros(Timeslength(Lower));
MV=zeros(Times1);
% 迭代寻找最佳值
for T=1:Times
lamda=1/T;
[Tau_Best(T)BestIndex]=max(Tau);
%计算状态转移概率
P(:T)=(Tau(BestIndex)-Tau)/Tau(BestIndex);
for i=1:Ant
if P(iT) %局部搜索
temp=X(i:)+(2*rand(1length(Lower))-1)*lamda;
else
%全局搜索
temp=X(i:)+UL.*(2*rand(1length(Lower))-1);
end
%越界处理
p1=find(temp temp(p1)=Lower(p1);
p2=find(temp>Upper);
temp(p2)=Upper(p2);
%判断蚂蚁是否移动
if search_value(tempfunname)>search_value(X(i:)funname)
X(i:)=temp;
end
end
%更新信息量
for i=1:Ant
Tau(i)=(1-Rou)*Tau(i)+search_value(X(i:)funname);
end
%存储每一代的最佳值
[max_valuemax_index]=max(Tau);
maxX=X(max_index:);
maxValue=search_value(maxXfunname);
MX(T:)=maxX;
MV(T)=maxValue;
end
% 结果显示
[max_valuemax_index]=max(MV);
maxX=MX(max_index:);
maxValue=max_value;
disp([‘函数最大值对应的自变量取值:‘]);
disp(maxX);
disp([‘函数最大值:‘]);
disp(maxValue);
% 结束时蚂蚁的位置分布(仅限自变量是一维和二维的)
if abs(length(Lower)-2)<1e-4
subplot(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-12-15 23:06 蚁群算法求函数最值\
文件 4201 2017-10-21 21:50 蚁群算法求函数最值\ant_fun_con_max.m
文件 4193 2017-10-21 21:50 蚁群算法求函数最值\ant_fun_con_min.m
文件 3647 2017-10-21 21:50 蚁群算法求函数最值\ant_fun_max.m
文件 3641 2018-04-25 22:58 蚁群算法求函数最值\ant_fun_min.m
文件 4158 2017-10-21 21:50 蚁群算法求函数最值\ant_funname_max.m
文件 4111 2017-10-21 21:50 蚁群算法求函数最值\ant_funname_min.m
文件 3371 2018-04-26 18:29 蚁群算法求函数最值\ant_min.m
文件 2948 2018-03-21 14:53 蚁群算法求函数最值\example_fun.m
文件 748 2018-03-09 13:48 蚁群算法求函数最值\example_funname.m
文件 558 2017-10-21 21:50 蚁群算法求函数最值\produce.m
文件 6948 2017-10-21 21:50 蚁群算法求函数最值\trial_function_test.m
- 上一篇:编队控制仿真程序
- 下一篇:基于扩展卡尔曼滤波的电池soc估计simuli
nk模型
相关资源
- 图像锐化MATLAB实现包含laplacian算子、
- 高斯-拉盖尔积分Gauss-laguerre积分matl
-
倒立摆实验,matlab,simuli
nk仿真 - 遗传算法验证算例
- 基于MATLAB的语音识别系统的设计实现
- BBO生物地理学优化算法及改进算法的
- 蒙特卡洛模拟法
- PX4 EKF MATLAB代码
- 下垂控制模型
- matlab编写DFT函数
- MATLAB logistic实现图像扩散
- 锂电池matlab模型
- 复杂网络节点度和度分布计算的MATL
- 灰色预测人口增长matlab
- MATLAB 实现转轮机加密与解密
- 单相光伏并网逆变器matlab仿真
- Mann-Kendall检验Matlab程序代码.doc
- 3机9节点潮流计算编程
- 万有引力搜索算法的函数优化-matlab
- bp模型优化预测与matlab仿真,pid参数优
- matlab经典题目
- LSD直线提取算法MATLAB.rar
- SR显著图的MATLAB代码
- HOG特征的MATLAB代码
- Itti-Matlab.rar
- 图像融合算法matlab实现.zip
- 运输问题初始解求法MATLAB实现最小元
- 利用simuliink中的S函数编写倒立摆轨迹
- 0-9的数字识别,
- 基于matlab的iir滤波器和gui设计.rar
评论
共有 条评论