目录
- 一、人工蜂群算法理论
- 二、算法流程图
- 二、代码讲解
- 1、 ABC.m文件
- 2、Sephere.m文件
- 3、RouletteWheelSelection.m文件
- 二、源码下载
该代码是Matlab官网的代码,非常适合学习模拟退火算法的原理和实现。
一、人工蜂群算法理论模拟退火算法(SA)、遗传算法(GA)、布谷鸟算法(CS)、人工蜂群算法(ABC)学习笔记—附MATLAB注释代码
二、算法流程图% Copyright (c) 2015, Yarpiz (www.yarpiz.com)
% All rights reserved. Please read the "license.txt" for license terms.
%
% Project Code: YPEA114
% Project Title: Implementation of Artificial Bee Colony in MATLAB
% Publisher: Yarpiz (www.yarpiz.com)
%
% Developer: S. Mostapha Kalami Heris (Member of Yarpiz Team)
%
% Contact Info: sm.kalami@gmail.com, info@yarpiz.com
%
clc;
clear;
close all;
%% Problem Definition
CostFunction=@(x) Sphere(x); % Cost Function函数句柄,未知数是x,相当于建立了一个函数文件,类似在C语言中的函数定义。该方法在Sphere.m中定义
nVar=5; % Number of Decision Variables问题的维度
VarSize=[1 nVar]; % Decision Variables Matrix Size定义一个问题维度大小的矩阵
VarMin=-10; % Decision Variables Lower Bound函数的下限
VarMax= 10; % Decision Variables Upper Bound上限
%% ABC Settings
MaxIt=1000; % Maximum Number of Iterations迭代次数上限
nPop=100; % Population Size (Colony Size)初始雇佣蜂数量
nOnlooker=nPop; % Number of Onlooker Bees初始观察蜂数量
L=round(0.6*nVar*nPop); % Abandonment Limit Parameter (Trial Limit) round():四舍五入取整,表示蜜源试验次数上限,如果达到此上限,舍弃该蜜源,侦查蜂来做的这一步
a=1; % Acceleration Coefficient Upper Bound蜜源变换的加速系数的最大值
%% Initialization
% Empty Bee Structure
empty_bee.Position=[];%%蜜源
empty_bee.Cost=[];%%蜜源适应度
% Initialize Population Array
pop=repmat(empty_bee,nPop,1);%把矩阵empty_bee作为pop的nPop×1矩阵的元素(矩阵中的矩阵),表示有100个雇佣蜂干活
% Initialize Best Solution Ever Found因为是求函数的最小值,所以预定义最坏适应度是无穷大
BestSol.Cost=inf;
% Create Initial Population在定义域范围内,随机初始化蜜源位置
for i=1:nPop
pop(i).Position=unifrnd(VarMin,VarMax,VarSize);%%unifrnd(-10,10,[1 5]):表示产生均匀分布的随机数,产生一个1*5的随机数矩阵,其值在-10到10之间均匀分布
pop(i).Cost=CostFunction(pop(i).Position);
if pop(i).Cost
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?