亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? genetic_algorithm.txt

?? 遺傳算法
?? TXT
字號:
遺傳算法實例: 

也是自己找來的,原代碼有少許錯誤,本人都已更正了,調試運行都通過了的。 
對于初學者,尤其是還沒有編程經驗的非常有用的一個文件 
遺傳算法實例 

% 下面舉例說明遺傳算法 % 
% 求下列函數的最大值 % 
% f(x)=10*sin(5x)+7*cos(4x) x∈[0,10] % 
% 將 x 的值用一個10位的二值形式表示為二值問題,一個10位的二值數提供的分辨率是每為 (10-0)/(2^10-1)≈0.01 。 % 
% 將變量域 [0,10] 離散化為二值域 [0,1023], x=0+10*b/1023, 其中 b 是 [0,1023] 中的一個二值數。 % 
% % 
%--------------------------------------------------------------------------------------------------------------% 
%--------------------------------------------------------------------------------------------------------------% 

% 編程 
%----------------------------------------------- 
% 2.1初始化(編碼) 
% initpop.m函數的功能是實現群體的初始化,popsize表示群體的大小,chromlength表示染色體的長度(二值數的長度), 
% 長度大小取決于變量的二進制編碼的長度(在本例中取10位)。 
%遺傳算法子程序 
%Name: initpop.m 
%初始化 
function pop=initpop(popsize,chromlength) 
pop=round(rand(popsize,chromlength)); % rand隨機產生每個單元為 {0,1} 行數為popsize,列數為chromlength的矩陣, 
% roud對矩陣的每個單元進行圓整。這樣產生的初始種群。 

% 2.2 計算目標函數值 
% 2.2.1 將二進制數轉化為十進制數(1) 
%遺傳算法子程序 
%Name: decodebinary.m 
%產生 [2^n 2^(n-1) ... 1] 的行向量,然后求和,將二進制轉化為十進制 
function pop2=decodebinary(pop) 
[px,py]=size(pop); %求pop行和列數 
for i=1:py 
pop1(:,i)=2.^(py-i).*pop(:,i); 
end 
pop2=sum(pop1,2); %求pop1的每行之和 

% 2.2.2 將二進制編碼轉化為十進制數(2) 
% decodechrom.m函數的功能是將染色體(或二進制編碼)轉換為十進制,參數spoint表示待解碼的二進制串的起始位置 
% (對于多個變量而言,如有兩個變量,采用20為表示,每個變量10為,則第一個變量從1開始,另一個變量從11開始。本例為1), 
% 參數1ength表示所截取的長度(本例為10)。 
%遺傳算法子程序 
%Name: decodechrom.m 
%將二進制編碼轉換成十進制 
function pop2=decodechrom(pop,spoint,length) 
pop1=pop(:,spoint:spoint+length-1); 
pop2=decodebinary(pop1); 

% 2.2.3 計算目標函數值 
% calobjvalue.m函數的功能是實現目標函數的計算,其公式采用本文示例仿真,可根據不同優化問題予以修改。 
%遺傳算法子程序 
%Name: calobjvalue.m 
%實現目標函數的計算 
function [objvalue]=calobjvalue(pop) 
temp1=decodechrom(pop,1,10); %將pop每行轉化成十進制數 
x=temp1*10/1023; %將二值域 中的數轉化為變量域 的數 
objvalue=10*sin(5*x)+7*cos(4*x); %計算目標函數值 

% 2.3 計算個體的適應值 
%遺傳算法子程序 
%Name:calfitvalue.m 
%計算個體的適應值 
function fitvalue=calfitvalue(objvalue) 
global Cmin; 
Cmin=0; 
[px,py]=size(objvalue); 
for i=1:px 
if objvalue(i)+Cmin>0 
temp=Cmin+objvalue(i); 
else 
temp=0.0; 
end 
fitvalue(i)=temp; 
end 
fitvalue=fitvalue'; 

