基于NSGAII的多目标优化算法的MATLAB仿真
生活随笔
收集整理的這篇文章主要介紹了
基于NSGAII的多目标优化算法的MATLAB仿真
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.算法簡介
? ? ? ? ? NSGA-II在引入算術交叉算子的同時,提出并引入累積排序適應度賦值策略。實驗表明,INSGA具有更高的收斂速度和更好的種群多樣性。
2.部分核心代碼
clc; clear; close all; warning off; addpath 'func\'%% parametres settingnvar=3; % number of variable lb=[-4 -4 -4]; % lower bound ub=[4 4 4]; % upper boundnpop=40; % number of populationpc=0.7; % percent of crossover ncross=2*round(npop*pc/2); % number of crossover offspringpm=0.3; % percent of mutation nmut=round(npop*pm); % number of mutation offspringmaxiter=150;%% initializationempty.pos=[]; empty.cost=[]; empty.dcount=[]; % dominate count empty.dset=[]; % dominate set empty.rank=[]; empty.cdis=[]; % crowding distancepop=repmat(empty,npop,1);for i=1:npoppop(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 loopfor iter=1:maxiter% crossovercrosspop=repmat(empty,ncross,1);crosspop=crossover(crosspop,pop,ncross,F,nvar);% mutationmutpop=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%% resultspareto=pop(F{1},:);3.仿真演示
?
4.相關參考文獻
[1]劉旭紅, 劉玉樹, 張國英,等. 多目標優化算法NSGA-II的改進[J]. 計算機工程與應用, 2005, 41(15):3.
C82
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的基于NSGAII的多目标优化算法的MATLAB仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 17.matlab中各种文件的I/O操作
- 下一篇: 基于OCR的字母识别算法的matlab仿