• 【智能优化算法-蒲公英优化器】基于蒲公英优化器求解单目标优化问题附matlab代码


    1 内容介绍

    群智能优化算法作为当前优化算法中的一个主要研究热点,经过近年的发展,已经发展为较为新颖的演化计算技术,受到越来越多不同领域研究工作者的关注.群智能优化算法比传统优化方法求解各种复杂优化问题上表现出了更好的高效性以及稳定性,并且算法的结构和操作性相对简单,隐含并行性,容易理解和编程,因此在优化技术应用上有较强的实用性,具有一定的现实意义.本文首先介绍了群体智能优化算法研究背景、意义及其国内外研究现状和应用情况.本文的主要研究工作如下:1.通过模拟蒲公英飘落繁殖过程,提出了一种新的群体智能算法——蒲公英智能优化算法(Dandelion Optimization Algorithm,简称DOA),蒲公英智能优化算法为解决优化问题提供一种新的基础算法.模拟蒲公英在繁殖过程中飘落生长的植物特性,以弥漫式并行搜索方式对解空间进行搜索,直到找到最优解为止​。

    每值春夏之际,大地上长满了成片的蒲公英,每片的蒲公英群都会由一定范围内星星点点

    的蒲公英繁殖而来,受蒲公英飘落繁殖现象的启发,本人在导师高岳林的指导下提出模拟蒲公

    英繁衍方式的蒲公英优化算法( DOA ),将蒲公英繁殖生长的空间比作成优化问题的搜索空间,

    将生长在此区域内的母代和子代蒲公英个体看作是问题的候选解,通过目标函数评估蒲公英

    子代的适应度值,算法越接近目标函数的最优解,对应的适应度值就会越高,以此来比较算法

    的优劣性.根据蒲公英植物的生长繁殖规律,实时对蒲公英子代的飘落位置进行更新,同时对

    蒲公英子代进行增肥和灌溉,提高幼苗的生长质量.幼苗作为下一阶段蒲公英繁衍的位置,且

    生长的蒲公英个体将保留在原来的位置上.通过对挑选出的优质蒲公英个体进行不停的繁殖,

    这样的操作不停地进行,繁殖的后代也会不停的接近最适合蒲公英种子生长的位置附近,最终

    在算法满足终止条件时,蒲公英种群中适应度值最优的位置就当作目标函数在解空间的最优

    值.

    蒲公英算法通过实数编码的方式,随机地初始化种群,种群的迭代过程是受 3 个分量(风

    速、风向、种群密度)的共同作用,在整个迭代过程中,为了保持种群多样性,对蒲公英种子落

    地生根时的位置进行更新移植,并通过施肥和灌溉等操作,直到满足终止条件

    2 部分代码

    %__________________________________________________________________

    %  Dandelion Optimizer

    %  Developed in MATLAB R2018a

    %  Engineering Applications of Artificial Intelligence

    %  DOI:10.1016/j.engappai.2022.105075

    %

    %__________________________________________________________________

    clear all 

    clc

    N=30; % Number of search agents

    Max_iter=200; % Maximum numbef of iterations

    F_name='F21'; % Name of the test function

    % Load details of the selected benchmark function

    [lb,ub,dim,fobj]=Get_Functions_details(F_name);

    tic;

    [Bestfitness,Bestposition,Convergencecurve]=DO(N,Max_iter,lb,ub,dim,fobj);

    Run_time=toc;

    figure('Position',[454   445   694   297]);

    subplot(1,2,1);

    func_plot(F_name);

    title('Parameter space')

    xlabel('x_1');

    ylabel('x_2');

    zlabel([F_name,'( x_1 , x_2 )'])

    subplot(1,2,2);

    semilogy(1:Max_iter,Convergencecurve,'color','r','linewidth',2.5);

    title('Convergence curve');

    xlabel('Iteration');

    ylabel('Best score obtained so far')

    display(['The running time is:', num2str(Run_time)]);

    display(['The best fitness is:', num2str(Bestfitness)]);

    display(['The best position is: ', num2str(Bestposition)]);

    3 运行结果

    4 参考文献

    [1]王滔. 蒲公英智能优化算法研究[D]. 北方民族大学, 2018.

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

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

  • 相关阅读:
    Java 实现统计文件字符
    普通人不要去投资
    Java 数据结构、集合框架、ArrayList
    Object.assign()使用
    openCV第一篇
    新Token经济模型: 解决当下GameFi困境的「新范式」
    UrlBasedViewResolver类简介说明
    xshell修改字体大小
    计算机网络 | 网络层(控制平面)
    几道单调队列相关的题目
  • 原文地址:https://blog.csdn.net/matlab_dingdang/article/details/126759552