精英主義 遺傳算法 matlab,遺傳算法優化 - osc_lfs4vsih的個人空間 - OSCHINA - 中文開源技術交流社區...

1.遺傳算法簡介

遺傳算法是一種基于自然選擇和群體遺傳機理的搜索算法,它模擬了自然選擇和自然遺傳過程中的繁殖、雜交和突變現象.再利用遺傳算法求解問題時,問題的每一個可能解都被編碼成一個“染色體”,即個體,若干個個體構成了群體(所有可能解).在遺傳算法開始時,總是隨機的產生一些個體(即初始解),根據預定的目標函數對每一個個體進行評估,給出一個適應度值,基于此適應度值,選擇一些個體用來產生下一代,選擇操作體現了“適者生存”的原理,“好”的個體被用來產生下一代,“壞”的個體則被淘汰,然后選擇出來的個體,經過交叉和變異算子進行再組合生成新的一代,這一代的個體由于繼承了上一代的一些優良性狀,因而在性能上要優于上一代,這樣逐步朝著最優解的方向進化.因此,遺傳算法可以看成是一個由可行解組成的群體初步進化的過程.

2.遺傳算法原理簡析

2.1.GA算法是一種元啟發式自然選擇的過程 ,遺傳算法通常是利用生物啟發算子,如變異、交叉和選擇來生成高質量的優化和搜索問題的解決方案。

借鑒生物進化理論,遺傳算法將問題模擬成一個生物進化過程,通過遺傳、交叉、突變、自然選擇等操作產生下一代的解,并逐步淘汰適應度函數值低的解,增加適應度函數高的解。這樣進化N代后就很有? ? ? 可能會進化出適應度函數值很高的個體。

2.2.遺傳算法的基本術語

個體:可行解

種群:可行解集

染色體:可行解的編碼

基因:可行解的分量

基因形式:遺傳編碼

適應度:適應度函數(評價的值)

選擇:選擇操作

交叉:編碼的交叉操作

變異:可行解碼的變異

3.遺傳算法的基本操作

遺傳算法的操作即模擬生物基因操作:優選適應性強的個體的“選擇”;個體間交換基因產生新個體的“交叉”;個體間的基因突變而產生新個體的“變異”。

3.1選擇

選擇是指從群體中選擇優良個體并淘汰劣質個體的操作.它建立在適應度評估的基礎上.適應度越大的個體,被選中上的可能性就越大,他的“子孫”在下一代中的個數就越多,選擇出來的個體就被放入配對庫中.目前常用的選擇方法有輪賭盤方法、最佳個體保留法、期望值法、排序選擇法、競爭法、線性標準化法.

3.2交叉

交叉就是指把兩個父代個體的部分結構加以替換重組而生成新的個體的操作,交叉的目的是為了在下一代產生新的個體,通過交叉操作,遺傳算法的搜索能力得到了飛躍性的提高.交叉是遺傳算法獲取優良個體的重要手段.交叉操作是按照一定的交叉概率在匹配庫中隨機的選取兩個個體進行的,交叉位置也是隨機的,交叉概率一般取得很大,為0.6~0.9.

3.3變異

變異就是以很小的變異概率Pm隨機地改變種群中個體的某些基因的值,變異操作的基本過程是:產生一個[0,1]之間的隨機數rand,如果rand0.5,遺傳算法就退化為了隨機搜索.

https://blog.csdn.net/jzp1083462154/article/details/80032987

4.遺傳算法的操作步驟

開始循環直至找到滿意的解。

1.評估每條染色體所對應個體的適應度。

2.遵照適應度越高,選擇概率越大的原則,從種群中選擇兩個個體作為父方和母方。

3.抽取父母雙方的染色體,進行交叉,產生子代。

4.對子代的染色體進行變異。

5.重復2,3,4步驟,直到新種群的產生

結束循環

流程圖參照老師上課PPT講解過的內容,這里就不再貼出。

5.遺傳算法的實現

遺傳算法優化方法:

(1)精英主義(Elitist Strategy)選擇:是基本遺傳算法的一種優化。為了防止進化過程中產生的最優解被交叉和變異所破壞,可以將每一代中的最優解原封不動的復制到下一代中。

(2)插入操作:可在3個基本操作的基礎上增加一個插入操作。插入操作將染色體中的某個隨機的片段移位到另一個隨機的位置。

求解一個目標函數y=sin(10 *Π *x)/x

部分代碼:

608a94e54e4c8fd4c18c3722898fb6ff.png

運行結果

f3f759dccf5b04d27caea865474536f6.png

6.遺傳算法的特點

①遺傳算法是對參數的編碼進行操作,而非對參數本身。