% 2.4 選擇復制 
% 選擇或復制操作是決定哪些個體可以進入下一代。程序中采用賭輪盤選擇法選擇,這種方法較易實現。 
% 根據方程 pi=fi/∑fi=fi/fsum ,選擇步驟: 
% 1) 在第 t 代,由(1)式計算 fsum 和 pi 
% 2) 產生 {0,1} 的隨機數 rand( .),求 s=rand( .)*fsum 
% 3) 求 ∑fi≥s 中最小的 k ,則第 k 個個體被選中 
% 4) 進行 N 次2)、3)操作,得到 N 個個體,成為第 t=t+1 代種群 
%遺傳算法子程序 
%Name: selection.m 
%選擇復制 
function [newpop]=selection(pop,fitvalue) 
totalfit=sum(fitvalue); %求適應值之和 
fitvalue=fitvalue/totalfit; %單個個體被選擇的概率 
fitvalue=cumsum(fitvalue); %如 fitvalue=[1 2 3 4],則 cumsum(fitvalue)=[1 3 6 10] 
[px,py]=size(pop); 
ms=sort(rand(px,1)); %從小到大排列 
fitin=1; 
newin=1; 
while newin<=px 
if(ms(newin))<fitvalue(fitin) 
newpop(newin)=pop(fitin); 
newin=newin+1; 
else 
fitin=fitin+1; 
end 
end 

% 2.5 交叉 
% 交叉(crossover),群體中的每個個體之間都以一定的概率 pc 交叉,即兩個個體從各自字符串的某一位置 
% (一般是隨機確定)開始互相交換,這類似生物進化過程中的基因分裂與重組。例如,假設2個父代個體x1,x2為: 
% x1=0100110 
% x2=1010001 
% 從每個個體的第3位開始交叉,交又后得到2個新的子代個體y1,y2分別為: 
% y1=0100001 
% y2=1010110 
% 這樣2個子代個體就分別具有了2個父代個體的某些特征。利用交又我們有可能由父代個體在子代組合成具有更高適合度的個體。 
% 事實上交又是遺傳算法區別于其它傳統優化方法的主要特點之一。 
%遺傳算法子程序 
%Name: crossover.m 
%交叉 
function [newpop]=crossover(pop,pc) 
[px,py]=size(pop); 
newpop=ones(size(pop)); 
for i=1:2:px-1 
if(rand<pc) 
cpoint=round(rand*py); 
newpop(i,:)=[pop(i,1:cpoint),pop(i+1,cpoint+1:py)]; 
newpop(i+1,:)=[pop(i+1,1:cpoint),pop(i,cpoint+1:py)]; 
else 
newpop(i,:)=pop(i); 
newpop(i+1,:)=pop(i+1); 
end 
end 

% 2.6 變異 
% 變異(mutation),基因的突變普遍存在于生物的進化過程中。變異是指父代中的每個個體的每一位都以概率 pm 翻轉,即由“1”變為“0”, 
% 或由“0”變為“1”。遺傳算法的變異特性可以使求解過程隨機地搜索到解可能存在的整個空間,因此可以在一定程度上求得全局最優解。 
%遺傳算法子程序 
%Name: mutation.m 
%變異 
function [newpop]=mutation(pop,pm) 
[px,py]=size(pop); 
newpop=ones(size(pop)); 
for i=1:px 
if(rand<pm) 
mpoint=round(rand*py); 
if mpoint<=0 
mpoint=1; 
end 
newpop(i)=pop(i); 
if any(newpop(i,mpoint))==0 
newpop(i,mpoint)=1; 
else 
newpop(i,mpoint)=0; 
end 
else 
newpop(i)=pop(i); 
end 
end 

% 2.7 求出群體中最大得適應值及其個體 
%遺傳算法子程序 
%Name: best.m 
%求出群體中適應值最大的值 
function [bestindividual,bestfit]=best(pop,fitvalue) 
[px,py]=size(pop); 
bestindividual=pop(1,:); 
bestfit=fitvalue(1); 
for i=2:px 
if fitvalue(i)>bestfit 
bestindividual=pop(i,:); 
bestfit=fitvalue(i); 
end 
end 

% 2.8 主程序 
%遺傳算法主程序 
%Name:genmain05.m 
clear 
clf 
popsize=20; %群體大小 
chromlength=10; %字符串長度(個體長度) 
pc=0.6; %交叉概率 
pm=0.001; %變異概率 

