资源简介
压缩包中分为两部分,一部分为全局优化问题,另一部分为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源
- 遗传算法求解背包问题matlab源码+原问
- matlab棋盘格角点自动检测提取程序
- 图像增强、图像形态学变换等matlab图
- 三维点云精简的均匀网格法&不均匀网
- 点特征直方图PFH算法的matlab实现,以
- matlab相机标定
- 有高斯噪声的RSSI值仿真代码
- matlab产生广义拉盖尔多项式系数
- 匹配滤波器原理及matlab实现
- PAPR问题的MATLAB程序
- 朴素贝叶斯分类matlab实现
- Matlab的PMSM矢量控制电流环仿真模型原
- SLIC超像素分割matlab代码
- PMSM MatLab仿真模型
- 时频重排同步压缩matlab
- Matlab 区域标记与面积计算
- QT调用matlab引擎
- FIR带通滤波器源代码
- matlab录音程序76107
- Dijkstra算法的Matlab程序,有验证。
- spasm工具包
- MATLAB中ifft函数用法、性质、特性以及
- MATLAB中fft函数用法、性质、特性、缺
- 滑模变结构控制第三版matlab仿真程序
- matlab计算节点重要度
- CT等距扇束重建
- 基于蚁群算法的图像边缘检测算法M
- 基于MOEA/D的多目标优化算法
- 含风电场的电力系统潮流程序matlab
评论
共有 条评论