當前位置:首頁 » 操作系統 » 多目標遺傳演算法

多目標遺傳演算法

發布時間: 2022-01-25 00:27:26

❶ 急求一份多目標遺傳演算法matlab代碼!

我給你一個標准遺傳演算法程序供你參考:
該程序是遺傳演算法優化BP神經網路函數極值尋優:
%% 該代碼為基於神經網路遺傳演算法的系統極值尋優
%% 清空環境變數
clc
clear

%% 初始化遺傳演算法參數
%初始化參數
maxgen=100; %進化代數,即迭代次數
sizepop=20; %種群規模
pcross=[0.4]; %交叉概率選擇,0和1之間
pmutation=[0.2]; %變異概率選擇,0和1之間

lenchrom=[1 1]; %每個變數的字串長度,如果是浮點變數,則長度都為1
bound=[-5 5;-5 5]; %數據范圍

indivials=struct('fitness',zeros(1,sizepop), 'chrom',[]); %將種群信息定義為一個結構體
avgfitness=[]; %每一代種群的平均適應度
bestfitness=[]; %每一代種群的最佳適應度
bestchrom=[]; %適應度最好的染色體

%% 初始化種群計算適應度值
% 初始化種群
for i=1:sizepop
%隨機產生一個種群
indivials.chrom(i,:)=Code(lenchrom,bound);
x=indivials.chrom(i,:);
%計算適應度
indivials.fitness(i)=fun(x); %染色體的適應度
end
%找最好的染色體
[bestfitness bestindex]=min(indivials.fitness);
bestchrom=indivials.chrom(bestindex,:); %最好的染色體
avgfitness=sum(indivials.fitness)/sizepop; %染色體的平均適應度
% 記錄每一代進化中最好的適應度和平均適應度
trace=[avgfitness bestfitness];

%% 迭代尋優
% 進化開始
for i=1:maxgen
i
% 選擇
indivials=Select(indivials,sizepop);
avgfitness=sum(indivials.fitness)/sizepop;
%交叉
indivials.chrom=Cross(pcross,lenchrom,indivials.chrom,sizepop,bound);
% 變異
indivials.chrom=Mutation(pmutation,lenchrom,indivials.chrom,sizepop,[i maxgen],bound);

% 計算適應度
for j=1:sizepop
x=indivials.chrom(j,:); %解碼
indivials.fitness(j)=fun(x);
end

%找到最小和最大適應度的染色體及它們在種群中的位置
[newbestfitness,newbestindex]=min(indivials.fitness);
[worestfitness,worestindex]=max(indivials.fitness);
% 代替上一次進化中最好的染色體
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=indivials.chrom(newbestindex,:);
end
indivials.chrom(worestindex,:)=bestchrom;
indivials.fitness(worestindex)=bestfitness;

avgfitness=sum(indivials.fitness)/sizepop;

trace=[trace;avgfitness bestfitness]; %記錄每一代進化中最好的適應度和平均適應度
end
%進化結束

%% 結果分析
[r c]=size(trace);
plot([1:r]',trace(:,2),'r-');
title('適應度曲線','fontsize',12);
xlabel('進化代數','fontsize',12);ylabel('適應度','fontsize',12);
axis([0,100,0,1])
disp('適應度 變數');
x=bestchrom;
% 窗口顯示
disp([bestfitness x]);
提問者評價
謝謝!

❷ 怎麼評價MATLAB中gamultiobj函數(多目標遺傳演算法)的計算結果比如下面的函數和其部分結果

您好,多目標遺傳演算法可以得到Pareto Front圖,即您展示的結果。至於評價方法應由您自己確定,比如最簡單的線性加權函數評價方法,評價值Evalue=w1*minf1(x1,x2)+w2*minf2(x1,x2),其中w1+w2=1。
總的來說,就是依據自己的需要進行評價,matlab中不含有評價方法(因為評價方法很靈活)。

❸ 遺傳演算法 求解多目標過程 有實例更好

多目標是相對傳統的單目標而言的,最基本的遺傳演算法都是單目標的,是說要優化的目標函數只有一個,要麼求最大,要麼求最小,而多目標問題一般是求解多個待優化的目標函數共同的非劣解。建議你去找找關於多目標優化的文章,看一篇,能看明白的話這個問題你就懂了。

❹ matlab 非線性多目標的遺傳演算法問題

用matlab的ga()遺傳演算法函數求非線性多目標的最小值(或最大值),其解決幫助如下:

1、首先建立自定義目標函數,y=FitFun(x)

2、其二建立自定義約束函數,[c,ceq]=NonCon(x)

3、最後,根據已知條件,用ga()函數求解。

為了說明問題,沒有用你隨意給的問題。下面,給你一個例子作參考。

FitFun.m

function f = FitFun(x,a1)

f = exp(x(1))*(4*x(1)^2 + 2*x(2)^2 + 4*x(1)*x(2) + 2*x(2) + a1);

end

NonCon.m

function [c,ceq] = NonCon(x,a2)

c = [1.5 + x(1)*x(2) - x(1) - x(2);-x(1)*x(2) - a2];

ceq = [];

end

ga_main.m

a1 = 1; a2 = 10;

options = gaoptimset('MutationFcn',@mutationadaptfeasible);

x = ga(@(x)FitFun(x,a1),2,[],[],[],[],[],[],@(x)NonCon(x,a2),options)

運行結果

❺ 多目標優化遺傳演算法求解混合整數規劃問題

可以參考多目標尋優遺傳方法的進化思路,把遺傳演算法修改為針對整數規劃的方法就可以

❻ 對於解決多目標優化問題,遺傳演算法、粒子群、模擬退火哪個比較好啊哪位大神能分析一下么

個人感覺是遺傳演算法吧,當然可以和模擬退火演算法結合來使用。
多目標遺傳演算法可解決多目標優化問題,和模擬退火演算法相結合時還能強化局部搜索能力。

❼ 誰能通俗的講解一下NSGA-II多目標遺傳演算法

NSGA-II特別的地方就在它的選擇過程上,其他的和其他演算法也沒什麼區別。

選擇過程分兩個部分:
1. 把種群分成一組Pareto非支配集。一個非支配集里的個體不被當前或之後非支配集里的任何個體支配。方法就是每次選出所有不被任何其他個體支配的非支配個體,從種群里刪除當一個非支配集,然後剩下的再不停重復這個過程,直到取完。
2. 按crowd distance排序。就是在各個維度左右相鄰個體的距離之和。

選擇的時候,先從前往後一個個取非支配集。取到手裡的個體數量大於等於需要的數量了,最後一個非支配集里再怎麼選?選crowd distance大的。

❽ 什麼是多目標遺傳演算法

http://www.easyworm.com/chinese/document/Chapter4.htm

比較復雜,解釋起來不知是否可行,你先去這看看吧。
大學圖書館里這些書一找一大堆,可以去翻翻

❾ 跪求一份多目標多約束遺傳演算法的代碼,matlab ,c ,c++都可以!不勝感激

熱點內容
ios應用上傳 發布:2024-09-08 09:39:41 瀏覽:438
ios儲存密碼哪裡看 發布:2024-09-08 09:30:02 瀏覽:870
opensslcmake編譯 發布:2024-09-08 09:08:48 瀏覽:653
linux下ntp伺服器搭建 發布:2024-09-08 08:26:46 瀏覽:744
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:173
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:780
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:101
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:209
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995