②遺傳算法是從許多點開始并行操作,并非局限于一點,從而可有效防止搜索過程收斂于局部最優解。

③遺傳算法通過目標函數計算適值,并不需要其它推導和附加信息,因而對問題的依賴性較小。

④遺傳算法的尋優規則是由概率決定的,而非確定性的。

⑤遺傳算法在解空間進行高效啟發式搜索,而非盲目地窮舉或完全隨機搜索。

⑥遺傳算法對所求解的優化問題沒有太多的數學要求。

⑦遺傳算法具有并行計算的特點,因而可通過大規模并行計算來提高計算速度

7.總結

由于對算法的運用掌握的不是很熟練,多目標求解代碼還沒運行出來,給大家提供一個概念理解的參考鏈接:https://www.cnblogs.com/lomper/p/3831428.html

計算智能這門課還需要多多熟悉matlab軟件,發現這位博主講解的挺仔細:https://blog.csdn.net/zhazhazl/article/details/52192595?tdsourcetag=s_pctim_aiomsg

另外這位博主講解的算法分析很不錯:https://blog.csdn.net/u010451580/article/details/51178225

本文參考:

https://blog.csdn.net/sinat_38321889/article/details/79001599?tdsourcetag=s_pctim_aiomsg

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534806.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534806.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534806.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 類靜態屬性_如何從Python中的類中引用靜態屬性?

您面臨的問題是因為您不了解類聲明的作用域是如何工作的。類聲明在其自己的作用域內執行。執行完成后,將創建一個新的類對象,并將獲得的范圍作為其__dict__附加到該類。在注意:類范圍是從方法范圍內搜索的而不是!這意味著當在方法…

php后臺管理員登錄密碼錯誤,如果后臺管理員的密碼錯誤,我該怎么辦,還有兩種找回密碼的方法...

Dedecms是中國著名的網站管理核心. 由于編織夢想簡單易用,因此可以進行二次開發,并且可以實現各種網站. 在使用dedecms的過程中,如果忘記了夢想管理后臺的密碼怎么辦?神山個人博客分享了兩種修改(重置)管理員密碼的方法.1. 下載織…

python logging模塊 默認_python logging模塊

函數式簡單配置importlogginglogging.debug(debug message) #計算或者工作的細節logging.info(info message) #記錄一些用戶的增刪改查的操作logging.warning(warning message) #警告操作logging.error(error message) #警告操作logging.critical(critical message) #批判的 直…

mac安裝多php環境變量配置,Mac如何安裝多個php版本

Mac安裝多個php版本的方法:首先打開Mac上的終端工具,并確認安裝Homebrew;然后安裝【php5.5】及對應擴展;最后執行指令【brew unlink php55】刪除brew中php的軟鏈即可。Mac安裝多個php版本的方法:1、打開Mac上的終端工具…

phpexcel 獲取工作簿名稱_工作分享 | Excel快速匯總考勤

點擊藍字關注我們每月月底,各位同事把考勤表報到部門后,檢查核對再匯總一份總考勤表上報,傳統的復制粘貼總是占用不少時間,還容易出錯。為提高工作效率,現利用Excel實現考勤快速匯總。01 統一考勤模板,每個…

php進程通訊方式,PHP進程模型、進程通訊方式、進程線程的區別分別有哪些?

PHP進程模型是一個正在執行的程序,可以分配給處理器并由處理器執行的一個實體;PHP進程通訊方式有管道及有名管道,信號,共享內存等;PHP進程線程的區別有進程是資源的分配和調度的一個獨立單元,而線程是CPU調…

iphone怎樣關閉副屏_小米新設計專利曝光:“Z”型折疊屏手機

折疊屏手機可以說是最近幾年的熱門話題,雖然并未大面積普及,但已有多家廠商量產上市了旗下的折疊屏手機。同樣作為知名廠商的小米,曾在此前展示過旗下的折疊屏手機視頻,但并未真正發布。而近日曝光的一份小米旗下專利設計則表明小…

php socket開發斗地主,基于狀態機模型的斗地主游戲(NodeJsSocketIO)

1. 系統結構系統考慮使用Nodejs和SocketIo實現服務器端邏輯,前端使用HTML5。2. 邏輯流程1 . 主要邏輯包括用戶進入游戲、等待對家進入游戲、游戲過程、結束統計這4個過程。2 . 游戲過程的邏輯具體如下3 . 服務器-客戶端通訊邏輯如下3. 客戶端界面設計1 . 登錄界面2 …

python幾何拼貼畫_圖形幾何圖形拼貼畫

四邊形教學內容:教材第34頁?——36頁教學目標:1.直觀感知四邊形,能區分和辨認四邊形,知道四邊形的特征.進一步認識長方形和正方形,知道它們的角都是直角.2.通過畫一畫、找一找、拼一拼等活動,培養學生[此文轉于斐斐課件園?FFKJ.Net]的觀察比較和概括抽象的能力,發展空間想象能…

