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

posts - 12,  comments - 54,  trackbacks - 0
在基因交叉之后產(chǎn)生的子代個體,其變量可能以很小的概率或者步長發(fā)生轉(zhuǎn)變,這個過程稱為變異(Mutation)。
如果進化的目標(biāo)函數(shù)極值是單峰值的,那么,將變異概率p設(shè)置為種群數(shù)量n的倒數(shù)是一個比較好的選擇。
如果變異概率很大,那么整個搜索過程就退化為一個隨機搜索過程。所以,比較穩(wěn)妥的做法是,進化過程剛剛開始的時候,取p為一個比較大的概率,隨著搜索過程的進行,p逐漸縮小到0附近。
與交叉過程一樣,變異的算法也可以大致分為實數(shù)編碼和二進制編碼兩種。
(1) 實數(shù)變異
 <1>步長變異
即給數(shù)值加上或者減去一個值,這個數(shù)值稱為步長。大致如下:
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>高斯變異
這種變異的方法就是,產(chǎn)生一個服從高斯分布的隨機數(shù),取代原先基因中的實數(shù)數(shù)值。這個算法產(chǎn)生的隨機數(shù),數(shù)學(xué)期望當(dāng)為當(dāng)前基因的實數(shù)數(shù)值。
一個模擬產(chǎn)生的算法是,產(chǎn)生6個服從U(0,1)的隨機數(shù),以他們的數(shù)學(xué)期望作為高斯分布隨機數(shù)的近似。

 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)二進制變異
對二進制編碼來講,變異就是變量的翻轉(zhuǎn),如
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)一些相關(guān)算法或者函數(shù)
 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 閱讀(14487) 評論(0)  編輯 收藏 引用 所屬分類: Numerical C++

<2009年1月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用鏈接

