国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實(shí)現(xiàn)簡單遺傳算法(SGA)

2020-02-22 23:02:25
字體:
供稿:網(wǎng)友

本文用Python3完整實(shí)現(xiàn)了簡單遺傳算法(SGA)

Simple Genetic Alogrithm是模擬生物進(jìn)化過程而提出的一種優(yōu)化算法。SGA采用隨機(jī)導(dǎo)向搜索全局最優(yōu)解或者說近似全局最優(yōu)解。傳統(tǒng)的爬山算法(例如梯度下降,牛頓法)一次只優(yōu)化一個(gè)解,并且對于多峰的目標(biāo)函數(shù)很容易陷入局部最優(yōu)解,而SGA算法一次優(yōu)化一個(gè)種群(即一次優(yōu)化多個(gè)解),SGA比傳統(tǒng)的爬山算法更容易收斂到全局最優(yōu)解或者近似全局最優(yōu)解。
SGA基本流程如下:

1、對問題的解進(jìn)行二進(jìn)制編碼。編碼涉及精度的問題,在本例中精度delta=0.0001,根據(jù)決策變量的上下界確定對應(yīng)此決策變量的染色體基因的長度(m)。假設(shè)一個(gè)決策變量x0上界為upper,下界為lower,則精度delta = (upper-lower)/2^m-1。如果已知決策變量邊界和編碼精度,那么可以用下面的公式確定編碼決策變量x0所對應(yīng)的染色體長度:

2^(length-1)<(upper-lower)/delta<=2^length-1

2、對染色體解碼得到表現(xiàn)形:

解碼后得到10進(jìn)制的值;decoded = lower + binary2demical(chromosome)*delta。其中binary2demical為二進(jìn)制轉(zhuǎn)10進(jìn)制的函數(shù),在代碼中有實(shí)現(xiàn),chromosome是編碼后的染色體。

3、確定初始種群,初始種群隨機(jī)生成

4、根據(jù)解碼函數(shù)得到初始種群的10進(jìn)制表現(xiàn)型的值

5、確定適應(yīng)度函數(shù),對于求最大值最小值問題,一般適應(yīng)度函數(shù)就是目標(biāo)函數(shù)。根據(jù)適應(yīng)度函數(shù)確定每個(gè)個(gè)體的適應(yīng)度值Fi=FitnessFunction(individual);然后確定每個(gè)個(gè)體被選擇的概率Pi=Fi/sum(Fi),sum(Fi)代表所有個(gè)體適應(yīng)度之和。

6、根據(jù)輪盤賭選擇算子,選取適應(yīng)度較大的個(gè)體。一次選取一個(gè)個(gè)體,選取n次,得到新的種群population

7、確定交叉概率Pc,對上一步得到的種群進(jìn)行單點(diǎn)交叉。每次交叉點(diǎn)的位置隨機(jī)。

8、確定變異概率Pm,假設(shè)種群大小為10,每個(gè)個(gè)體染色體編碼長度為33,則一共有330個(gè)基因位,則變異的基因位數(shù)是330*Pm。接下來,要確定是那個(gè)染色體中哪個(gè)位置的基因發(fā)生了變異。將330按照10進(jìn)制序號進(jìn)行編碼即從0,1,2,.......229。隨機(jī)從330個(gè)數(shù)中選擇330*Pm個(gè)數(shù),假設(shè)其中一個(gè)數(shù)時(shí)154,chromosomeIndex = 154/33 =4,
geneIndex = 154%33 = 22。由此確定了第154號位置的基因位于第4個(gè)染色體的第22個(gè)位置上,將此位置的基因值置反完成基本位變異操作。

9、以上步驟完成了一次迭代的所有操作。接下就是評估的過程。對變異后得到的最終的種群進(jìn)行解碼,利用解碼值求得每個(gè)個(gè)體的適應(yīng)度值,將最大的適應(yīng)度值保存下來,對應(yīng)的解碼后的決策變量的值也保存下來。

10、根據(jù)迭代次數(shù),假設(shè)是500次,重復(fù)執(zhí)行1-9的步驟,最終得到是一個(gè)500個(gè)數(shù)值的最優(yōu)適應(yīng)度取值的數(shù)組以及一個(gè)500*n的決策變量取值數(shù)組(假設(shè)有n個(gè)決策變量)。從500個(gè)值中找到最優(yōu)的一個(gè)(最大或者最小,根據(jù)定義的適應(yīng)度函數(shù)來選擇)以及對應(yīng)的決策變量的取值。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 莱西市| 德令哈市| 团风县| 南雄市| 安庆市| 枣阳市| 夏津县| 盐山县| 依安县| 巴彦淖尔市| 嘉黎县| 汾西县| 武义县| 宝兴县| 富源县| 黑龙江省| 江陵县| 中超| 霸州市| 信宜市| 湘阴县| 恩平市| 东光县| 子洲县| 巨鹿县| 榆树市| 建宁县| 郯城县| 呼玛县| 江华| 东乌| 巫山县| 云龙县| 沁阳市| 陇西县| 樟树市| 皮山县| 谢通门县| 龙陵县| 和静县| 久治县|