pop=initpop(popsize,chromlength); %隨機產生初始群體 
for i=1:20 %20為迭代次數 
[objvalue]=calobjvalue(pop); %計算目標函數 
fitvalue=calfitvalue(objvalue); %計算群體中每個個體的適應度 
[newpop]=selection(pop,fitvalue); %復制 
[newpop]=crossover(pop,pc); %交叉 
[newpop]=mutation(pop,pc); %變異 
[bestindividual,bestfit]=best(pop,fitvalue); %求出群體中適應值最大的個體及其適應值 
y(i)=max(bestfit); 
n(i)=i; 
pop5=bestindividual; 
x(i)=decodechrom(pop5,1,chromlength)*10/1023; 
pop=newpop; 
end 

fplot('10*sin(5*x)+7*cos(4*x)',[0 10]) 
hold on 
plot(x,y,'r*') 
hold off 

[z index]=max(y); %計算最大值及其位置 
x5=x(index)%計算最大值對應的x值 
y=z 

【問題】求f(x)=x 10*sin(5x) 7*cos(4x)的最大值,其中0<=x<=9 
【分析】選擇二進制編碼,種群中的個體數目為10,二進制編碼長度為20,交叉概率為0.95,變異概率為0.08 
【程序清單】 
%編寫目標函數 
function[sol,eval]=fitness(sol,options) 
x=sol(1); 
eval=x 10*sin(5*x) 7*cos(4*x); 
%把上述函數存儲為fitness.m文件并放在工作目錄下 
initPop=initializega(10,[0 9],'fitness');%生成初始種群,大小為10 
[x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',... 
[0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]) %25次遺傳迭代 
運算借過為:x = 
7.8562 24.8553(當x為7.8562時,f(x)取最大值24.8553) 
注:遺傳算法一般用來取得近似最優解,而不是最優解。 
遺傳算法實例2 
【問題】在-5<=Xi<=5,i=1,2區間內,求解 
f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2 x2.^2)))-exp(0.5*(cos(2*pi*x1) cos(2*pi*x2))) 22.71282的最小值。 
【分析】種群大小10,最大代數1000,變異率0.1,交叉率0.3 
【程序清單】 
%源函數的matlab代碼 
function [eval]=f(sol) 
numv=size(sol,2); 
x=sol(1:numv); 
eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv) 22.71282; 
%適應度函數的matlab代碼 
function [sol,eval]=fitness(sol,options) 
numv=size(sol,2)-1; 
x=sol(1:numv); 
eval=f(x); 
eval=-eval; 
%遺傳算法的matlab代碼 
bounds=ones(2,1)*[-5 5]; 
[p,endPop,bestSols,trace]=ga(bounds,'fitness') 
注:前兩個文件存儲為m文件并放在工作目錄下,運行結果為 
p = 
0.0000 -0.0000 0.0055 
大家可以直接繪出f(x)的圖形來大概看看f(x)的最值是多少,也可是使用優化函數來驗證。matlab命令行執行命令: 
fplot('x 10*sin(5*x) 7*cos(4*x)',[0,9]) 
evalops是傳遞給適應度函數的參數,opts是二進制編碼的精度,termops是選擇maxGenTerm結束函數時傳遞個maxGenTerm的參數,即遺傳代數。xoverops是傳遞給交叉函數的參數。mutops是傳遞給變異函數的參數。 

【問題】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0<=x<=9 
【分析】選擇二進制編碼,種群中的個體數目為10,二進制編碼長度為20,交叉概率為0.95,變異概率為0.08 
【程序清單】 
%編寫目標函數 
function[sol,eval]=fitness(sol,options) 
x=sol(1); 
eval=x+10*sin(5*x)+7*cos(4*x); 
%把上述函數存儲為fitness.m文件并放在工作目錄下 
initPop=initializega(10,[0 9],'fitness');%生成初始種群,大小為10 
[x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',... 
[0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]) %25次遺傳迭代 
運算借過為:x = 
7.8562 24.8553(當x為7.8562時,f(x)取最大值24.8553) 
注:遺傳算法一般用來取得近似最優解,而不是最優解。 
遺傳算法實例2 
【問題】在-5<=Xi<=5,i=1,2區間內,求解 
f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282的最小值。 
【分析】種群大小10,最大代數1000,變異率0.1,交叉率0.3 
【程序清單】 
%源函數的matlab代碼 
function [eval]=f(sol) 
numv=size(sol,2); 
x=sol(1:numv); 
eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282; 
%適應度函數的matlab代碼 
function [sol,eval]=fitness(sol,options) 
numv=size(sol,2)-1; 
x=sol(1:numv); 
eval=f(x); 
eval=-eval; 
%遺傳算法的matlab代碼 
bounds=ones(2,1)*[-5 5]; 
[p,endPop,bestSols,trace]=ga(bounds,'fitness') 
注:前兩個文件存儲為m文件并放在工作目錄下,運行結果為 
p = 
0.0000 -0.0000 0.0055 
大家可以直接繪出f(x)的圖形來大概看看f(x)的最值是多少,也可是使用優化函數來驗證。matlab命令行執行命令: 
fplot('x+10*sin(5*x)+7*cos(4*x)',[0,9]) 
evalops是傳遞給適應度函數的參數,opts是二進制編碼的精度,termops是選擇maxGenTerm結束函數時傳遞個maxGenTerm的參數,即遺傳代數。xoverops是傳遞給交叉函數的參數。mutops是傳遞給變異函數的參數。

















