【图像分割】基于混洗Shuffled Complex Evolution实现图像分割附matlab代码

发布于:2022-12-25 ⋅ 阅读:(348) ⋅ 点赞:(0)

1 内容介绍

解决全局优化问题的难度一般取决于问题的维数和目标函数的某些特征。本文讨论了其中五个特征,并提出了一种称为 shuffled complex evolution (SCE) 方法的函数优化策略,该方法有望为广泛的问题提供稳健、有效和高效的方法。SCE 方法基于对已证明对全局优化成功的四个概念的综合: (a) 概率和确定性方法的组合;(b) 聚类;(c) 跨越空间的复杂点的系统演变,朝着全球改进的方向发展;(d) 竞争演变。提出了两种基于 SCE 方法的算法。这些算法通过对八个不同难度的测试问题运行 100 次随机启动的试验来进行测试。这两种算法的性能与 Price (1983, 1987) 提出的受控随机搜索 CRS2 方法以及 Nelder 和 Mead (1965) 提出的基于单纯形法的多启动算法的性能进行了比较。

2 部分代码

function [BestCost,x,f] = ShuffledComplexEvolution(img_gray, NS, itr, popl)

CostFunction=@(x,img_gray) imagethresh(x,img_gray);    % Cost Function

nVar=NS;            % Number of Decision Variables

VarSize = [1 nVar];       % Decision Variables Matrix Size

VarMin = 0;             % Decision Variables Lower Bound

VarMax = 254;             % Decision Variables Upper Bound

%% SCE-UA Parameters

MaxIt = itr;        % Maximum Number of Iterations

nPopComplex = popl;                       % Complex Size

nPopComplex = max(nPopComplex, nVar+1); % Nelder-Mead Standard

nComplex = 5;                   % Number of Complexes

nPop = nComplex*nPopComplex;    % Population Size

I = reshape(1:nPop, nComplex, []);

% CCE Parameters

cce_params.q = max(round(0.5*nPopComplex), 2);   % Number of Parents

cce_params.alpha = 3;   % Number of Offsprings

cce_params.beta = 5;    % Maximum Number of Iterations

cce_params.CostFunction = CostFunction;

cce_params.VarMin = VarMin;

cce_params.VarMax = VarMax;

empty_individual.Position = [];

empty_individual.Cost = [];

pop = repmat(empty_individual, nPop, 1);

% Initialize Population Members

for i = 1:nPop

pop(i).Position = unifrnd(VarMin, VarMax, VarSize);

pop(i).Cost = CostFunction(pop(i).Position,img_gray);

end

% Sort 

pop = SortPopulation(pop);

% Update

BestSol = pop(1);

BestCost = nan(MaxIt, 1);

%% Body

for it = 1:MaxIt

Complex = cell(nComplex, 1);

% Form Complexes and Run CCE

for j = 1:nComplex

% Complex Formation

Complex{j} = pop(I(j, :));

Complex{j} = CCE(Complex{j}, cce_params, img_gray);

% Insert Updated Complex into Population

pop(I(j, :)) = Complex{j};

end

% Sort 

pop = SortPopulation(pop);

% Update 

BestSol = pop(1);

% Store 

 BestCost(it) = BestSol.Cost;

end

f= BestCost(end);

x= BestSol.Position;

end

3 运行结果

4 参考文献

[1] Majeed K ,  Qyyum M A ,  Nawaz A , et al. Shuffled Complex Evolution-Based Performance Enhancement and Analysis of Cascade Liquefaction Process for Large-Scale LNG Production[J]. Energies, 2020, 13(10):2511.

博主简介:擅长智能优化算法神经网络预测信号处理元胞自动机图像处理路径规划无人机雷达通信无线传感器等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到