青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 12,  comments - 54,  trackbacks - 0
在基因交叉之后產生的子代個體,其變量可能以很小的概率或者步長發生轉變,這個過程稱為變異(Mutation)。
如果進化的目標函數極值是單峰值的,那么,將變異概率p設置為種群數量n的倒數是一個比較好的選擇。
如果變異概率很大,那么整個搜索過程就退化為一個隨機搜索過程。所以,比較穩妥的做法是,進化過程剛剛開始的時候,取p為一個比較大的概率,隨著搜索過程的進行,p逐漸縮小到0附近。
與交叉過程一樣,變異的算法也可以大致分為實數編碼和二進制編碼兩種。
(1) 實數變異
 <1>步長變異
即給數值加上或者減去一個值,這個數值稱為步長。大致如下:
X' = X + 0.5 Ld 或者
X' = X - 0.5 Ld
這里
L為變量的取值范圍 L = Upper - Lower
d= a(0)/2^0 + a(1)/2^1 + ... + a(m)/s^m
其中a(i)以1/m的概率取1,以 1-1/m的概率取0,一般m=20

C++ 代碼
 1 template< class GENE >
 2 class Real_Gene_Mutate_Algorithm
 3 {
 4     public:
 5         void operator()( GENE& gene ) const
 6         {
 7             const unsigned int M = 20;
 8 
 9             //claculate Delta
10             long double Delta = 0.0L;
11             for ( unsigned int i = 0; i < M; ++i )
12             {
13                 const long double Boundary =
14                         1.0L / static_cast<long double>(M);
15                 const long double Ran = ran();
16                 if ( Ran < Boundary )
17                 {
18                     const unsigned int Base = 1 << i;
19                     Delta += 1.0L / static_cast<long double>( Base );
20                 }
21             }
22 
23             //claculate Sig and L
24             const long double Ran = ran();
25             long double Sig = 0;
26             long double L = 0;
27             if ( Ran > 0.5L )
28             {
29                 Sig = 1.0L;
30                 L = gene.Upper - gene.Value;
31             }
32             else
33             {
34                 Sig = -1.0L;
35                 L = gene.Value - gene.Lower;
36             }
37 
38             gene.Value += Sig * L * Delta * 0.5L;
39         }
40 
41 };
42 

<2>高斯變異
這種變異的方法就是,產生一個服從高斯分布的隨機數,取代原先基因中的實數數值。這個算法產生的隨機數,數學期望當為當前基因的實數數值。
一個模擬產生的算法是,產生6個服從U(0,1)的隨機數,以他們的數學期望作為高斯分布隨機數的近似。

 1 template<class GENE>
 2 class Gauss_Mutate_Algorithm
 3 {
 4         public:
 5             void operator()( GENE& gene )const
 6             {
 7                 long double gauss = 0.0L;
 8                 for ( unsigned int i = 0; i < 6++i )
 9                     gauss += ran();
10                 gauss /= 6.0L;
11 
12                 long double upper;
13                 long double lower;
14                 const long double Upper = gene.Upper;
15                 const long double Lower = gene.Lower;
16                 const long double Value = gene.Value;
17 
18                 ( ( Value - Lower ) > ( Upper - Value ) ) ?
19                 ( upper = Upper, lower = Value * 2.0L - Upper ) :
20                 ( lower = Lower, upper = Value * 2.0L - Lower );
21 
22                 gauss *= ( upper - lower );
23                 guass += lower;
24
25                 gene.Value = gauss;
26             }
27 };
28


(2)二進制變異
對二進制編碼來講,變異就是變量的翻轉,如
10000111100001
10000101100001

c++代碼
 1 template< class GENE >
 2 class Binary_Gene_Mutate_Algorithm
 3 {
 4     public:
 5         void operator()( GENE& gene )const
 6         {
 7             encoding( gene );
 8 
 9             const unsigned int Size = gene.Binary_Array.size();
10             const long double Ran = ran();
11             const unsigned int Pos = static_cast<unsigned int>
12                     ( static_cast<long double>( Size ) * Ran );
13 
14             if ( gene.Binary_Array[Pos] )
15                 gene.Binary_Array[Pos] = 0;
16             else
17                 gene.Binary_Array[Pos] = 1;
18 
19             decoding( gene );
20         }
21 };

