1. 程式人生 > 其它 >【智慧優化演算法應用】01遺傳演算法應用

【智慧優化演算法應用】01遺傳演算法應用

作者:康慎吾
地點:北華航天工業學院

  • 遺傳演算法流程
  • 遺傳學與遺傳算法術語對應關係
  • 遺傳操作
    選擇運算元:select
    交叉運算元:recombin
    變異運算元:mut
  • 交叉運算元:
    (1)單切點交叉

    (2)雙切點交叉
  • 建立一個種群大小為5,個體長度為8,各位的二進位制數分別為{2,3,4,5,6,7,8,9}
>> [Chrom, Lind, BaseV]=crtbp(5,8,[2 3 4 5 6 7 8 9])

Chrom =

     1     0     0     0     3     5     5     7
     1     0     3     2     0     5     0     6
     0     1     3     4     5     2     2     2
     1     2     1     3     5     4     0     8
     1     2     3     4     4     1     0     0


Lind =

     8


BaseV =

     2     3     4     5     6     7     8     9
  • 使用線性排序和壓差為2估算適應度
>> ObjV=[1;2;3;4;5;10;9;8;7;6];
>> FitnV=ranking(ObjV);
%or>> FitnV=ranking(ObjV,[2, 0])
%or>> FitnV=ranking(ObjV, [2, 0], 1)

FitnV =

    2.0000
    1.7778
    1.5556
    1.3333
    1.1111
         0
    0.2222
    0.4444
    0.6667
    0.8889

注意:ranking是求解最小值的,即目標值越小,適應度越大。

  • 實用函式——rep
    功能:矩陣複製。
    呼叫格式 MatOut=rep(MatIn,REPN)
    函式rep完成矩陣MatIn的複製,REPN指明覆制次數,返回複製後的矩陣MatOut。
    REPN包含每個方向的複製次數,REPN(1)表示縱向複製次數,REPN(2)表示水平方向複製次數。
%使用函式rep複製矩陣MatIn
>> MatIn=[1 2 3 4;5 6 7 8]

MatIn =

     1     2     3     4
     5     6     7     8
>> MatOut=rep(MatIn,[1,2])

MatOut =

     1     2     3     4     1     2     3     4
     5     6     7     8     5     6     7     8

>> MatOut=rep(MatIn,[2,1])

MatOut =

     1     2     3     4
     5     6     7     8
     1     2     3     4
     5     6     7     8

下一節:【智慧優化演算法應用】02免疫優化演算法應用...