资源简介
将变量为离散型的蚁群算法扩展到连续型变量,根据Socha, Krzysztof
和Dorigo, Marco在2008年发表的文章Ant colony optimization for continuous domains制作,内附原文及代码。
代码片段和文件信息
clc;
clear;
close all;
%% Problem Definition
CostFunction=@(x) Sphere(x); % Cost Function
nVar=10; % Number of Decision Variables
VarSize=[1 nVar]; % Variables Matrix Size
VarMin=-10; % Decision Variables Lower Bound
VarMax= 10; % Decision Variables Upper Bound
%% ACOR Parameters
MaxIt=1000; % Maximum Number of Iterations
nPop=10; % Population Size (Archive Size)
nSample=40; % Sample Size
q=0.5; % Intensification Factor (Selection Pressure)
zeta=1; % Deviation-Distance Ratio
%% Initialization
% Create Empty Individual Structure
empty_individual.Position=[];
empty_individual.Cost=[];
% Create Population Matrix
pop=repmat(empty_individualnPop1);
% Initialize Population Members
for i=1:nPop
% Create Random Solution
pop(i).Position=unifrnd(VarMinVarMaxVarSize);
% Evaluation
pop(i).Cost=CostFunction(pop(i).Position);
end
% Sort Population
[~ SortOrder]=sort([pop.Cost]);
pop=pop(SortOrder);
% Update Best Solution Ever Found
BestSol=pop(1);
% Array to Hold Best Cost Values
BestCost=zeros(MaxIt1);
% Solution Weights
w=1/(sqrt(2*pi)*q*nPop)*exp(-0.5*(((1:nPop)-1)/(q*nPop)).^2);
% Selection Probabilities
p=w/sum(w);
%% ACOR Main Loop
for it=1:MaxIt
% Means
s=zeros(nPopnVar);
for l=1:nPop
s(l:)=pop(l).Position;
end
% Standard Deviations
sigma=zeros(nPopnVar);
for l=1:nPop
D=0;
for r=1:nPop
D=D+abs(s(l:)-s(r:));
end
sigma(l:)=zeta*D/(nPop-1);
end
% Create New Population Array
newpop=repmat(empty_individualnSample1);
for t=1:nSample
% Initialize Position Matrix
newpop(t).Position=zeros(VarSize);
% Solution Construction
for i=1:nVar
% Select Gaussian Kernel
l=RouletteWheelSelection(p);
% Generate Gaussian Random Variable
newpop(t).Position(i)=s(li)+sigma(li)*randn;
end
% Evaluation
newpop(t).Cost=CostFunction(newpop(t).Position);
end
% Merge Main Population (Archive) and New Population (Samples)
pop=[pop
newpop]; %#ok
% Sort Population
[~ SortOrder]=sort([pop.Cost]);
pop=pop(SortOrder);
% Delete Extra Members
pop=pop(1:nPop);
% Update Best Solution Ever Found
BestSol=pop(1);
% Store Best Cost
BestCost(it)=BestSol.Cost;
% Show Iteration Information
disp([‘Iteration ‘ num2str(it) ‘: Best Cost = ‘ num2str(BestCost(it))]);
end
%% Results
figure;
%plot(BestCost‘LineWidth‘2);
semilogy(BestCost‘LineWidth‘2);
xlabel(‘Iteration‘);
ylabel(‘Best Cost‘);
grid on;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 105 2019-02-02 04:23 RouletteWheelSelection.m
文件 396529 2018-11-21 17:37 Socha-Ant colony optimization for continuous d.pdf
文件 51 2015-07-15 18:50 Sphere.m
文件 2973 2019-01-30 22:25 acor.m
文件 7 2019-02-02 04:23 main.m
----------- --------- ---------- ----- ----
399665 5
相关资源
- 帝国竞争算法ICA的matlab实现
- matlab小波去噪详解超全超全有程序.
- 图像追踪matlab
- 2019美赛B题代码
- 基于MATLAB的窗函数法设计FIR数字滤波
- MATLAB煤块识别
-
MPC预测控制算法中的DMC算法simuli
n - 基于matlab的指纹识别
- Matlab 蚁群算法
-
电机闭环仿真_Matlab_SIMUli
nk - 基于MATLAB的车牌识别开题报告
-
Simuli
nk仿真模型-逆变驱动SPWM驱动 - 基于MATLAB的拼图游戏
- 山东大学数值计算实验13-14matlab代码、
- 山东大学数值计算实验七matlab代码+实
- 最优化-牛顿法求最优解matlab程序
- 5种MATLAB求解MTSP问题代码
- MTSP问题matlab遗传算法求解
- 局部加权的线性回归的matlab实现
- 梯度下降法的matlab代码,包括最小二
-
simuli
nk仿真伺服系统三环控制 - Matlab笔记本自带摄像头人脸识别 by
- 粒子群Matlab
- 已知函数及区间,求区间内极值 mat
- 人工智能八数码问题过程表示求解m
- 用matlab实现三步搜索法
- 使用matlab批量删除txt文件中的连续的
- 根据面积或者边长求最小包围盒
- kernel function_matlab
- MATLAB在数学建模中的应用上下PDF 源程
评论
共有 条评论