资源简介
压缩包中分为两部分,一部分为全局优化问题,另一部分为matlab源代码,每个代码块都有大量的注释,很简明,用户也可用本代码求解其他无约束优化问题。

代码片段和文件信息
function gy =ABC_Algorithm(Food_Numlimitmax_iterDobjfunLowerUpperr)
%% 变量解释
% -----------------------------------------------------------------------------------------
% NP 蜂群大小 (雇佣峰+观察峰)*/
% FoodNumber为食物源数量 = 蜂群/2
% limit为食物源遗弃条件
% max_iter % 搜索次数
%Foods [FoodNumber][D]; /*Foods[食物源数量][D维待优化参数].
%ObjVal[FoodNumber]; /*每个食物源的目标函数值
%Fitness[FoodNumber]; /*每个食物源的适应度值(质量)
%trial[FoodNumber]; /*每个解没有被提高的次数*/
%prob[FoodNumber]; /*食物源被选择的概率
%New_solution [D]; /*新解有公式产生 v{ij}=x{ij}+a{ij}*(x{kj}-x{ij}) j是一个随机参数且k与i不同*/
%ObjValSol; /*新解的目标函数值
%FitnessSol; /*新解的适应度值
%neighbour param2change; /*param2change与j对应 neighbour与k对应在公式v_{ij}=x_{ij}+\phi_{ij}*(x_{kj}-x_{ij})中*/
%GlobalMin; /*ABC算法的最优解*/
%GlobalParams[D]; /*最优解的参数*/
%GlobalMins[runtime]; /*在多次运行后得每次最优解
%---------------------------------------------------------------------------
U_bound =ones(1D)*Upper;%32.768; %参数的下界
L_bound =ones(1D)*Lower;%32.768 %参数的上界
Foods_min=ones(max_iterD);
Select_P=zeros(1Food_Num);
Range = repmat((U_bound-L_bound)[Food_Num 1]);% 变量范围
Lower = repmat(L_bound [Food_Num 1]);
Foods = rand(Food_NumD).* Range + Lower; % 食物源初始化;
Obj_Val=feval(objfunFoods); %目标函数值
Fitness=Cal_Fitness(Obj_Val); %适应度值
Global_Min=ones(1max_iter); %每次迭代最优解
trial=zeros(1Food_Num); %重置计数器
%------------记录最好的食物源---------
Best_Ind=find(Obj_Val==min(Obj_Val));
Best_Ind=Best_Ind(end);
GlobalMin_iter=Obj_Val(Best_Ind);
GlobalParams=Foods(Best_Ind:);
%% 迭代开始
iter=1;
while iter <= max_iter
%% %%%%%%%%%%%%%雇佣峰(侦查蜂)阶段 %%%%%%%%%%%%%%
for i=1:(Food_Num)
Param2Change=fix(rand*D)+1; % 参数是随机改变
neighbour=fix(rand*(Food_Num))+1; % 随机选择的解用于产生解i的变异解
while(neighbour==i) %随机选择一个与解i不同的解
neighbour=fix(rand*(Food_Num))+1;
end
New_sol=Foods(i:);
%% /*产生新解*/
New_sol(Param2Change)=Foods(iParam2Change)+(Foods(iParam2Change)-Foods(neighbourParam2Change))*(rand-0.5)*2;
New_sol=bound_limit(New_solL_boundU_bound);% 边界值处理
%% /*计算新解*/
ObjVal_Sol=feval(objfunNew_sol);
Fitness_Sol=Cal_Fitness(ObjVal_Sol);
%% /*贪婪算法*/
if (Fitness_Sol > Fitness(i)) %if新解优于解i,则替代i解
Foods(i:)=New_sol;
Fitness(i)=Fitness_Sol;
Obj_Val(i)=ObjVal_Sol;
trial(i)=0;
else
trial(i)=trial(i)+1; %如果解i没有提高trial+1
end
%% %%%%%%%%%%%%%%%%% 计算概率 %%%%%%%%%%%%%
%食物源是根据概率(质量)被选择的
Pro=2;
switch Pro
case 1
Select_P(i)=Fitness(i)/sum(Fitness);
case 2
Select_P(i)=(0.9.*Fitness(i)./max(Fitness))+0.1;
end
end
%% %%%%%%%%%%%%%% 观察蜂阶段 %%%%%%%%%%
i=1;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5961 2016-06-22 20:54 人工蜂群算法求解无约束优化问题\ABC_Algorithm.m
文件 214 2016-06-22 18:42 人工蜂群算法求解无约束优化问题\bound_limit.m
文件 201 2016-06-22 18:42 人工蜂群算法求解无约束优化问题\Cal_Fitness.m
文件 273 2016-06-11 19:18 人工蜂群算法求解无约束优化问题\Problem1.m
文件 100 2016-06-11 18:51 人工蜂群算法求解无约束优化问题\Problem2.m
文件 326 2016-06-22 09:39 人工蜂群算法求解无约束优化问题\Problem3.m
文件 1074 2017-12-27 22:53 人工蜂群算法求解无约束优化问题\run_ABC.m
文件 164352 2017-12-27 22:54 人工蜂群算法求解无约束优化问题\遗传算法求解结果.doc
目录 0 2017-12-27 22:55 人工蜂群算法求解无约束优化问题
----------- --------- ---------- ----- ----
172501 9
相关资源
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
- k近邻算法matlab实现
评论
共有 条评论