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

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 閱讀(14467) 評論(0)  編輯 收藏 引用 所屬分類: Numerical C++

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(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>
            免费观看亚洲视频大全| 99国产精品私拍| 久久久久久噜噜噜久久久精品| 亚洲天堂男人| 亚洲一区二区在线播放| 这里只有视频精品| 欧美一二三区精品| 久久综合色天天久久综合图片| 91久久精品国产91久久| 亚洲欧美电影在线观看| 国产精品久久一卡二卡| 欧美色图首页| 欧美激情黄色片| 欧美二区在线播放| 亚洲全黄一级网站| 亚洲一区成人| 久久精品国亚洲| 欧美激情中文不卡| 国产精品一区二区三区观看| 黄色一区二区在线观看| 一区二区三区四区精品| 久久免费一区| 日韩视频在线永久播放| 欧美中文字幕视频| 久久久久久久久久久久久久一区| 久久夜色精品国产欧美乱极品 | 欧美日韩伦理在线| 国产亚洲精品v| 一区二区三区成人| 狂野欧美性猛交xxxx巴西| 亚洲一区二区动漫| 欧美成人激情在线| 国产在线不卡| 亚洲欧美一区二区三区在线| 亚洲大片在线| 欧美一乱一性一交一视频| 欧美精品免费视频| **性色生活片久久毛片| 欧美与黑人午夜性猛交久久久| 亚洲经典三级| 久久婷婷影院| 久热精品视频在线| 久久午夜羞羞影院免费观看| 久久久99久久精品女同性| 欧美黄色视屏| 国产一区二区三区日韩| 一区二区三区日韩欧美精品| 欧美激情按摩| 久久精品亚洲精品| 国产在线欧美| 久久久国产91| 亚洲欧美中文日韩在线| 国产精品电影观看| 亚洲在线观看免费| 亚洲人成网站999久久久综合| 一本色道久久99精品综合| 欧美顶级艳妇交换群宴| 亚洲二区在线| 麻豆精品一区二区综合av| 亚洲一区二区三区国产| 欧美视频国产精品| 亚洲一区二区视频在线观看| 日韩视频永久免费| 欧美日韩成人在线| 亚洲一区在线观看免费观看电影高清| 亚洲激情网站| 欧美喷水视频| 在线综合+亚洲+欧美中文字幕| 亚洲日本中文字幕免费在线不卡| 欧美成人免费播放| 一区二区日本视频| 亚洲综合欧美| 国产在线视频欧美一区二区三区| 久久超碰97中文字幕| 亚洲自拍电影| 极品尤物久久久av免费看| 男女av一区三区二区色多| 麻豆精品视频在线观看视频| 亚洲卡通欧美制服中文| 一区二区免费看| 国产日韩亚洲欧美精品| 亚洲精品一区二区三区av| 国产精品国产三级国产普通话三级| 亚洲一区二区日本| 亚洲综合二区| 亚洲国产成人久久综合| 亚洲日本成人| 国产精品你懂的在线| 久久婷婷影院| 欧美交受高潮1| 欧美亚洲一级片| 久久婷婷麻豆| 亚洲一区二区三区四区中文 | 久久av二区| 日韩视频在线免费观看| 亚洲一区二区三区乱码aⅴ| 一区二区亚洲精品国产| 亚洲精品视频啊美女在线直播| 国产精品成人播放| 美日韩精品免费观看视频| 欧美日韩国产美| 久久综合网hezyo| 欧美日韩国产一区二区三区地区| 欧美在线日韩在线| 欧美日韩免费在线观看| 久久人体大胆视频| 欧美午夜在线| 欧美国产免费| 狠狠色丁香久久婷婷综合_中| 亚洲精品色图| 亚洲国产毛片完整版| 亚洲自拍高清| 亚洲最新合集| 欧美 日韩 国产精品免费观看| 久久久久久**毛片大全| 国产精品视频专区| 亚洲伦伦在线| 激情久久中文字幕| 亚洲影音先锋| 在线综合视频| 欧美顶级大胆免费视频| 裸体一区二区三区| 国产色爱av资源综合区| 亚洲亚洲精品在线观看 | 久久精品视频99| 午夜影视日本亚洲欧洲精品| 欧美网站大全在线观看| 亚洲精品美女在线观看| 亚洲精品五月天| 久久久久看片| 另类天堂av| 精品福利av| 久久天天狠狠| 久久伊人精品天天| 国产在线拍偷自揄拍精品| 欧美在线日韩精品| 久久久久在线| 伊人精品在线| 久久综合影音| 欧美国产欧美亚洲国产日韩mv天天看完整 | 夜夜嗨av一区二区三区四区 | 怡红院精品视频| 欧美影院久久久| 久久国产一区二区三区| 国产欧美精品一区aⅴ影院| 亚洲影院色无极综合| 性欧美大战久久久久久久久| 国产精品亚洲成人| 欧美一区二区三区啪啪| 欧美成人综合在线| 亚洲美女性视频| 欧美性猛交99久久久久99按摩| 亚洲一二三级电影| 久久久99精品免费观看不卡| 精品动漫一区二区| 欧美韩日一区二区| 国产精品99久久不卡二区| 久久久久久黄| 亚洲精品乱码久久久久久蜜桃91 | 老牛国产精品一区的观看方式| 欧美福利电影在线观看| 亚洲视频免费在线| 国产午夜精品久久久| 美女999久久久精品视频| 99精品国产在热久久| 久久国产66| 亚洲精品美女久久7777777| 欧美日韩在线观看一区二区三区| 这里只有精品在线播放| 美脚丝袜一区二区三区在线观看 | 久久精品视频一| 亚洲精品在线视频| 国产精品美女主播在线观看纯欲| 久久久午夜精品| 99视频日韩| 麻豆av一区二区三区久久| av不卡在线看| 好看的日韩av电影| 欧美日韩在线播放三区| 久久青青草原一区二区| 亚洲视频一区二区在线观看 | 中文无字幕一区二区三区| 久久久久www| 亚洲一级在线观看| 在线精品视频免费观看| 国产精品美女久久福利网站| 老司机午夜精品视频在线观看| 亚洲色图综合久久| 欧美高清在线播放| 欧美在线观看视频在线| 一区二区成人精品| 午夜精品久久久久久久男人的天堂| 亚洲国产精品999| 国产欧美在线观看| 欧美影院一区| 日韩天堂在线观看| 影音先锋久久久| 国产精品红桃| 欧美—级a级欧美特级ar全黄| 久久精品一本久久99精品|