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


    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代码问题可私信交流。

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

     

  • 相关阅读:
    王道 第一章 计算机网络的概念
    我从未结束的Java之旅(二)
    VUE+TS使用elementUI的el-checkbox双重v-for循环做勾选
    JVM可视化工具之Java VisualVM
    大数据毕业设计选题推荐-营业厅营业效能监控平台-Hadoop-Spark-Hive
    Mybatis-Plus知识点总结(上)
    热释电矢量传感器设计
    异行星低代码平台--第三方插件对接:企业微信平台对接(二)
    Python实现Prophet时间序列数据建模与异常值检测(Prophet算法)项目实战
    学生信息登录系统(下)——判断循环语句(五)(for循环篇)
  • 原文地址:https://blog.csdn.net/matlab_dingdang/article/details/126754463