基于NSGAII的多目标优化算法的MATLAB仿真

1.算法简介

          NSGA-II在引入算术交叉算子的同时,提出并引入累积排序适应度赋值策略。实验表明,INSGA具有更高的收敛速度和更好的种群多样性。

2.部分核心代码

clc;
clear;
close all;
warning off;
addpath 'func\'

%% parametres setting

nvar=3;        %  number of variable
lb=[-4 -4 -4]; % lower bound
ub=[4 4 4];     % upper bound

npop=40;     % number of population


pc=0.7;       % percent of crossover
ncross=2*round(npop*pc/2);  % number of crossover offspring

pm=0.3;        %  percent of mutation
nmut=round(npop*pm);  % number of mutation offspring


maxiter=150;


%% initialization

empty.pos=[];
empty.cost=[];
empty.dcount=[];   % dominate count
empty.dset=[];     % dominate set
empty.rank=[];      
empty.cdis=[];      % crowding distance


pop=repmat(empty,npop,1);

for i=1:npop
    pop(i).pos=lb+rand(1,nvar).*(ub-lb);
    pop(i).cost=fitness(pop(i).pos);
end

[pop F]=non_dominated_sorting(pop);
pop=calculated_crowding_distance(pop,F);
pop=sorting(pop);

%% main loop

for iter=1:maxiter

    % crossover
    crosspop=repmat(empty,ncross,1);
     crosspop=crossover(crosspop,pop,ncross,F,nvar);
     
     % mutation
     mutpop=repmat(empty,nmut,1);
     mutpop=mutation(mutpop,pop,nmut,lb,ub,nvar);
     
     [pop]=[pop;crosspop;mutpop];
    
     [pop F]=non_dominated_sorting(pop);
      pop=calculated_crowding_distance(pop,F);
      pop=sorting(pop);
      
      pop=pop(1:npop);
      
      [pop F]=non_dominated_sorting(pop);
      pop=calculated_crowding_distance(pop,F);
      pop=sorting(pop);
      
      
      C=[pop.cost]';
      
      figure(1)
      plotpareto(F,C)
      
      
      
      disp([ ' iter =   '  num2str(iter) ' BEST F1 = ' num2str(min(C(:,1)))  ' BEST F2  = ' num2str(min(C(:,2))) ' NF1 = '  num2str(length(F{1})) ]) 
    
    
    
    
    
end

%% results

pareto=pop(F{1},:);




3.仿真演示

 

4.相关参考文献

[1]刘旭红, 刘玉树, 张国英,等. 多目标优化算法NSGA-II的改进[J]. 计算机工程与应用, 2005, 41(15):3.

C82

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值