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

遺傳演算法多目標優化matlab

發布時間: 2022-02-15 11:00:40

❶ 運用MATLAB遺傳演算法工具箱求解非線性多目標優化問題,煩請高人指點!

matlab中沒有rep這個函數,需要你自己定義這個函數。

❷ 請問如何用matlab解決有權重的多目標優化問題

遺傳演算法優化

❸ 求遺傳演算法優化BP網路(多目標)的實例,要有matlab代碼,謝謝啦,有的話請發送至[email protected]

已經發到您郵箱,請查收附件:GA降維GA優化BP.rar、遺傳演算法優化BP神經網路-非線性函數擬合.rar。
我是在MATLAB R2009a環境下運行調試的。

❹ matlab遺傳演算法工具箱多目標函數優化的例子誰有,

Matlab遺傳演算法工具箱幫助文件自帶多目標函數優化例子。

❺ Matlab遺傳演算法計算多目標優化

太難了。。。。。

❻ matlab 多目標優化的實際例子

遺傳演算法GA求解無約束最優化問題,採用遺傳演算法求函數的最小值:
f(x,y)=x^4-16x^2-5xy+y^4-16y^2-5y

函數如下:
f=inline('x(1)^4-16*x(1)^2-5*x(1)*x(2)+x(2)^4-16*x(2)^2-5*x(2)','x');
l=[-5 -5];
u=[5 5];
x0=[0 0];
Np=30;
Nb=[12 12];
Pc=0.5;
Pm=0.01;
eta=0.8;
kmax=200;
[xos,fos]=fminsearch(f,x0)
[xo_gen,fo_gen]=genetic(f,x0,l,u,Np,Nb,Pc,Pm,eta,kmax)

其中調用的遺傳演算法函數為如下幾個

genetic函數

function [xo,fo]=genetic(f,x0,l,u,Np,Nb,Pc,Pm,eta,kmax)

N=length(x0);

if nargin<10,kmax=100;end
if nargin<9|eta>1|eta<=0,eta=1;end
if nargin<8,Pm=0.01;end
if nargin<7,Pc=0.5;end
if nargin<6,Nb=8*ones(1,N);end
if nargin<5,Np=10;end

NNb=sum(Nb);
xo=x0(:)';l=l(:)';u=u(:)';
fo=feval(f,xo);
X(1,:)=xo;

for n=2:Np,X(n,:)=1+rand(size(x0)).*(u-1);
P=gen_encode(X,Nb,l,u);
for k=1:kmax
X=gen_decode(P,Nb,l,u);
for n=1:Np,fX(n)=feval(f,X(n,:));end
[fxb,nb]=min(fX);
if fxb<fo,fo=fxb;xo=X(nb,:);end
fX1=max(fxb)-fX;
fXm=fX1(nb);
if fXm<eps,return;end
for n=1:Np
X(n,:)=X(n,:)+eta*(fXm-fX1(n))/fXm*(X(nb,:)-X(n,:));
end
P=gen_encode(X,Nb,l,u);

is=shuffle([1:Np]);
for n=1:2:Np-1
if rand<Pc
P(is(n:n+1),:)=crossover(P(is(n:n+1),:),Nb);
end
end

P=mutation(P,Nb,Pm);
end

gen_encode函數

function P=gen_encode(X,Nb,l,u)
Np=size(X,l);
N=length(Nb);
for n=1:Np
b2=0;
for m=1:N
b1=b2+1;
b2=b2+Nb(m);
Xnm=(2^Nb(m)-1)*(X(n,m)-l(m))/(u(m)-l(m));
P(n,b1:b2)=dec2bin(Xnm,Nb(m));

end
end

gen_decode函數

function X=gen_decode(P,Nb,l,u)

Np=size(P,l);
N=length(Nb);

for n=1:Np
b2=0;
for m=1:N
b1=b2+1;
b2=b1+Nb(m)-1;
X(n,m)=bin2dec(P(n,b1:b2))*(u(m)-l(m))/(2^Nb(m)-1)+l(m);
end
end

crossover函數

function chrms2=crossover(chrms2,Nb)

Nbb=length(Nb);
b2=0;

for m=1:Nbb
b1=b2+1;
bi=b1+mod(floor(rand*Nb(m)),Nb(m));
b2=b2+Nb(m);
tmp=chrms2(1,bi:b2);
chrms2(1,bi:b2)=chrms2(2,bi:b2);
chrms2(2,bi:b2)=tmp;
end

mutation函數

function P=mutation(P,Nb,Pm)

Nbb=length(Nb);

for n=1:size(P,1)
b2=0;
for m=1:Nbb
if rand <Pm
b1=b2+1;
bi=b1+mod(floor(rand*Nb(m)),Nb(m));
b2=b2+Nb(m);
P(n,bi)=~P(n,bi);
end
end
end

shuffle函數

function is=shuffle(is)

N=length(is);
for n=N:-1:2
in=ceil(rand*(n-1));
tmp=is(in);is(in)=is(n);is(n)=tmp;
end

運行結果為

xos =

3.0453 3.1031

fos =

-186.4878

xo_gen=
2.9805 3.3150

fo_gen=
-184.2604

❼ 求遺傳演算法車輛調度優化問題的建模模型和MATLAB源代碼

1、要看你組合優化是屬於哪種問題,一般的組合優化都是混合整數線性或非線性的,那麼就不行了,因此要對遺傳演算法改進才能計算。2、如果有現成的工具箱求解你的組合優化問題肯定要方便些,但碰到具體問題,可能要對參數進行一些設置更改,所以最好能有編程基礎,那樣就可以自己修改工具箱裡面的參數或策略了對你的補充問題,組合優化問題一般都是用matlab和lingo實現吧。建議買一本數學建模的書看一看,都涉及到組合優化問題,也可以下載論文看看。lingo對編程要簡單些,主要是求混合規劃,缺點是似乎還不能用上多目標問題,一般的組合優化都屬於多目標問題。但是matlab功能強大的多。

