|
47布谷鸟算法的函数寻优分析
百度网盘链接:http://pan.baidu.com/s/1c2rip1I
具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1
具体的代码如下
- % 布谷鸟函数优化分析
- % cuckoo_search -- CS算法
- %% 清空环境
- clc % 清屏
- clear all; % 删除workplace变量
- close all; % 关掉显示图形窗口
- tic
- %% 参数初始化
- sizepop=200; % 种群规模
- pa=0.25; % 发现新巢的概率Discovery rate of alien eggs/solutions
- maxiter = 100; % 最大迭代次数
- nvar = 2; % 未知量个数
- popmin = -5*ones(1,nvar); % 种群下边界值
- popmax = 5*ones(1,nvar); % 种群上边界值
- %% 适应度函数
- fun = @Ackley_Fun; % 目标函数--越小越好
- %% 产生初始粒子
- for i=1:sizepop
- nest(i,:)=popmin+(popmax-popmin).*rand(1,nvar); % 个体
- fitness(i)=fun( nest(i,:) ); % 适应度
- end
- % 找当前最好的个体
- [bestfitness,bestindex]=min(fitness); % 最优适应度值
- bestnest = nest(bestindex,:); % 全局最佳种群
- %% 寻优
- for i=1:maxiter
- % 粒子位置更新
- new_nest = get_cuckoos(nest,bestnest,popmin,popmax); % Levy flights 粒子位置更新
- [fitnessgbest,bestgbest,nest,fitness]=get_best_nest(nest, fitness, fun, new_nest);
- % 寻找全局最优解
- if fitnessgbest<bestfitness
- bestnest =bestgbest;
- bestfitness = fitnessgbest;
- end
-
- % 寻找新的鸟巢--新的解
- new_nest=empty_nests(nest, popmin, popmax, pa) ;
- [fitnessgbest,bestgbest,nest,fitness]=get_best_nest(nest, fitness, fun, new_nest);
- % 寻找全局最优解
- if fitnessgbest<bestfitness
- bestnest =bestgbest;
- bestfitness = fitnessgbest;
- end
-
- CS_fun(i)=bestfitness;
- end
- toc
- %% 结果分析
- plot(CS_fun,'Linewidth',2)
- title(['适应度曲线 ' '终止代数=' num2str(maxiter)]);
- grid on
- xlabel('进化代数');ylabel('适应度');
- % 结果输出
- disp('全局最优解:')
- bestnest % 最佳个体值
复制代码 子函数如下:
分享:
【1】布谷鸟的改进算法(在桥梁悬臂梁结构参数化寻优分析应用): http://pan.baidu.com/s/1qY2Y3dq
|
|