基於遺傳演算法的kmeans
Ⅰ matlab怎麼運行基於遺傳演算法的vrp
function [x fx string]=fun_SuiJiSuanFa2(N,genLenth,Pc,Pm,downbound,upbound,generation)
%[x fx string]=fun_SuiJiSuanFa2(6,16,0.7,0.01,-3,3,100)
%f 表示函數
%N表示染色體種群大小
%genLenth表示染色體長度
%Pc表示交叉概率
%Pm表示突變概率
%downbound
%upbound
%generation循環代數
%進制編碼,此處編寫為二進制
num=2;
initdata=randi([0 num-1],N,genLenth);
%二進制編碼的權值
weight=(num).^(genLenth/2-1:-1:0);
weights=repmat(weight,N,1);
%保存每代的最好值和平均值,
meanally=zeros(1,generation);
maxally=zeros(1,generation);
Nowx=zeros(generation,genLenth);
for k=1:generation
%解碼後的整數
allx1=sum(initdata(:,1:genLenth/2).*weights,2);
allx2=sum(initdata(:,genLenth/2+1:end).*weights,2);
%映射到取值范圍
delt=(upbound-downbound)/(num^(genLenth/2)-1);
allx1=allx1.*delt+downbound;
allx2=allx2.*delt+downbound;
%染色體的適應性
ally=f(allx1,allx2);
%平均值,最大值
meanally(k)=mean(ally);
maxally(k)=max(ally);
%找下標,確定是哪條染色體
index=find(ally==maxally(k));
Nowx(k,:)=initdata(index(1),:);
%最大值沒有提高就取上次的
if(k>=2&&maxally(k)<maxally(k-1))
maxally(k)=maxally(k-1);
Nowx(k,:)=Nowx(k-1,:);
end
%染色體的適應性比率
ratio=ally./sum(ally);
%交叉,變異
%??交叉幾個,從第幾個開始。
%此處只交叉1個(總共才6個),隨機給一個。
sumRatio=cumsum(ratio);
data=zeros(N,genLenth);
for i=1:N/2
Select1=find(sumRatio>=rand);
Select2=find(sumRatio>=rand);
data(2*i-1,:)=initdata(Select1(1),:);
data(2*i,:)=initdata(Select2(1),:);
if(rand<Pc)
%交叉
location=randi([1,genLenth]);
temp=data(2*i-1,location:end);
data(2*i-1,location:end)=data(2*i,location:end);
data(2*i,location:end)=temp;
else
%變異
if(rand<Pm)
location=randi([1,genLenth]);
data(2*i-1,location)=1-data(2*i-1,location);
end
if(rand<Pm)
location=randi([1,genLenth]);
data(2*i,location)=1-data(2*i,location);
end
end
end
initdata=data;
end
fx=max(maxally);
lastIndex=find(maxally==fx);
string=Nowx(lastIndex(1),:);
x(1)=sum(string(1:genLenth/2).*weight).*(upbound-downbound)/(num^(genLenth/2)-1)+downbound;
x(2)=sum(string(1+genLenth/2:end).*weight).*(upbound-downbound)/(num^(genLenth/2)-1)+downbound;
%繪制性能圖
%figure,hold on;
clf;figure(1),hold on;
plot((1:k)',meanally,'b.-');
plot((1:k)',maxally,'r.:');
end
function fun=f(x,y)
fun=(1-x).^2.*exp(-x.^2-(1+y).^2)-(x-x.^3-y.^3).*exp(-x.^2-y.^2);
%fun=-(x-1).^2-3.*(y-2).^2+100;
end
Ⅱ K均值聚類演算法的意義、目的、研究內容
簡要說一下:
圖像分割
基本原理:根據圖像的組成結構和應用需求將圖像劃分為若干個互不相交的子區域的過程。這些子區域四某種意義下具有共同屬性的像素的連通集合。常用方法有:
1) 以區域為對象進行分割,以相似性原則作為分割的依據,即可根據圖像的灰度、色彩、變換關系等方面的特徵相似來劃分圖像的子區域,並將各像素劃歸到相應物體或區域的像素聚類方法,即區域法;
2) 以物體邊界為對象進行分割,通過直接確定區域間的邊界來實現分割;
3) 先檢測邊緣像素,再將邊緣像素連接起來構成邊界形成分割。
具體的閾值分割:
閾值分割方法分為以下3類:
1) 全局閾值:T=T[p(x,y)〕,即僅根據f(x,y)來選取閾值,閾值僅與各個圖像像素的本身性質有關。
2) 局部閾值:T=T[f(x,y),p(x,y)],閾值與圖像像素的本身性質和局部區域性質相關。
3) 動態閾值:T=T[x,y,f(x,y),p(x,y)],閾值與像素坐標,圖像像素的本身性質和局部區域性質相關。
全局閾值對整幅圖像僅設置一個分割閾值,通常在圖像不太復雜、灰度分布較集中的情況下採用;局部閾值則將圖像劃分為若干個子圖像,並對每個子圖像設定局部閾值;動態閾值是根據空間信息和灰度信息確定。局部閾值分割法雖然能改善分割效果,但存在幾個缺點:
1) 每幅子圖像的尺寸不能太小,否則統計出的結果無意義。
2) 每幅圖像的分割是任意的,如果有一幅子圖像正好落在目標區域或背景區域,而根據統計結果對其進行分割,也許會產生更差的結果。
3) 局部閾值法對每一幅子圖像都要進行統計,速度慢,難以適應實時性的要求。
全局閾值分割方法在圖像處理中應用比較多,它在整幅圖像內採用固定的閾值分割圖像。考慮到全局閾值分割方法應用的廣泛性,本文所著重討論的就是全局閾值分割方法中的直方圖雙峰法和基於遺傳演算法的最大類間方差法。在本節中,將重點討論灰度直方圖雙峰法,最大類間方差法以及基於遺傳演算法的最大類間方差法留待下章做繼續深入地討論。
參詳書目當然是《數字圖像處理》,及網上的一些有用文檔;工具:MATLAB或VC++
Ⅲ 基於遺傳演算法的人臉識別
1、人體面貌識別技術的內容
人體面貌識別技術包含三個部分:
(1) 人體面貌檢測
面貌檢測是指在動態的場景與復雜的背景中判斷是否存在面像,並分離出這種面像。一般有下列幾種方法:
①參考模板法
首先設計一個或數個標准人臉的模板,然後計算測試採集的樣品與標准模板之間的匹配程度,並通過閾值來判斷是否存在人臉;
②人臉規則法
由於人臉具有一定的結構分布特徵,所謂人臉規則的方法即提取這些特徵生成相應的規則以判斷測試樣品是否包含人臉;
③樣品學習法
這種方法即採用模式識別中人工神經網路的方法,即通過對面像樣品集和非面像樣品集的學習產生分類器;
④膚色模型法
這種方法是依據面貌膚色在色彩空間中分布相對集中的規律來進行檢測。
⑤特徵子臉法
這種方法是將所有面像集合視為一個面像子空間,並基於檢測樣品與其在子孔間的投影之間的距離判斷是否存在面像。
值得提出的是,上述5種方法在實際檢測系統中也可綜合採用。
(2)人體面貌跟蹤
面貌跟蹤是指對被檢測到的面貌進行動態目標跟蹤。具體採用基於模型的方法或基於運動與模型相結合的方法。
此外,利用膚色模型跟蹤也不失為一種簡單而有效的手段。
(3)人體面貌比對
面貌比對是對被檢測到的面貌像進行身份確認或在面像庫中進行目標搜索。這實際上就是說,將采樣到的面像與庫存的面像依次進行比對,並找出最佳的匹配對象。所以,面像的描述決定了面像識別的具體方法與性能。目前主要採用特徵向量與面紋模板兩種描述方法:
①特徵向量法
該方法是先確定眼虹膜、鼻翼、嘴角等面像五官輪廓的大小、位置、距離等屬性,然後再計算出它們的幾何特徵量,而這些特徵量形成一描述該面像的特徵向量。
②面紋模板法
該方法是在庫中存貯若干標准面像模板或面像器官模板,在進行比對時,將采樣面像所有象素與庫中所有模板採用歸一化相關量度量進行匹配。
此外,還有採用模式識別的自相關網路或特徵與模板相結合的方法。
人體面貌識別技術的核心實際為「局部人體特徵分析」和「圖形/神經識別演算法。」這種演算法是利用人體面部各器官及特徵部位的方法。如對應幾何關系多數據形成識別參數與資料庫中所有的原始參數進行比較、判斷與確認。一般要求判斷時間低於1秒。
2、人體面貌的識別過程
一般分三步:
(1)首先建立人體面貌的面像檔案。即用攝像機採集單位人員的人體面貌的面像文件或取他們的照片形成面像文件,並將這些面像文件生成面紋(Faceprint)編碼貯存起來。
(2)獲取當前的人體面像
即用攝像機捕捉的當前出入人員的面像,或取照片輸入,並將當前的面像文件生成面紋編碼。
(3)用當前的面紋編碼與檔案庫存的比對
即將當前的面像的面紋編碼與檔案庫存中的面紋編碼進行檢索比對。上述的「面紋編碼」方式是根據人體面貌臉部的本質特徵和開頭來工作的。這種面紋編碼可以抵抗光線、皮膚色調、面部毛發、發型、眼鏡、表情和姿態的變化,具有強大的可靠性,從而使它可以從百萬人中精確地辯認出某個人。
人體面貌的識別過程,利用普通的圖像處理設備就能自動、連續、實時地完成。
Ⅳ 基於直方圖的k均值聚類彩色圖像分割方法
簡要說一下:
圖像分割
基本原理:根據圖像的組成結構和應用需求將圖像劃分為若干個互不相交的子區域的過程。這些子區域四某種意義下具有共同屬性的像素的連通集合。常用方法有:
1) 以區域為對象進行分割,以相似性原則作為分割的依據,即可根據圖像的灰度、色彩、變換關系等方面的特徵相似來劃分圖像的子區域,並將各像素劃歸到相應物體或區域的像素聚類方法,即區域法;
2) 以物體邊界為對象進行分割,通過直接確定區域間的邊界來實現分割;
3) 先檢測邊緣像素,再將邊緣像素連接起來構成邊界形成分割。
具體的閾值分割:
閾值分割方法分為以下3類:
1) 全局閾值:T=T[p(x,y)〕,即僅根據f(x,y)來選取閾值,閾值僅與各個圖像像素的本身性質有關。
2) 局部閾值:T=T[f(x,y),p(x,y)],閾值與圖像像素的本身性質和局部區域性質相關。
3) 動態閾值:T=T[x,y,f(x,y),p(x,y)],閾值與像素坐標,圖像像素的本身性質和局部區域性質相關。
全局閾值對整幅圖像僅設置一個分割閾值,通常在圖像不太復雜、灰度分布較集中的情況下採用;局部閾值則將圖像劃分為若干個子圖像,並對每個子圖像設定局部閾值;動態閾值是根據空間信息和灰度信息確定。局部閾值分割法雖然能改善分割效果,但存在幾個缺點:
1) 每幅子圖像的尺寸不能太小,否則統計出的結果無意義。
2) 每幅圖像的分割是任意的,如果有一幅子圖像正好落在目標區域或背景區域,而根據統計結果對其進行分割,也許會產生更差的結果。
3) 局部閾值法對每一幅子圖像都要進行統計,速度慢,難以適應實時性的要求。
全局閾值分割方法在圖像處理中應用比較多,它在整幅圖像內採用固定的閾值分割圖像。考慮到全局閾值分割方法應用的廣泛性,本文所著重討論的就是全局閾值分割方法中的直方圖雙峰法和基於遺傳演算法的最大類間方差法。在本節中,將重點討論灰度直方圖雙峰法,最大類間方差法以及基於遺傳演算法的最大類間方差法留待下章做繼續深入地討論。
參詳書目當然是《數字圖像處理》,及網上的一些有用文檔;工具:MATLAB或VC++
Ⅳ 基於遺傳演算法的多目標網路優化演算法的實現代碼
Yovf5網站優化所考慮的因素不僅僅是搜索引擎,也包括充分滿足用戶的需求特徵版、清晰的網站導航、完權善的在線幫助等,在此基礎上使得網站功能和信息發揮最好的效果。也就是以企業網站為基礎,與網路服務商(如搜索引擎等)、合作夥伴、顧客、供應商、銷售商等網路營銷環境中各方面因素建立良好的關系。搜索引擎會將站點彼此間的內容做一些相關性的數據比對,然後再由瀏覽器將這些內容以最快速且接近最完整的方式,呈現給搜索者。網站優化白帽方法,網站優化的白帽法包括遵循搜索引擎哪些可接受哪些不能接受的指導方針。他們的建議一般是為用戶創造內容,而非搜索引擎、是讓這些內容易於被蜘蛛機器人索引、並且不嘗試對搜索引擎系統耍花招。網站員經常於設計或構建他們的網站時,犯下致命錯誤、疏忽「毒害」該站以致排名不會很好。ivoet
Ⅵ 基於遺傳演算法的自動組卷系統的設計與實現(畢業設計) 求大神給一個系統
代碼如下:
public class Problem
{
public Problem()
{
ID = 0;
Type = 0;
Score = 0;
Difficulty = 0.00;
Points = new List<int>();
}
public Problem(Problem p)
{
this.ID = p.ID;
this.Type = p.Type;
this.Score = p.Score;
this.Difficulty = p.Difficulty;
this.Points = p.Points;
}
/// <summary>
/// 編號
/// </summary>
public int ID { get; set; }
/// <summary>
/// 題型(1、2、3、4、5對應單選,多選,判斷,填空,問答)
/// </summary>
public int Type { get; set; }
/// <summary>
/// 分數
/// </summary>
public int Score { get; set; }
/// <summary>
/// 難度系數
/// </summary>
public double Difficulty { get; set; }
/// <summary>
/// 知識點
/// </summary>
public List<int> Points { get; set; }
}
Ⅶ 急求基於遺傳演算法的自適應濾波器matlab模擬程序代碼謝謝
處理的重要基礎。自適應濾波器可以不必事先給定信號及雜訊的自相關函數,它可以利版用前一時權刻已獲得的濾波器參數自動地調節現時刻的濾波器參數使得濾波器輸出和未知的輸入之間的均方誤差最小化,從而它可以實現最優濾波。
自適應濾波器的演算法有很多,有RLS(遞歸最小二乘法)和LMS(最小均方演算法)等。自適應LMS演算法是一種很有用且很簡單的估計梯度的方法,在信號處理中得到廣泛應用。
本論文主要研究了自適應濾波器的基本結構和原理,然後介紹了最小均方誤差演算法(LMS演算法),並完成了一種基於MATLAB平台的自適應LMS自適應濾波器的設計,同時實現了對信號進行初步的降噪處理。
通過模擬,我們實現了LMS自適應濾波演算法,並從結果得知步長和濾波器的階數是濾波器中很重要的兩個參數,並通過修改它們證實了這一點,其中步長影響著收斂時間,而且階數的大小也會大大地影響自適應濾波器的性能。