基于NSGAII的多目标优化算法的MATLAB仿真
Posted fpga&matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于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(F1)) ])
end
%% results
pareto=pop(F1,:);
3.仿真演示
4.相关参考文献
[1]刘旭红, 刘玉树, 张国英,等. 多目标优化算法NSGA-II的改进[J]. 计算机工程与应用, 2005, 41(15):3.
C82
以上是关于基于NSGAII的多目标优化算法的MATLAB仿真的主要内容,如果未能解决你的问题,请参考以下文章
基于NSGAII多目标遗传优化的WSN无线传感器网络最优覆盖率matlab仿真