wgs84轉經緯度_wgs84經緯度轉為cgcs2000平面坐標

航拍測繪中,pos數據多數是wgs84,而GCP坐標是2000或者80坐標。有如下2情況需要轉換坐標,1.不同坐標系刺點時,位置相差較遠,影響工作效率。2.該軟件不支持wgs84轉國家2000,比如photoscan。所以需要把pos數據轉為跟像控點…

php system 255,GitHub - dwg255/OA-SYS: OA辦公系統開源項目

OA-SYSOA辦公系統開源項目這是一套主要用于演示、學習為目的OA辦公自動化系統。該系統具備基本的自動化辦公功能。在使用前請確保您已閱讀本系統協議部分內容。主要功能列表用戶和用戶組、權限管理個人網盤和分享文件生產計劃任務和業績考評通訊錄和內部短消息公告系統個人工作…

wpcomments post.php,WordPress移動wp-comments-post文件防垃圾評論

將wp-comments-post文件移動到主題目錄中達到阻止垃圾評論。需要修改程序文件:一、首先打開Wordpress程序根目錄的wp-comments-pos.php文件,用:require( dirname(__FILE__) . /../../../wp-load.php );替換第16行的:require( dirn…

人工蜂群算法python_改進的人工蜂群算法解決聚類問題(在Python中的分步實現)...

在之前的文章中,我介紹了如何通過實施名為Artificial Bee Colony(ABC)的群集智能(SI)算法來解決現實世界中的優化問題。現在是時候讓我們掌握一些真實的數據并解釋我們如何使用我們的ABC算法的Python實現來執行群集任務。但在此之前,讓我們深入了解一下聚…

python涉及到的邏輯_涉及邏輯運算的python表達式的運算順序

以下代碼并不報錯,而我理解在”point 1″處如果先運算小括號里面的表達式,而y并不存在,不應該報錯嗎?難道發現x 10的短路運算優先于小括號里面的表達式運算?將這一行中x 10改為x 100后報錯了,這個理解沒…

oracle sql last_value,図でイメージするOracle DatabaseのSQL全集 第3回 分析関數

指定したソートキーでの、最初の行の値を求めるのが、First_Value関數。指定したソートキーでの、最後の行の値を求めるのが、Last_Value関數。指定したソートキーでの、(Row_Numberな順位が)n番目の行の値を求めるのが、nth_Value関數となります。Oracle11gR2でnth_Value関數が…

python讀取字典元素筆記_Python 學習筆記 - 字典

Python 字典字典是一種無序的、可修改的、可索引的容器。字典使用花括號聲明,具有鍵和值。mydic {name:孫悟空,origin:猴子}print(mydic)結果:{name: 孫悟空, origin: 猴子}訪問字典mydic {name:孫悟空,origin:猴子}print(mydic[name])結果&#xff1a…

oracle =1,oracle中的 where 1=1 和where 1 !=1

11 永真&#xff0c; 1<>1 永假。1<>1 的用處&#xff1a; 用于只取結構不取數據的場合例如&#xff1a;create table table_ly_temp tablespace ly_temp asselect * from table_ly where 1<>112建成一個與table_ly 結構相同的表table_ly_temp &#xff0c;但…

企業信息化投入中咨詢服務_全過程工程咨詢服務核心價值是什么

建筑行業服務現狀傳統建設工程的目標、計劃、控制都以參與單位個體為主要對象&#xff0c;項目管理的階段性和局部性割裂了項目的內在聯系&#xff0c;導致項目管理存在明顯的管理弊端&#xff0c;這種模式已經與國際主流的建設管理模式脫軌。“專而不全”、“多小散”企業的參…

sp_addlinkedserver oracle,sp_addlinkedserver使用方法

Exec sp_droplinkedsrvlogin DBVIP,Null --刪除映射(錄與鏈接服務器上遠程登錄之間的映射)Exec sp_dropserver DBVIP --刪除遠程服務器鏈接EXEC sp_addlinkedserverserverDBVIP,--被訪問的服務器別名srvproduct,providerSQLOLEDB,datasrc"…

oracle的undo表空間不足,undo表空間不足,ORA-30036 unable to extend segment by ...

一、一次更新或者刪除大量數據&#xff0c;這些數據需要保存在undo表空間中(直到提交或回滾后這些undo表空間中的數據才允許被覆蓋)&#xff0c;如果undo表空間不足&#xff0c;就會報ORA-30036錯誤。下面是兩種解決辦法&#xff1a;1、增加undo表空間大小&#xff0c;或將undo…