• 基于象鼻虫损害优化算法求解装箱问题问题(Matlab代码实现)


     📝个人主页:研学社的博客 

    💥💥💞💞欢迎来到本博客❤️❤️💥💥

    🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

    ⛳️座右铭:行百里者,半于九十。

    目录

    💥1 概述

    📚2 运行结果

    🎉3 参考文献

    🌈4 Matlab代码及文章阅读

    💥1 概述

    象鼻虫是一种长着细长鼻子的昆虫,来自Curculionoide超科,约有97000种。其中大多数认为害虫会造成环境破坏,但一些种类,如小麦象鼻虫、玉米象鼻虫和棉铃象鼻虫,以对农作物,尤其是谷物造成巨大破坏而闻名。这项研究提出了一种新的基于群的元启发式算法,称为象鼻虫损伤优化算法(WDOA),该算法模拟了象鼻虫的飞行能力、鼻部力量和对作物或农产品的损伤能力。用12个基准单峰和多峰人工景观或优化测试函数对所提出的算法进行了测试。此外,所提出的WDOA被用于五个工程问题,以检查其解决问题的鲁棒性。问题包括旅行推销员问题(TSP)、n-Queens问题、投资组合问题、最优库存控制问题(OIC)和装箱问题(BPP)。所有测试的功能都与广泛使用的粒子群优化(PSO)、遗传算法(GA)、和谐搜索(HS)算法、帝国主义竞争算法(ICA)、萤火虫算法(FA)和差分进化(DE)算法等基准算法进行了比较。此外,所有问题都用DE、FA和HS算法进行了测试,所提出的算法通过提供精确性和合理的速度,在所有函数和问题上表现出鲁棒性和速度。

    算法文章来源:

    然后本文基于象鼻虫损害优化算法的TSP问题求解,用Matlab代码实现。

    📚2 运行结果

      部分代码:

    % WDOA Parameters
    MaxIt = 200;          % Maximum Number of Iterations
    nPop = 10;            % Number of weevils 

    DamageRate = 0.1;                   % Damage Rate
    nweevil = round(DamageRate*nPop);   % Number of Remained weevils
    nNew = nPop-nweevil;                % Number of New weevils
    mu = linspace(1, 0, nPop);          % Mutation Rates
    pMutation = 0.2;                    % Mutation Probability
    MUtwo = 1-mu;                       % Second Mutation
    SnoutPower = 0.8;                   % Weevil Snout power Rate
    FlyPower = 0.03*(VarMax-VarMin);    % Weevil Fly Power Rate


    %% Basics
    % Empty weevil
    weevil.Position = []; 
    weevil.Cost = [];
    weevil.Sol = [];

    % Weevils Array
    pop = repmat(weevil, nPop, 1);
    % First weevils
    for i = 1:nPop
    pop(i).Position = unifrnd(VarMin, VarMax, VarSize);
    [pop(i).Cost pop(i).Sol] = CostFunction(pop(i).Position);
    end;

    % Sort 
    [~, SortOrder] = sort([pop.Cost]);pop = pop(SortOrder);
    % Best Solution
    BestSol = pop(1);
    % Best Costs Array
    BestCost = zeros(MaxIt, 1);
    %--------------------------------
    %% WDOA Body
    for it = 1:MaxIt
    newpop = pop;
    for i = 1:nPop
    for k = 1:nVar
    if rand <= MUtwo(i)
    TMP = mu;TMP(i) = 0;TMP = TMP/sum(TMP);
    j = RouletteWheelS(TMP);
    newpop(i).Position(k) = pop(i).Position(k)+SnoutPower*(pop(j).Position(k)-pop(i).Position(k));
    end;
    % Mutation
    if rand <= pMutation
    newpop(i).Position(k) = newpop(i).Position(k)+FlyPower*randn;
    end;end;
    % Apply Lower and Upper Bound Limits
    newpop(i).Position = max(newpop(i).Position, VarMin);
    newpop(i).Position = min(newpop(i).Position, VarMax);

    [newpop(i).Cost newpop(i).Sol] = CostFunction(newpop(i).Position);

    end;% Asses power
    [~, SortOrder] = sort([newpop.Cost]);newpop = newpop(SortOrder);% Sort
    pop = [pop(1:nweevil);newpop(1:nNew)];% Select 
    [~, SortOrder] = sort([pop.Cost]);pop = pop(SortOrder);% Sort 
    BestSol = pop(1);% Update 
    BestCost(it) = BestSol.Cost;% Store 
    % Iteration 
    disp(['In Iteration No ' num2str(it) ': WDOA Best Cost = ' num2str(BestCost(it))]);
    end

    %% Results
    figure;
    plot(BestCost,'k', 'LineWidth', 2);
    xlabel('ITR');
    ylabel('Cost Value');
    ax = gca; 
    ax.FontSize = 14; 
    ax.FontWeight='bold';
    set(gca,'Color','c')
    grid on;

    %% Statistics
    items=model.v;
    itemindex=BestSol.Sol.B;
    sizebins=size(itemindex);
    for i=1: sizebins(1,1)
    itemvalue{i}=items(itemindex{i});
    end;
    itemvalue=itemvalue';
    %
    disp(['Number of Items is ' num2str(model.n)]);
    disp(['Items are ' num2str(items)]);
    disp(['Bins size is ' num2str(model.Vmax)]);
    disp(['Selected bins is ' num2str(BestCost(end))]);
    disp(['Selected bins indexes are ']);
    itemindex
    disp(['Selected bins values are ']);
    itemvalue

    🎉3 参考文献

    部分理论来源于网络,如有侵权请联系删除。

    🌈4 Matlab代码及文章阅读

  • 相关阅读:
    ES6 的 export / import 常用方式总结
    凡尔码安全巡检卡替代传统纸质记录卡
    计算机毕业设计Javavue水果商城(源码+系统+mysql数据库+lw文档)
    Map获取其键和值
    python 第四章面向对象
    51单片机演奏兰亭序
    Spring的web集成 (Spring监听器)
    Python3高级特性(二)之迭代(Iterable)
    Java中的char、Character和CharSequence的区别
    【ESP8266开发备忘】
  • 原文地址:https://blog.csdn.net/weixin_46039719/article/details/127838824