matlab-Grefenstette的编码与解码
在遺傳算法中
執(zhí)行交叉變異得到正確的子代結(jié)果
是十分重要的一步
為了更好的交叉變異
有人發(fā)明了Grefenstette編碼
Grefenstette的編碼定義如下:
既是:通過(guò)已有的順序(非常重要,編碼解碼都靠它),
產(chǎn)生一個(gè)訪問(wèn)序列,
且每訪問(wèn)完一個(gè)點(diǎn),就需要把點(diǎn)從已有序列刪除,形成新的序列
作為新的訪問(wèn)前置條件
例如已有順序
1,2,3,4,5
編碼集:4,2,1,2,1
通過(guò)編碼集得到的解碼集:
解碼集:4,2,1,5,3
注意編碼集最后一位永遠(yuǎn)都是以1結(jié)束
以種群數(shù)量S 與 生存環(huán)境數(shù)量M為研究對(duì)象,
產(chǎn)生一個(gè)1——M的序列
加上s就是:
產(chǎn)生一個(gè)SxM的原始已有序列矩陣,每一行為一個(gè)種群對(duì)于的已有序列
再根據(jù)Grefenstette的編碼規(guī)則:
訪問(wèn)生成序列下標(biāo)并刪除對(duì)應(yīng)點(diǎn)
得到編碼程序:
又根據(jù)編碼結(jié)果來(lái)計(jì)算解碼集:
得到編碼程序:
grePop是已知的編碼集矩陣
s,M對(duì)應(yīng)于編碼程序的s,M
舉例:
2種群,4城市:
編碼截圖:
解碼截圖:
可以看到完全將隨機(jī)產(chǎn)生的原始信息還原回來(lái)了。
完。
加油,奧利給!
總結(jié)
以上是生活随笔為你收集整理的matlab-Grefenstette的编码与解码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 汇编-简单的条件转移指令应用-附例子:判
- 下一篇: matlab偶极矩电场强度分布图_物理-