❽ 跪求一份多目標優化遺傳演算法 matlab源代碼,不甚感激。郵 箱991882239

我給你一個標准遺傳演算法程序供你參考:
該程序是遺傳演算法優化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程序Pareto 遺傳多目標演算法

您好,GA不論是在應用、演算法設計上,還是在基礎理論上,均取得了長足的發展,應用也非常廣泛.本文通過對基本遺傳演算法的研究,以及對其在多目標優化問題上的實現,在遺傳演算法領域進行探討,並通過程序來驗證.在多目標優化問題的研究中,所採用的一些方法在一些算例中獲得了比較好的Pareto解集.
遺傳演算法作為求解全局優化問題的有力工具之一,應用十分廣泛,目前主要應用在以下幾個領域:
(1)基於遺傳演算法的機器學習(GeneticBaseMachineLearning).這一新的學習機制給解決人工智慧中知識獲取和知識優化精煉的瓶頸難題帶來了希望。
(2)遺傳演算法與其他計算智能方法的相互滲透和結合.
(3)並行處理的遺傳演算法的研究十分活躍.這一研究不僅是對遺傳演算法本身的發展,而且對新一代智能計算機體系結構的研究都是十分重要的.(4)遺傳演算法在數據挖掘(DataMining)領域中的應用。

❿ MATLAB遺傳演算法工具箱求解非線性多目標優化問題

將下屬兩個目標函數分別保存在兩個m文件中
function f1=func1(x) %第一目標函數
f1=x(:,1).*x(:,1)./4+x(:,2).*x(:,2)./4;
function f2=func2(x) %第二目標函數
f2=x(:,1).*(1-x(:,2))+10;

function GA()
clear;clc;close all
NIND=100; %個體數目
MAXGEN=50; %最大遺傳代數
NVAR=2; %變數個數
PRECI=20; %變數的二進制位數
GGAP=0.9; %代溝
trace1=[];trace2=[];trace3=[]; %性能跟蹤
%建立區域描述器
% rep([PRECI],[1,NVAR])
FieldD=[rep([PRECI],[1,NVAR]);rep([1;2],[1,NVAR]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND,NVAR*PRECI); %初始種群
v=bs2rv(Chrom,FieldD) ; %初始種群十進制轉換
gen=1;
while gen<MAXGEN,
[NIND,N]=size(Chrom);
M=fix(NIND/2);
ObjV1=func1(v(1:M,:)); %分組後第一目標函數值
FitnV1=ranking(ObjV1); %分配適應度值
SelCh1=select('sus',Chrom(1:M,:),FitnV1,GGAP); %選擇
ObjV2=func2(v(M+1:NIND,:)); %分組後第二目標函數值
FitnV2=ranking(ObjV2); %分配適應度值
SelCh2=select('sus',Chrom(M+1:NIND,:),FitnV2,GGAP); %選擇
SelCh=[SelCh1;SelCh2]; %合並
SelCh=recombin('xovsp',SelCh,0.7); %重組
Chrom=mut(SelCh); %變異
v=bs2rv(Chrom,FieldD);
trace1(gen,1)=min(func1(v));
trace1(gen,2)=sum(func1(v))/length(func1(v));
trace2(gen,1)=min(func2(v));
trace2(gen,2)=sum(func2(v))/length(func2(v));
trace3(gen,1)=min(func1(v)+func2(v));
trace3(gen,2)=sum(func1(v))/length(func1(v))+sum(func2(v))/length(func2(v));
gen=gen+1;
end
figure(1);clf;
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid on;
legend('解的變化','種群均值的變化')
xlabel('迭代次數');ylabel('目標函數值');
figure(2);clf;
plot(trace2(:,1));hold on;
plot(trace2(:,2),'-.');
plot(trace2(:,1),'.');
plot(trace2(:,2),'.');grid;
legend('解的變化','種群均值的變化');
xlabel('迭代次數');ylabel('目標函數值');
figure(3);clf;
plot(trace3(:,1));hold on;
plot(trace3(:,2),'-.');
plot(trace3(:,1),'.');
plot(trace3(:,2),'.');grid;
legend('解的變化','種群均值的變化');
xlabel('迭代次數');ylabel('目標函數值');
figure(4);clf;plot(func1(v));hold on;
plot(func2(v),'r-.');grid;

熱點內容
解壓後的文件怎麼按照名稱排列 發布:2024-12-28 03:56:50 瀏覽:766
內網電腦顯示無法連接到伺服器 發布:2024-12-28 03:51:26 瀏覽:240
社保郵政卡初始密碼多少 發布:2024-12-28 03:44:16 瀏覽:158
陰陽師腳本免費 發布:2024-12-28 03:39:50 瀏覽:23
會務源碼 發布:2024-12-28 03:27:11 瀏覽:190
如何直接用密保手機找回密碼 發布:2024-12-28 03:17:11 瀏覽:577
電腦向伺服器傳文件的工具 發布:2024-12-28 03:05:17 瀏覽:783
編程搶手機 發布:2024-12-28 02:59:44 瀏覽:443
存儲器佔用多少位元組 發布:2024-12-28 02:56:39 瀏覽:190
魔獸和聯盟哪個對電腦配置要求高 發布:2024-12-28 02:43:26 瀏覽:81