资源简介
回溯搜索算法,回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。

代码片段和文件信息
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 回溯搜索(BSA)进行函数优化,
% 输入:popsize 种群个数,Dimsize 变量维数,pop=【pop1pop2...popi...popN】为种群集合,Maxgen 最大迭代次数,
% lowerboundary upperboundary分别为变量上下界,
% 输出: globalminimizerglobalminimum
function BSA()
clc;
clear all;
format long;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% 给定初始化条件 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
popsize = 10; % 种群数目
Dimsize = 30; % 变量维数
Maxgen = 1000; % 最大的迭代次数
mixrate = 1; % 最大交叉概率
constant_F = 3;
lowerboundary = -100.*ones(1Dimsize) ;
upperboundary = 100.*ones(1Dimsize) ;
globalminimum = Inf;
%%%%%%%%%%%%%%%%%%%%%%%% 种群初始化 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i = 1:popsize
pop( i:) = lowerboundary + rand(1Dimsize) .* (upperboundary - lowerboundary); % 初始化种群
oldpop( i:) = lowerboundary + rand(1Dimsize) .* (upperboundary - lowerboundary);
Fitpop(i) = fitness( pop(i:)Dimsize );
end
%%%%%%%%%%%%%%%%%%%%%%%%% 选择第一阶段 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for t = 1:Maxgen
for i =1:popsize
rand_a = rand;
rand_b = rand;
if rand_a < rand_b
oldpop(i:) = pop(i:);
else
oldpop = oldpop(randperm(popsize):);
oldpop = oldpop(:randperm(Dimsize));
end
end
%%%%%%%%%%%%%%%%%%%%% 变异 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i = 1:popsize
trialpop(i:) = pop(i:) + constant_F .* randn .* (oldpop(i:)-pop(i:));
end
%%%%%%%%%%%%%%%%%%%%% 交叉 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
integer_matrix = ones(popsizeDimsize);
rand_c = rand;
rand_d = rand;
if rand_c < rand_d
number = ceil(mixrate * rand * Dimsize);
sequence = randperm(Dimsize);
for i = 1:popsize
for u = 1:number
j = sequence(u);
integer_matrix( ij ) = 0;
end
end
else
sequence = randperm(Dimsize);
for i = 1:popsize
j = sequence(1);
integer_matrix( ij ) = 0;
end
end
for i = 1:popsize
for j = 1:Dimsize
if integer_matrix( ij ) == 1
trialpop(ij) = pop(ij);
end
end
end
%%%%%%%%%%%%%%%%%%%% 边界检测 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i = 1:popsize
for j = 1:Dimsize
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4490 2020-03-26 10:56 回溯搜索算法 matlab BSA.m.m
相关资源
- 基于小波变换的数字水印算法115024
- Dstar(动态路径规划)算法62845
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 光纤传输中的分布傅立叶算法matlab实
- k近邻算法matlab实现
- matlab编写的susan算法程序
- matlab-图像处理算法
- matlab链码提取算法
- matlab 数字图像对比度拉伸算法
- 数字图像处理radon matlab变换算法代码
- 主动轮廓模型算法matlab程序
- MATLAB 实现各类常见算法
- 数字信号处理 理论算法与实现 胡广书
- 基于BP神经网络的盲均衡算法 C程序(
- 基于harris算法的角点检测matlab原代码
- 图像匹配matlab源程序sift算法
- matlab编写的量子遗传算法
- 用蚁群算法求解TSP问题的matlab程序
- 粒子群算法matlab工具箱
- Matlab图像分割边缘提取算法
- prony 算法
- 蚁群算法论文+源代码
- 基于粒子群算法的非合作博弈的matl
- 协同进化遗传算法求解函数优化问题
- pri传统分选算法
- 基于RSSI的VIRE定位算法
- 相关向量机的快速算法
- Gardner_for _MPSK(PSK的符号同步算法)
- 粒子群算法优化pid源码 matlab仿真.ra
评论
共有 条评论