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