多元宇宙优化算法(Matlab代码实现)

本文介绍了一种创新的自然启发式算法MVO,灵感来源于宇宙学概念。MVO通过比较与四种知名算法的表现,证实了其在优化问题上的竞争力,尤其在解决实际工程问题时展现出潜力。提供了Matlab代码示例以展示其应用。
摘要由CSDN通过智能技术生成

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

      自然一直是大多数基于群体的随机优化技术的主要灵感来源。顾名思义,它们随机执行优化。优化过程通常通过创建一组随机解决方案开始。然后,这些初始解决方案在预定义数量的步骤(称为迭代或生成)中组合、移动或演变。这几乎是所有基于群体的算法的主要框架。使算法与该领域的其他算法不同的是,在优化过程中组合、移动或发展解决方案的机制。

     本文提出了一种新颖的自然启发算法,称为多节优化器(MVO)。该算法的主要灵感基于宇宙学中的三个概念:白洞、黑洞和虫洞。开发这三个概念的数学模型分别用于执行探索、开发和局部搜索。MVO 算法首先以 19 个具有挑战性的测试问题为基准。然后将其应用于五个实际工程问题,以进一步确认其性能。为了验证结果,将MVO与四种众所周知的算法进行了比较:灰狼优化器,粒子群优化,遗传算法和引力搜索算法。结果表明,所提算法能够提供极具竞争力的结果,并且在大多数测试台上优于文献中的最佳算法。真实案例研究的结果也证明了MVO在解决未知搜索空间的实际问题方面的潜力。

📚2 运行结果

🎉3 参考文献

部分代码:

clear all;
close all;
clc;
format long g

% Initial parameters of the MODA algorithm
max_iter=100;
N=100;
ArchiveMaxSize=100;
obj_no=2;
Archive_F1=load('weldedbeam.txt');
%-------------------------- MOMVO -----------------------------------------
for i=1:5   % Numbver of independent runs
    
[Best_universe_score,Best_universe_pos,Archive_F]=MOMVO(max_iter,N,ArchiveMaxSize);
    
%% using the matlab codes for calculating metric values
hv = hypeIndicatorExact8(Archive_F, ones(1, obj_no), obj_no); 
gd = GD_matlab(Archive_F, Archive_F1);
epsilonNew = epsilon_matlab(Archive_F, Archive_F1);
spread = Spread_matlab(Archive_F, Archive_F1);
generalizedspread = GeneralizedSpread_matlab(Archive_F, Archive_F1);
igd = IGD_matlab(Archive_F, Archive_F1);
disp(['hv = ' num2str(hv)  '  GD = ' num2str(gd)  ' epsilon = ' num2str(epsilonNew)  '  Spread = ' num2str(spread)  '  GSpread = ' num2str(generalizedspread)  '  IGD = ' num2str(igd) ]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
GD=Generational_distance(Archive_F,Archive_F1);
S=metric_of_spacing(Archive_F);
DELTA= Diversity_metric_delta(Archive_F,Archive_F1);
MS=metric_of_maximum_spread(Archive_F,Archive_F1);
disp(['GD = ' num2str(GD)  '  S = ' num2str(S)  ' DELTA = ' num2str(DELTA)  '   MS = ' num2str(MS)   ]);   
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
plot(Archive_F1(:,1),Archive_F1(:,2),'Color','b','LineWidth',4);
 hold on
plot(Archive_F(:,1),Archive_F(:,2),'ro','LineWidth',2,...
        'MarkerEdgeColor','r',...
        'MarkerFaceColor','r',...
        'MarkerSize',6);
legend('True PF','Obtained PF');
title('MOMVO FOR Welded beam design PROBLEM');
xlabel('obj_1');
ylabel('obj_2');

    hold off
    
    fprintf('%d %20.15f %20.15f %20.15f %20.15f\n',i,GD,S,DELTA,MS);
    fprintf('%d %20.15f %20.15f %20.15f %20.15f %20.15f %20.15f\n',i,hv,gd,epsilonNew,spread,generalizedspread,igd);
    GGD(i)=GD;
    SS(i)=S;
    DELTAA(i)=DELTA;
    MSS(i)=MS;
    
    
hvd(i)=hv;
gdd(i)=gd;
epsilonNewd(i)=epsilonNew;
spreadd(i)=spread;
generalizedspreadd(i)=generalizedspread;
igdd(i)=igd;

    
end

Min_Generational_distance=min(GGD)
Average_Generational_distance=mean(GGD)
Max_Generational_distance=max(GGD)
SD_Generational_distance=std(GGD)

Min_metric_of_spacing=min(SS)
Average_metric_of_spacing=mean(SS)
Max_metric_of_spacing=max(SS)
SD_metric_of_spacing=std(SS)

Min_Diversity_metric_delta=min(DELTAA)
Average_Diversity_metric_delta=mean(DELTAA)
Max_Diversity_metric_delta=max(DELTAA)
SD_Diversity_metric_delta=std(DELTAA)

Min_metric_of_maximum_spread=min(MSS)
Average_metric_of_maximum_spread=mean(MSS)
Max_metric_of_maximum_spread=max(MSS)
SD_metric_of_maximum_spread=std(MSS)

Min_hypeIndicatorExact8=min(hvd)
Average_hypeIndicatorExact8=mean(hvd)
Max_hypeIndicatorExact8=max(hvd)
SD_hypeIndicatorExact8=std(hvd)

Min_Generational_distance1=min(gdd)
Average_Generational_distance1=mean(gdd)
Max_Generational_distance1=max(gdd)
SD_Generational_distance1=std(gdd)

Min_epsilon=min(epsilonNewd)
Average_epsilon=mean(epsilonNewd)
Max_epsilon=max(epsilonNewd)
SD_epsilon=std(epsilonNewd)


Min_spread=min(spreadd)
Average_spread=mean(spreadd)
Max_spread=max(spreadd)
SD_spread=std(spreadd)


Min_generalizedspread=min(generalizedspreadd)
Average_generalizedspread=mean(generalizedspreadd)
Max_generalizedspread=max(generalizedspreadd)
SD_generalizedspread=std(generalizedspreadd)


Min_IGD=min(igdd)
Average_IGD=mean(igdd)
Max_IGD=max(igdd)
SD_IGD=std(igdd)

Best_universe_score
Best_universe_pos

🌈4 Matlab代码实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值