留言簿(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>
            亚洲一区二区三区777| 欧美成人午夜视频| 久久国产手机看片| 亚洲一区二区三区在线观看视频 | 亚洲人体偷拍| 久久频这里精品99香蕉| 久久伊伊香蕉| 久久久蜜臀国产一区二区| 久久久精品国产99久久精品芒果| 欧美一级大片在线观看| 久久免费黄色| 亚洲日韩第九十九页| 国产精品99久久99久久久二8| 亚洲国产精品一区二区第一页 | 国产精品午夜电影| 国产精品你懂的在线欣赏| 精品二区视频| 中文日韩电影网站| 久久理论片午夜琪琪电影网| 欧美大片免费观看| 一本色道88久久加勒比精品| 亚洲欧美综合v| 欧美日韩国产色视频| 黄色影院成人| 久久在线视频在线| 亚洲在线视频一区| 欧美日韩国产二区| avtt综合网| 亚洲精品在线观| 欧美极品aⅴ影院| 亚洲看片一区| 亚洲日韩视频| 欧美日韩国产黄| 亚洲午夜伦理| 在线亚洲观看| 国产农村妇女精品一区二区| 亚洲一区二区三区午夜| 一区二区三区视频观看| 国产精品萝li| 久久久精品999| 欧美一区二区三区另类| 国内精品免费在线观看| 久久久一区二区三区| 久久精品国产精品亚洲综合| 在线观看视频亚洲| 精品999网站| 美女国产一区| 欧美日韩一卡| 久久久夜夜夜| 欧美人与禽猛交乱配视频| 亚洲专区免费| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲丶国产丶欧美一区二区三区| 欧美a级片网| 国产精品久久久久久久久久免费 | 亚洲区一区二区三区| 欧美涩涩视频| 欧美1区视频| 国产精品免费网站在线观看| 另类av导航| 国产亚洲福利一区| 亚洲免费激情| 在线观看一区欧美| 亚洲欧美国产另类| 国产精品99久久不卡二区| 久久国产精品一区二区三区| 一区二区三区免费在线观看| 久久成人综合视频| 久久久久国产精品一区| 国产精品国产三级国产普通话蜜臀 | 亚洲一卡久久| 欧美体内she精视频| 牛牛影视久久网| 国产精品视频网址| 亚洲一区二区免费| 艳女tv在线观看国产一区| 久久蜜臀精品av| 久久免费视频在线观看| 黄色成人av网| 欧美激情综合五月色丁香小说 | 一本久道久久综合中文字幕| 久久全国免费视频| 亚洲三级色网| 欧美日韩 国产精品| 亚洲美女在线视频| 亚洲日本国产| 国产精品www.| 亚洲欧美成人一区二区三区| 一区二区三区视频观看| 欧美日韩成人网| 亚洲男人的天堂在线观看| 欧美在线视频网站| 国产精品久久久久9999| 午夜精品在线| 亚洲欧洲在线视频| 欧美一区二区三区啪啪| 亚洲高清视频中文字幕| 国产情人节一区| 欧美激情一区二区三区四区| 亚洲在线成人精品| 亚洲精品一区二区网址| 免费国产一区二区| 久久精品中文字幕免费mv| 99在线热播精品免费| 18成人免费观看视频| 国产原创一区二区| 国产精品vip| 艳女tv在线观看国产一区| 久久久99国产精品免费| 亚洲视频免费| 一区二区三区导航| 日韩性生活视频| 亚洲国产精品传媒在线观看| 一区二区三区在线免费观看| 国产一本一道久久香蕉| 国产日产欧美一区| 国产欧美日韩综合一区在线播放| 欧美视频在线观看一区二区| 国产精品成人aaaaa网站| 欧美日韩国产黄| 欧美深夜影院| 国产日韩欧美在线视频观看| 国产欧美一区二区三区在线老狼| 国产日韩欧美| 亚洲三级毛片| 欧美一区二区黄| 美女网站在线免费欧美精品| 亚洲日韩视频| 久久精品在线免费观看| 免费欧美日韩| 国产精品视频不卡| 亚洲国产精品热久久| 性欧美在线看片a免费观看| 久热re这里精品视频在线6| 亚洲激情欧美| 久久成人资源| 国产精品亚洲аv天堂网| 亚洲电影免费观看高清| 亚洲影院色在线观看免费| 欧美第一黄网免费网站| 亚洲一区影音先锋| 欧美成人免费全部| 国产综合精品一区| 香蕉精品999视频一区二区| 亚洲精品在线观看免费| 久热精品视频| 在线日韩电影| 欧美xart系列在线观看| 欧美中在线观看| 亚洲一区二区三区在线| 欧美精品一区三区在线观看| 国际精品欧美精品 | 欧美亚男人的天堂| 日韩一级免费观看| 欧美激情一二三区| 欧美阿v一级看视频| 亚洲精品日韩欧美| 亚洲日本va午夜在线电影| 欧美激情影音先锋| 夜夜精品视频| 在线视频精品| 伊人色综合久久天天| 免费视频亚洲| 欧美日韩一区二区精品| 午夜精品视频一区| 久久国产精品久久久久久久久久 | 亚洲成人资源网| 亚洲国产欧美日韩| 国产精品久久久久久久午夜片 | 国内不卡一区二区三区| 久久久久久网| 欧美日本一区| 久久久欧美精品sm网站| 欧美激情麻豆| 久久久久久久久久久久久久一区| 欧美在线观看一区二区三区| 亚洲国产天堂久久国产91| 蜜臀av国产精品久久久久| 欧美精品久久99久久在免费线| 亚洲人体1000| 久久久噜噜噜久久中文字幕色伊伊| 亚洲精品国偷自产在线99热| 亚洲一区三区视频在线观看| 亚洲精品中文字幕女同| 一区二区三区国产在线| 亚洲激情网站| 香蕉成人久久| 欧美亚洲在线观看| 欧美激情精品久久久久久黑人| 午夜日韩在线观看| 久久人人97超碰国产公开结果| 欧美精品一区二区三区一线天视频 | 国产精品r级在线| 亚洲激情网址| 在线日韩av片| 毛片一区二区| 嫩模写真一区二区三区三州| 国产一区二区三区黄视频| 亚洲欧美一区二区原创| 亚洲欧美精品伊人久久|