㈠ c語言實現基於遺傳演算法的時延受限組播路由選擇(受限最小生成樹)
啊~~我們也學遺傳演算法呢~
代碼已經發到你的郵箱里了,請及時查看的~
有什麼問題可以Hi我呀,交流下
㈡ 遺傳演算法 在NS2路由協議模擬的實現 代碼或者步驟
好象說的不十分清楚。
㈢ 求助 ,matlab中使用遺傳演算法
沒有句柄.....不是自變數定的問題.點開始菜單\運行\
接下來輸入services.msc按回車在其中找到Terminal Services 雙擊,按照提示將此服務啟動就可以了,但是運行完程序後,建議關掉此務,這樣可以保障你的計算機在網路中更安全.
㈣ 遺傳演算法有哪些方向
遺傳演算法研究方向主要有以下幾個方面:
1. 遺傳演算法基礎理論研究
在遺傳演算法中,群體規模和遺傳運算元的控制參數的選取 是必要的試驗參數。
遺傳演算法的收斂也是遺傳演算法基礎理論研究方向之一。
2. 遺傳演算法的分類系統
分類系統屬於基於遺傳演算法的機器學習中的一類,包括一個簡單 的基於串規則的並行生成子系統、規則評價子系統和遺傳演算法子系統 。
分類系統被人們越來越多地應用在科學、工程和經濟領域中,是目 前遺傳演算法研究中一個十分活躍的領域。
3. 分布並行遺傳演算法
分布並行遺傳算 法的研究表明,只要通過保持多個群體和恰當控制群體間的相互作用 來模擬並行執行過程,即使不使用並行計算機,也能提高演算法的執行效 率。
4. 遺傳進化演算法
模擬自然進化過程可以產生魯棒的計算機演算法--進化演算法。其餘兩種演算法是進化規劃和進化策略 。
5. 遺傳神經網路
包括連接權、網路結構和學習規則的進化。
㈤ 遺傳演算法的優缺點
優點:
1、遺傳演算法是以決策變數的編碼作為運算對象,可以直接對集合、序列、矩陣、樹、圖等結構對象進行操作。這樣的方式一方面有助於模擬生物的基因、染色體和遺傳進化的過程,方便遺傳操作運算元的運用。
另一方面也使得遺傳演算法具有廣泛的應用領域,如函數優化、生產調度、自動控制、圖像處理、機器學習、數據挖掘等領域。
2、遺傳演算法直接以目標函數值作為搜索信息。它僅僅使用適應度函數值來度量個體的優良程度,不涉及目標函數值求導求微分的過程。因為在現實中很多目標函數是很難求導的,甚至是不存在導數的,所以這一點也使得遺傳演算法顯示出高度的優越性。
3、遺傳演算法具有群體搜索的特性。它的搜索過程是從一個具有多個個體的初始群體P(0)開始的,一方面可以有效地避免搜索一些不必搜索的點。
另一方面由於傳統的單點搜索方法在對多峰分布的搜索空間進行搜索時很容易陷入局部某個單峰的極值點,而遺傳演算法的群體搜索特性卻可以避免這樣的問題,因而可以體現出遺傳演算法的並行化和較好的全局搜索性。
4、遺傳演算法基於概率規則,而不是確定性規則。這使得搜索更為靈活,參數對其搜索效果的影響也盡可能的小。
5、遺傳演算法具有可擴展性,易於與其他技術混合使用。以上幾點便是遺傳演算法作為優化演算法所具備的優點。
缺點:
1、遺傳演算法在進行編碼時容易出現不規范不準確的問題。
2、由於單一的遺傳演算法編碼不能全面將優化問題的約束表示出來,因此需要考慮對不可行解採用閾值,進而增加了工作量和求解時間。
3、遺傳演算法效率通常低於其他傳統的優化方法。
4、遺傳演算法容易出現過早收斂的問題。
(5)遺傳演算法的計算機網路安全路由擴展閱讀
遺傳演算法的機理相對復雜,在Matlab中已經由封裝好的工具箱命令,通過調用就能夠十分方便的使用遺傳演算法。
函數ga:[x, fval,reason]= ga(@fitnessfun, nvars, options)x是最優解,fval是最優值,@fitnessness是目標函數,nvars是自變數個數,options是其他屬性設置。系統默認求最小值,所以在求最大值時應在寫函數文檔時加負號。
為了設置options,需要用到下面這個函數:options=gaoptimset('PropertyName1', 'PropertyValue1', 'PropertyName2', 'PropertyValue2','PropertyName3', 'PropertyValue3', ...)通過這個函數就能夠實現對部分遺傳演算法的參數的設置。
㈥ 遺傳演算法都能幹啥啊
遺傳演算法的應用有很多,一般用於解決工程優化問題。像選址問題、排班問題、路線優化、參數優化、函數求極值等等
㈦ 遺傳演算法的基本原理
遺傳演算法的基本原理和方法
一、編碼
編碼:把一個問題的可行解從其解空間轉換到遺傳演算法的搜索空間的轉換方法。
解碼(解碼):遺傳演算法解空間向問題空間的轉換。
二進制編碼的缺點是漢明懸崖(Hamming Cliff),就是在某些相鄰整數的二進制代碼之間有很大的漢明距離,使得遺傳演算法的交叉和突變都難以跨越。
格雷碼(Gray Code):在相鄰整數之間漢明距離都為1。
(較好)有意義的積木塊編碼規則:所定編碼應當易於生成與所求問題相關的短距和低階的積木塊;最小字元集編碼規則,所定編碼應採用最小字元集以使問題得到自然的表示或描述。
二進制編碼比十進制編碼搜索能力強,但不能保持群體穩定性。
動態參數編碼(Dynamic Paremeter Coding):為了得到很高的精度,讓遺傳演算法從很粗糙的精度開始收斂,當遺傳演算法找到一個區域後,就將搜索現在在這個區域,重新編碼,重新啟動,重復這一過程,直到達到要求的精度為止。
編碼方法:
1、 二進制編碼方法
缺點:存在著連續函數離散化時的映射誤差。不能直接反映出所求問題的本身結構特徵,不便於開發針對問題的專門知識的遺傳運算運算元,很難滿足積木塊編碼原則
2、 格雷碼編碼:連續的兩個整數所對應的編碼之間僅僅只有一個碼位是不同的,其餘碼位都相同。
3、 浮點數編碼方法:個體的每個基因值用某一范圍內的某個浮點數來表示,個體的編碼長度等於其決策變數的位數。
4、 各參數級聯編碼:對含有多個變數的個體進行編碼的方法。通常將各個參數分別以某種編碼方法進行編碼,然後再將他們的編碼按照一定順序連接在一起就組成了表示全部參數的個體編碼。
5、 多參數交叉編碼:將各個參數中起主要作用的碼位集中在一起,這樣它們就不易於被遺傳運算元破壞掉。
評估編碼的三個規范:完備性、健全性、非冗餘性。
二、選擇
遺傳演算法中的選擇操作就是用來確定如何從父代群體中按某種方法選取那些個體遺傳到下一代群體中的一種遺傳運算,用來確定重組或交叉個體,以及被選個體將產生多少個子代個體。
常用的選擇運算元:
1、 輪盤賭選擇(Roulette Wheel Selection):是一種回放式隨機采樣方法。每個個體進入下一代的概率等於它的適應度值與整個種群中個體適應度值和的比例。選擇誤差較大。
2、 隨機競爭選擇(Stochastic Tournament):每次按輪盤賭選擇一對個體,然後讓這兩個個體進行競爭,適應度高的被選中,如此反復,直到選滿為止。
3、 最佳保留選擇:首先按輪盤賭選擇方法執行遺傳演算法的選擇操作,然後將當前群體中適應度最高的個體結構完整地復制到下一代群體中。
4、 無回放隨機選擇(也叫期望值選擇Excepted Value Selection):根據每個個體在下一代群體中的生存期望來進行隨機選擇運算。方法如下
(1) 計算群體中每個個體在下一代群體中的生存期望數目N。
(2) 若某一個體被選中參與交叉運算,則它在下一代中的生存期望數目減去0.5,若某一個體未被選中參與交叉運算,則它在下一代中的生存期望數目減去1.0。
(3) 隨著選擇過程的進行,若某一個體的生存期望數目小於0時,則該個體就不再有機會被選中。
5、 確定式選擇:按照一種確定的方式來進行選擇操作。具體操作過程如下:
(1) 計算群體中各個個體在下一代群體中的期望生存數目N。
(2) 用N的整數部分確定各個對應個體在下一代群體中的生存數目。
(3) 用N的小數部分對個體進行降序排列,順序取前M個個體加入到下一代群體中。至此可完全確定出下一代群體中M個個體。
6、無回放余數隨機選擇:可確保適應度比平均適應度大的一些個體能夠被遺傳到下一代群體中,因而選擇誤差比較小。
7、均勻排序:對群體中的所有個體按期適應度大小進行排序,基於這個排序來分配各個個體被選中的概率。
8、最佳保存策略:當前群體中適應度最高的個體不參與交叉運算和變異運算,而是用它來代替掉本代群體中經過交叉、變異等操作後所產生的適應度最低的個體。
9、隨機聯賽選擇:每次選取幾個個體中適應度最高的一個個體遺傳到下一代群體中。
10、排擠選擇:新生成的子代將代替或排擠相似的舊父代個體,提高群體的多樣性。
三、交叉
遺傳演算法的交叉操作,是指對兩個相互配對的染色體按某種方式相互交換其部分基因,從而形成兩個新的個體。
適用於二進制編碼個體或浮點數編碼個體的交叉運算元:
1、單點交叉(One-pointCrossover):指在個體編碼串中只隨機設置一個交叉點,然後再該點相互交換兩個配對個體的部分染色體。
2、兩點交叉與多點交叉:
(1) 兩點交叉(Two-pointCrossover):在個體編碼串中隨機設置了兩個交叉點,然後再進行部分基因交換。
(2) 多點交叉(Multi-pointCrossover)
3、均勻交叉(也稱一致交叉,UniformCrossover):兩個配對個體的每個基因座上的基因都以相同的交叉概率進行交換,從而形成兩個新個體。
4、算術交叉(ArithmeticCrossover):由兩個個體的線性組合而產生出兩個新的個體。該操作對象一般是由浮點數編碼表示的個體。
四、變異
遺傳演算法中的變異運算,是指將個體染色體編碼串中的某些基因座上的基因值用該基因座上的其它等位基因來替換,從而形成以給新的個體。
以下變異運算元適用於二進制編碼和浮點數編碼的個體:
1、基本位變異(SimpleMutation):對個體編碼串中以變異概率、隨機指定的某一位或某幾位僅因座上的值做變異運算。
2、均勻變異(UniformMutation):分別用符合某一范圍內均勻分布的隨機數,以某一較小的概率來替換個體編碼串中各個基因座上的原有基因值。(特別適用於在演算法的初級運行階段)
3、邊界變異(BoundaryMutation):隨機的取基因座上的兩個對應邊界基因值之一去替代原有基因值。特別適用於最優點位於或接近於可行解的邊界時的一類問題。
4、非均勻變異:對原有的基因值做一隨機擾動,以擾動後的結果作為變異後的新基因值。對每個基因座都以相同的概率進行變異運算之後,相當於整個解向量在解空間中作了一次輕微的變動。
5、高斯近似變異:進行變異操作時用符號均值為P的平均值,方差為P2的正態分布的一個隨機數來替換原有的基因值。
㈧ 遺傳演算法思想
首先初始化,包括種群的大小,編碼的方案,遺傳的代數,變異的概率,等等;
然後進行選擇操作;
接著是將選擇的個體進行交叉,;
然後再進行選擇,並將選擇的個體進行變異;
最後就是更新最優值了。
大體過程就是這樣了。
㈨ 遺傳演算法研究進展
遺傳演算法[56,53]研究的興起是在20世紀80年代末和90年代初期,但它的歷史起源可追溯到20世紀60年代初期。早期的研究大多以對自然遺傳系統的計算機模擬為主。早期遺傳演算法的研究特點是側重於對一些復雜的操作的研究。雖然其中像自動博弈、生物系統模擬、模式識別和函數優化等給人以深刻的印象,但總的來說這是一個無明確目標的發展時期,缺乏帶有指導性的理論和計算工具的開拓。這種現象直到20世紀70年代中期由於Holland和De Jong的創造性研究成果的發表才得到改觀。當然,早期的研究成果對於遺傳演算法的發展仍然有一定的影響,尤其是其中一些有代表性的技術和方法已為當前的遺傳演算法所吸收和發展。
在遺傳演算法作為搜索方法用於人工智慧系統中之前,已有不少生物學家用計算機來模擬自然遺傳系統。尤其是Fraser的模擬研究,他於1962年提出了和現在的遺傳演算法十分相似的概念和思想。但是,Fraser和其他一些學者並未認識到自然遺傳演算法可以轉化為人工遺傳演算法。Holland教授及其學生不久就認識到這一轉化的重要性,Holland認為比起尋找這種或那種具體的求解問題的方法來說,開拓一種能模擬自然選擇遺傳機制的帶有一般性的理論和方法更有意義。在這一時期,Holland不但發現了基於適應度的人工遺傳選擇的基本作用,而且還對群體操作等進行了認真的研究。1965年,他首次提出了人工遺傳操作的重要性,並把這些應用於自然系統和人工系統中。
1967年,Bagley在他的論文中首次提出了遺傳演算法(genetic algorithm)這一術語,並討論了遺傳演算法在自動博弈中的應用。他所提出的包括選擇、交叉和變異的操作已與目前遺傳演算法中的相應操作十分接近。尤其是他對選擇操作做了十分有意義的研究。他認識到,在遺傳進化過程的前期和後期,選擇概率應合適地變動。為此,他引入了適應度定標(scaling)概念,這是目前遺傳演算法中常用的技術。同時,他也首次提出了遺傳演算法自我調整概念,即把交叉和變異的概率融於染色體本身的編碼中,從而可實現演算法自我調整優化。盡管Bagley沒有對此進行計算機模擬實驗,但這些思想對於後來遺傳演算法的發展所起的作用是十分明顯的。
在同一時期,Rosenberg也對遺傳演算法進行了研究,他的研究依然是以模擬生物進化為主,但他在遺傳操作方面提出了不少獨特的設想。1970年Cavicchio把遺傳演算法應用於模式識別中。實際上他並未直接涉及到模式識別,而僅用遺傳演算法設計一組用於識別的檢測器。Cavicchio對於遺傳操作以及遺傳演算法的自我調整也做了不少有特色的研究。
Weinberg於1971年發表了題為《活細胞的計算機模擬》的論文。由於他和Rosenberg一樣注意於生物遺傳的模擬,所以他對遺傳演算法的貢獻有時被忽略。實際上,他提出的多層次或多級遺傳演算法至今仍給人以深刻的印象。
第一個把遺傳演算法用於函數優化的是Hollstien。1971年他在論文《計算機控制系統中的人工遺傳自適應方法》中闡述了遺傳演算法用於數字反饋控制的方法。實際上,他主要是討論了對於二變數函數的優化問題。其中,對於優勢基因控制、交叉和變異以及各種編碼技術進行了深入的研究。
1975年在遺傳演算法研究的歷史上是十分重要的一年。這一年,Holland出版了他的著名專著《自然系統和人工系統的適配》。該書系統地闡述了遺傳演算法的基本理論和方法,並提出了對遺傳演算法的理論研究和發展極為重要的模式理論(schemata theory)。該理論首次確認了結構重組遺傳操作對於獲得隱並行性的重要性。直到這時才知道遺傳操作到底在干什麼,為什麼又幹得那麼出色,這對於以後陸續開發出來的遺傳操作具有不可估量的指導作用。
同年,De Jong完成了他的重要論文《遺傳自適應系統的行為分析》。他在該論文中所做的研究工作可看作是遺傳演算法發展進程中的一個里程碑,這是因為他把Holland的模式理論與他的計算實驗結合起來。盡管De Jong和Hollstien一樣主要側重於函數優化的應用研究,但他將選擇、交叉和變異操作進一步完善和系統化,同時又提出了諸如代溝(generation gap)等新的遺傳操作技術。可以認為,De Jong的研究工作為遺傳演算法及其應用打下了堅實的基礎,他所得出的許多結論迄今仍具有普遍的指導意義。
進入20世紀80年代,遺傳演算法迎來了興盛發展時期,無論是理論研究還是應用研究都成了十分熱門的課題。尤其是遺傳演算法的應用研究顯得格外活躍,不但它的應用領域擴大,而且利用遺傳演算法進行優化和規則學習的能力也顯著提高,同時產業應用方面的研究也在摸索之中。此外一些新的理論和方法在應用研究中亦得到了迅速的發展,這些無疑均給遺傳演算法增添了新的活力。
隨著應用領域的擴展,遺傳演算法的研究出現了幾個引人注目的新動向:一是基於遺傳演算法的機器學習(Genetic Base Machine Learning),這一新的研究課題把遺傳演算法從歷來離散的搜索空間的優化搜索演算法擴展到具有獨特的規則生成功能的嶄新的機器學習演算法。這一新的學習機制對於解決人工智慧中知識獲取和知識優化精煉的瓶頸難題帶來了希望。二是遺傳演算法正日益和神經網路、模糊推理以及混沌理論等其他智能計算方法相互滲透和結合,這對開拓21世紀中新的智能計算技術將具有重要的意義。三是並行處理的遺傳演算法的研究十分活躍。這一研究不僅對遺傳演算法本身的發展,而且對於新一代智能計算機體系結構的研究都是十分重要的。四是遺傳演算法和另一個稱為人工生命的嶄新研究領域正不斷滲透。所謂人工生命即是用計算機模擬自然界豐富多彩的生命現象,其中生物的自適應、進化和免疫等現象是人工生命的重要研究對象,而遺傳演算法在這方面將會發揮一定的作用。五是遺傳演算法和進化規劃(Evolution Programming,EP)以及進化策略(Evolution Strategy,ES)等進化計算理論日益結合。EP和ES幾乎是和遺傳演算法同時獨立發展起來的,同遺傳演算法一樣,它們也是模擬自然界生物進化機制的智能計算方法,既同遺傳演算法具有相同之處,也有各自的特點。
隨著遺傳演算法研究和應用的不斷深入和發展,一系列以遺傳演算法為主題的國際會議十分活躍。從1985年開始,國際遺傳演算法會議,即ICGA(International Conference on Genetic Algorithm)每兩年舉行一次。在歐洲,從1990年開始也每隔一年舉辦一次類似的會議,即 PPSN(Parallel Problem Solving from Nature)會議。除了遺傳演算法外,大部分有關ES和EP的學術論文也出現在PPSN中。另外,以遺傳演算法的理論基礎為中心的學術會議有FOGA(Foundation of Genetic Algorithm)。它也是從1990年開始,隔年召開一次。這些國際學術會議論文集中反映了遺傳演算法近些年來的最新發展和動向。