(3)一些相關算法或者函數
 1 template< class DATA, class ALGORITHM>
 2 void mutate( DATA& d, const ALGORITHM& a )
 3 {
 4     a( d );
 5 }
 6 
 7 template< class POPULATION, class GENE_MUTATE_ALGORITHM >
 8 class Population_Mutate_Algorithm
 9 {
10     public:
11         void operator()( POPULATION& p )const
12         {
13             //chromosome numbers in the population
14             const unsigned int C_Size = p.Chromosome_Array.size();
15             //gene numbers in a chromosome
16             const unsigned int G_Size = p.Chromosome_Array[0].Gene_Array.size();
17 
18             for( unsigned int i = 0; i < C_Size; ++i )
19             {
20                 for ( unsigned int j = 0; j < G_Size; ++j )
21                 {
22                     const long double Ran = ran();
23 
24                     if ( Ran > p.Mutation_Probability )
25                     return ;
26 
27                     mutate( p.Chromosome_Array[i].Gene_Array[j],
28                             GENE_MUTATE_ALGORITHM() );
29                 }
30             }
31         }
32 };
33 



posted on 2008-06-22 16:20 Wang Feng 閱讀(14473) 評論(0)  編輯 收藏 引用 所屬分類: Numerical C++

<2025年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用鏈接

留言簿(4)

隨筆分類

隨筆檔案