generation number是200,population size是100,crossover rate是0.6,mutation rate是0.05,選擇的方法是roulette wheel 和elitism各使用一半兒。請問這個遺傳算法的程序用matlab怎么編?
問題補充:這個程序是用來優化成員函數的 
成員函數被優化前在[0 100]這個區間里是等分為5個部分的,優化后,變成不等分的了。
提問者: yobey615 - 試用期 一級 其他回答    共 1 條
generation number和population size是兩個大循環,一個套在另外一個里面,crossover rate和mutation rate是事先聲明,至于何時用roulette wheel 何時用elitism,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合久久综合九色| 亚洲精品日产精品乱码不卡| 亚洲男人的天堂在线aⅴ视频| 日韩国产精品91| 国产黄人亚洲片| 在线播放国产精品二区一二区四区| 久久久美女艺术照精彩视频福利播放| 亚洲mv在线观看| 95精品视频在线| 久久久无码精品亚洲日韩按摩| 亚洲高清久久久| 91麻豆免费观看| 国产精品色在线| 国产乱人伦精品一区二区在线观看| 欧美在线视频日韩| 亚洲人成人一区二区在线观看| 国产一区 二区 三区一级| 欧美一区二区三区在线观看视频| 亚洲黄色尤物视频| 色综合欧美在线| 国产精品色噜噜| 国模冰冰炮一区二区| 91麻豆精品国产综合久久久久久 | 岛国精品一区二区| 日韩精品中文字幕在线一区| 午夜视频久久久久久| 欧美日本国产一区| 亚瑟在线精品视频| 欧美乱熟臀69xxxxxx| 亚洲午夜羞羞片| 精品视频一区二区不卡| 亚洲一区二区三区四区在线观看| voyeur盗摄精品| 国产精品国产三级国产aⅴ原创| 国产aⅴ综合色| 国产精品久久夜| www.欧美日韩国产在线| 亚洲精品国产一区二区三区四区在线| 成人蜜臀av电影| 国产精品国产三级国产aⅴ中文| 成人动漫一区二区三区| 国产婷婷精品av在线| 99视频国产精品| 亚洲久本草在线中文字幕| 日本精品一级二级| 石原莉奈在线亚洲二区| 日韩精品一区二区三区在线| 日韩综合在线视频| 日韩欧美一级在线播放| 国产自产2019最新不卡| 国产精品免费看片| 一道本成人在线| 亚洲一级二级在线| 精品欧美一区二区久久| 国产不卡在线视频| 夜夜嗨av一区二区三区网页| 5858s免费视频成人| 国产精品影视在线观看| 亚洲婷婷国产精品电影人久久| 91福利精品视频| 久久er精品视频| 中文字幕一区三区| 在线播放日韩导航| 成人的网站免费观看| 日韩高清电影一区| 国产精品视频在线看| 91精品国产福利| av激情综合网| 青青草国产成人av片免费| 中文字幕免费在线观看视频一区| 欧美午夜免费电影| 国产成人免费视频一区| 亚洲国产精品久久人人爱蜜臀| 精品国产区一区| 欧美午夜精品理论片a级按摩| 久久99久久99精品免视看婷婷| 中文字幕一区二区5566日韩| 欧美裸体一区二区三区| 成人午夜电影网站| 日本欧美一区二区三区乱码| 日韩美女视频一区| 精品国产不卡一区二区三区| 欧美亚洲一区二区在线| 国产sm精品调教视频网站| 午夜久久久久久电影| 日韩理论片在线| 国产免费久久精品| 日韩欧美专区在线| 欧美午夜一区二区| va亚洲va日韩不卡在线观看| 国产在线视频一区二区三区| 亚洲777理论| 亚洲五码中文字幕| 夜夜揉揉日日人人青青一国产精品| 久久亚洲春色中文字幕久久久| 欧美一区二区三区在线看| 欧美性大战久久久久久久蜜臀| 99久久婷婷国产| 成人a免费在线看| 国产成人av一区二区三区在线| 天天爽夜夜爽夜夜爽精品视频| 亚洲日本在线看| 中文字幕亚洲区| 中文字幕在线不卡| 国产欧美日韩综合| 国产女主播在线一区二区| 精品久久一二三区| 日韩一级片在线观看| 欧美日韩成人综合天天影院| 日本高清不卡一区| 91久久精品一区二区三区| 99久久精品免费看国产免费软件| 成人动漫一区二区| 99综合影院在线| 91视频www| 91久久精品日日躁夜夜躁欧美| 91亚洲男人天堂| 一本高清dvd不卡在线观看| 99久久久国产精品| 欧美亚日韩国产aⅴ精品中极品| 99精品1区2区| 欧美在线三级电影| 日韩一区国产二区欧美三区| 日韩视频免费观看高清完整版在线观看| 欧美疯狂做受xxxx富婆| 欧美一三区三区四区免费在线看| 欧美一级片免费看| 精品国产髙清在线看国产毛片| 国产亚洲一本大道中文在线| 亚洲欧洲av在线| 亚洲欧美欧美一区二区三区| 亚洲男同性视频| 亚洲bdsm女犯bdsm网站| 狠狠色综合日日| 国产成人精品亚洲日本在线桃色| 成人午夜视频在线| 色香蕉成人二区免费| 欧美酷刑日本凌虐凌虐| www一区二区| 一区二区三区日韩| 麻豆国产91在线播放| 成人毛片视频在线观看| 日本韩国一区二区三区视频| 91精彩视频在线| 日韩亚洲欧美在线观看| 久久久不卡网国产精品二区| 亚洲另类色综合网站| 男男视频亚洲欧美| 成人黄色免费短视频| 欧美日韩在线免费视频| 精品国产免费人成电影在线观看四季| 国产欧美一区二区三区鸳鸯浴 | 国产成人高清在线| 色婷婷av一区二区三区软件| 日韩欧美三级在线| 日韩毛片精品高清免费| 日本一区中文字幕| 成人av免费在线观看| 日韩欧美在线不卡| 综合色天天鬼久久鬼色| 久久国产精品99久久人人澡| 色哟哟精品一区| 欧美成人精品1314www| 亚洲码国产岛国毛片在线| 久久国产夜色精品鲁鲁99| av不卡免费电影| 日韩欧美一卡二卡| 亚洲v日本v欧美v久久精品| 国产成人午夜电影网| 91麻豆精品国产91久久久资源速度 | 欧美一级二级三级蜜桃| 中文字幕巨乱亚洲| 美女任你摸久久| 欧美日韩午夜在线| 自拍偷拍亚洲欧美日韩| 国产iv一区二区三区| 欧美电影免费观看完整版| 亚洲一区中文在线| 99久久久久久| 国产精品嫩草影院com| 国内外精品视频| 3d动漫精品啪啪一区二区竹菊| 国产精品色在线观看| 国产综合色在线视频区| 日韩免费在线观看| 午夜免费久久看| 欧美日韩极品在线观看一区| 中文字幕一区二| bt7086福利一区国产| 国产亚洲精品资源在线26u| 九九九久久久精品| 日韩欧美国产小视频| 天天色天天操综合| 91精品国产综合久久久久久久久久| 亚洲精品乱码久久久久久久久 | 亚洲韩国精品一区| 色婷婷av久久久久久久| 亚洲欧美日韩人成在线播放| 波多野结衣91| 日韩久久一区二区|