日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

【优化求解】基于NSGA2算法求解多目标优化问题matlab代码

發布時間:2023/12/10 循环神经网络 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【优化求解】基于NSGA2算法求解多目标优化问题matlab代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?1 模型簡介

2 部分代碼

clc;

clear;

close all;

%% Problem Definition

data=load('mydata');

R=data.R;

model.R=R;

model.method='cvar';

model.alpha=0.95;

CostFunction=@(x) PortMOC(x,model);? ? ? % Cost Function

nVar=size(R,2);? ? ? ? ? ? ?% Number of Decision Variables

VarSize=[1 nVar];? ?% Size of Decision Variables Matrix

VarMin=0;? ? ? ? ? % Lower Bound of Variables

VarMax=1;? ? ? ? ? % Upper Bound of Variables

% Number of Objective Functions

nObj=numel(CostFunction(unifrnd(VarMin,VarMax,VarSize)));

%% NSGA-II Parameters

MaxIt=100;? ? ? % Maximum Number of Iterations

nPop=50;? ? ? ? % Population Size

pCrossover=0.7;? ? ? ? ? ? ? ? ? ? ? ? ?% Crossover Percentage

nCrossover=2*round(pCrossover*nPop/2);? % Number of Parnets (Offsprings)

pMutation=0.4;? ? ? ? ? ? ? ? ? ? ? ? ? % Mutation Percentage

nMutation=round(pMutation*nPop);? ? ? ? % Number of Mutants

mu=0.02;? ? ? ? ? ? ? ? ? ? % Mutation Rate

sigma=0.1*(VarMax-VarMin);? % Mutation Step Size

%% Initialization

empty_individual.Position=[];

empty_individual.Cost=[];

empty_individual.Out=[];

empty_individual.Rank=[];

empty_individual.DominationSet=[];

empty_individual.DominatedCount=[];

empty_individual.CrowdingDistance=[];

pop=repmat(empty_individual,nPop,1);

for i=1:nPop

? ??

? ? pop(i).Position=unifrnd(VarMin,VarMax,VarSize);

? ??

? ? [pop(i).Cost, pop(i).Out]=CostFunction(pop(i).Position);

? ??

end

% Non-Dominated Sorting

[pop, F]=NonDominatedSorting(pop);

% Calculate Crowding Distance

pop=CalcCrowdingDistance(pop,F);

% Sort Population

[pop, F]=SortPopulation(pop);

%% NSGA-II Main Loop

for it=1:MaxIt

? ??

? ? % Crossover

? ? popc=repmat(empty_individual,nCrossover/2,2);

? ? for k=1:nCrossover/2

? ? ? ??

? ? ? ? i1=randi([1 nPop]);

? ? ? ? p1=pop(i1);

? ? ? ??

? ? ? ? i2=randi([1 nPop]);

? ? ? ? p2=pop(i2);

? ? ? ??

? ? ? ? [popc(k,1).Position, popc(k,2).Position]=Crossover(p1.Position,p2.Position,VarMin,VarMax);

? ? ? ??

? ? ? ? [popc(k,1).Cost, popc(k,1).Out]=CostFunction(popc(k,1).Position);

? ? ? ? [popc(k,2).Cost, popc(k,2).Out]=CostFunction(popc(k,2).Position);

? ? ? ??

? ? end

? ? popc=popc(:);

? ??

? ? % Mutation

? ? popm=repmat(empty_individual,nMutation,1);

? ? for k=1:nMutation

? ? ? ??

? ? ? ? i=randi([1 nPop]);

? ? ? ? p=pop(i);

? ? ? ??

? ? ? ? popm(k).Position=Mutate(p.Position,mu,sigma,VarMin,VarMax);

? ? ? ??

? ? ? ? [popm(k).Cost, popm(k).Out]=CostFunction(popm(k).Position);

? ? ? ??

? ? end

? ??

? ? % Merge

? ? pop=[pop

? ? ? ? ?popc

? ? ? ? ?popm]; %#ok

? ? ?

? ? % Non-Dominated Sorting

? ? [pop, F]=NonDominatedSorting(pop);

? ? % Calculate Crowding Distance

? ? pop=CalcCrowdingDistance(pop,F);

? ? % Sort Population

? ? pop=SortPopulation(pop);

? ??

? ? % Truncate

? ? pop=pop(1:nPop);

? ??

? ? % Non-Dominated Sorting

? ? [pop, F]=NonDominatedSorting(pop);

? ? % Calculate Crowding Distance

? ? pop=CalcCrowdingDistance(pop,F);

? ? % Sort Population

? ? [pop, F]=SortPopulation(pop);

? ??

? ? % Store F1

? ? F1=pop(F{1});

? ??

? ? % Show Iteration Information

? ? disp(['Iteration ' num2str(it) ': Number of F1 Members = ' num2str(numel(F1))]);

? ??

? ? % Plot F1 Costs

? ? figure(1);

? ? PlotCosts(F1);

? ? pause(0.01);

? ??

end

%% Results

3 仿真結果

4 參考文獻

[1]張利. NSGA2算法及其在電力系統穩定器參數優化中的應用[D]. 西南交通大學, 2013.

**部分理論引用網絡文獻,若有侵權聯系博主刪除。**

總結

以上是生活随笔為你收集整理的【优化求解】基于NSGA2算法求解多目标优化问题matlab代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。