Link List

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线播放中文一区| 亚洲国产精品国自产拍av秋霞| 欧美日韩国产在线播放网站| 国产精品久久久久91| 亚洲精品一区二区三区婷婷月| 欧美在线亚洲| 欧美一区二区视频在线观看2020| 欧美涩涩网站| 亚洲网站视频| 日韩小视频在线观看| 欧美—级a级欧美特级ar全黄| 精品不卡在线| 久热精品在线| 久久一区二区三区国产精品| 激情五月婷婷综合| 久久久99爱| 欧美在线观看视频在线| 国产一级久久| 毛片基地黄久久久久久天堂| 欧美一区二区三区在| 国产一区二区三区最好精华液| 久久国产精品网站| 欧美在线电影| 亚洲欧洲日产国产综合网| 欧美韩日一区二区| 欧美国产大片| 亚洲自啪免费| 亚洲欧美日韩电影| 亚洲国产综合视频在线观看| 亚洲大胆女人| 嫩草伊人久久精品少妇av杨幂| 久久精品国产精品亚洲| 在线观看日韩av电影| 免费成人毛片| 欧美国产精品一区| 亚洲一区二区三区中文字幕在线| 夜久久久久久| 国产欧美日本| 欧美成人一区二区在线| 欧美日韩国产色站一区二区三区| 中文精品视频一区二区在线观看| 亚洲一级电影| 亚洲国产三级| 亚洲性感美女99在线| 韩日成人av| 亚洲美女区一区| 国内精品久久久久久久果冻传媒| 亚洲成人在线视频网站| 欧美日韩综合不卡| 久久乐国产精品| 欧美精品日韩三级| 久久av在线| 欧美国产成人精品| 久久国产精品99精品国产| 欧美暴力喷水在线| 久久岛国电影| 欧美三级欧美一级| 欧美v日韩v国产v| 国产精品系列在线| 91久久精品国产91性色tv| 国产日韩欧美精品综合| 91久久午夜| 一区免费观看| 亚洲综合色自拍一区| 亚洲精品综合| 久久免费国产精品1| 亚洲一区二区三区四区视频 | 日韩视频一区二区三区在线播放| 国产精品婷婷| 亚洲激情二区| 1024国产精品| 午夜一区二区三区在线观看| 亚洲狼人精品一区二区三区| 欧美在线播放视频| 午夜亚洲一区| 国产精品99免视看9| 欧美成人综合一区| 黄色成人av在线| 性色一区二区| 先锋a资源在线看亚洲| 欧美日韩在线三区| 亚洲精品在线免费| 亚洲精选视频免费看| 久久男女视频| 美女成人午夜| 激情六月综合| 欧美一区二区免费视频| 销魂美女一区二区三区视频在线| 欧美日韩一级视频| 亚洲精品久久嫩草网站秘色| 亚洲欧洲日韩综合二区| 久久爱www久久做| 久久一区二区三区国产精品| 久久精品国产一区二区三| 国产精品你懂的在线| 一区二区三区国产盗摄| 一区二区三区鲁丝不卡| 欧美日韩三区| 在线午夜精品自拍| 亚洲天堂男人| 欧美午夜精品久久久| 亚洲视频一二区| 欧美一区亚洲二区| 国内揄拍国内精品少妇国语| 欧美伊人久久久久久久久影院| 欧美中文在线观看| 国产欧美亚洲日本| 欧美影院在线播放| 蜜臀va亚洲va欧美va天堂| 在线观看一区视频| 欧美成人一区二免费视频软件| 亚洲黄色影院| 亚洲图中文字幕| 国产日本欧美视频| 久久久久久久999| 欧美成人国产va精品日本一级| 亚洲激情六月丁香| 欧美日本在线| 欧美亚洲在线观看| 亚洲国产日韩在线| 亚洲欧美区自拍先锋| 国内外成人免费激情在线视频网站 | 亚洲视频二区| 国产欧美va欧美va香蕉在| 亚洲综合色在线| 欧美va亚洲va国产综合| 亚洲视频中文字幕| 国产一区二区丝袜高跟鞋图片| 久久躁狠狠躁夜夜爽| 99re成人精品视频| 久久久久九九九| 夜夜嗨av一区二区三区四区| 国产精品性做久久久久久| 久久久九九九九| 99xxxx成人网| 久久综合久色欧美综合狠狠| 在线视频精品一区| 国产亚洲欧美日韩在线一区| 欧美v国产在线一区二区三区| 亚洲一区二区三区久久| 你懂的亚洲视频| 午夜精品av| 亚洲精品视频在线播放| 国产日韩欧美不卡在线| 欧美久色视频| 久久网站热最新地址| 在线视频中文亚洲| 亚洲高清在线播放| 久久久精品tv| 亚洲欧美国产精品桃花| 亚洲国产精品日韩| 国产一区二区三区观看| 欧美三级乱码| 欧美日韩国产成人在线观看| 久久久久久久久久久一区| 一区二区三区四区国产| 亚洲国产精品第一区二区| 久久久久久穴| 亚洲欧美日韩视频一区| 99精品国产高清一区二区| 精品51国产黑色丝袜高跟鞋| 欧美日韩精品在线播放| 很黄很黄激情成人| 国产精品久久久久毛片大屁完整版 | 欧美视频不卡中文| 美女视频黄免费的久久| 欧美一区日韩一区| 亚洲免费人成在线视频观看| 99re6热只有精品免费观看 | 欧美啪啪一区| 欧美成人免费在线视频| 久久人人爽国产| 久久天天综合| 久久久亚洲一区| 久久米奇亚洲| 久久一区二区精品| 美女在线一区二区| 噜噜爱69成人精品| 久久亚洲私人国产精品va| 欧美制服第一页| 欧美一区二区三区的| 午夜精品视频在线| 欧美一区二区日韩| 久久久久久久一区| 久久久夜夜夜| 美脚丝袜一区二区三区在线观看 | 亚洲欧美日韩国产一区二区三区 | 国产亚洲激情在线| 国产日韩欧美亚洲| 黑人一区二区| 亚洲高清资源| 亚洲日韩欧美视频| 99这里有精品| 亚洲欧美综合v| 久久精品国产亚洲精品 | 一区二区久久久久久| 中文欧美日韩| 欧美在现视频| 欧美好骚综合网| 国产精品国产三级国产a|