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

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

<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(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>
            亚洲男女自偷自拍| 亚洲一区日本| 国产麻豆精品在线观看| 最新69国产成人精品视频免费| 国产精品成人一区| 亚洲国产日韩一区| 精品动漫3d一区二区三区免费版 | 国产日韩欧美不卡| 亚洲精品免费观看| 亚洲高清123| 欧美专区在线观看一区| 亚洲欧美影音先锋| 欧美日韩一卡二卡| 亚洲人成小说网站色在线| 在线观看日韩www视频免费| 亚洲尤物在线视频观看| 在线中文字幕一区| 欧美成在线观看| 亚洲高清在线观看一区| 亚洲国产精品ⅴa在线观看| 亚洲欧美日韩系列| 欧美一区二区女人| 国产精品视频1区| 亚洲视频导航| 亚洲女同性videos| 国产精品高潮呻吟久久| 99精品欧美一区| 亚洲调教视频在线观看| 欧美精品999| 亚洲精品久久久一区二区三区| 亚洲激情在线激情| 欧美激情乱人伦| 亚洲国产精品成人精品| 亚洲精品美女| 欧美日韩在线大尺度| 一本色道久久综合狠狠躁篇怎么玩| 一区二区三区四区在线| 欧美日韩国产探花| 一区二区三区四区蜜桃| 亚洲欧美在线视频观看| 亚洲精品欧洲精品| 99av国产精品欲麻豆| 欧美日韩亚洲另类| 亚洲视频一区二区免费在线观看| 亚洲欧美日韩一区| 国产亚洲一区二区三区在线播放| 久久99在线观看| 美女免费视频一区| 亚洲精品久久久久久久久| 欧美激情视频给我| 中文亚洲字幕| 久久人人97超碰国产公开结果| 伊人一区二区三区久久精品| 免费在线看一区| 一区二区精品在线| 久久精品亚洲精品| 亚洲国产精品久久久| 欧美精品一区二区三区很污很色的 | 久久午夜激情| 亚洲精品一二区| 国产精品激情| 久久久久久久久蜜桃| 亚洲激情另类| 欧美一区二区三区啪啪| 亚洲国产成人精品久久| 欧美日韩亚洲综合| 欧美在线一区二区| 亚洲乱码国产乱码精品精可以看| 午夜在线一区| 亚洲精品综合| 国产三区二区一区久久| 欧美国产亚洲另类动漫| 性亚洲最疯狂xxxx高清| 亚洲电影免费| 久久精品欧美日韩| 在线视频欧美精品| 一区精品在线| 国产精品尤物福利片在线观看| 免费人成网站在线观看欧美高清| 亚洲在线视频| 最新国产の精品合集bt伙计| 久久久99爱| 亚洲综合色婷婷| 亚洲人久久久| 一区免费观看视频| 国产精品入口日韩视频大尺度| 母乳一区在线观看| 久久国产精品黑丝| 亚洲一区二区三区中文字幕| 亚洲精品日韩欧美| 欧美aⅴ一区二区三区视频| 亚洲欧美在线免费观看| aa成人免费视频| 亚洲黄色三级| 亚洲第一视频| 国产主播一区二区三区| 国产精品国产三级国产aⅴ入口| 欧美激情视频一区二区三区在线播放 | 久久国产精品一区二区| 亚洲视频在线播放| 亚洲精品综合在线| 亚洲激情在线激情| 亚洲电影在线观看| 激情综合在线| 精品粉嫩aⅴ一区二区三区四区| 国产日韩av高清| 国产精品久久久久久久一区探花 | 麻豆精品视频| 麻豆精品网站| 久久综合色8888| 久久久天天操| 久久一区二区三区av| 久久久久久91香蕉国产| 久久国产夜色精品鲁鲁99| 欧美一级久久| 久久精品国产亚洲一区二区| 欧美一区免费| 久久成人一区| 美女黄毛**国产精品啪啪| 免播放器亚洲| 欧美国产亚洲视频| 欧美三级午夜理伦三级中文幕 | 久久国产高清| 久久久久久久国产| 美女脱光内衣内裤视频久久影院 | 欧美黄色aa电影| 欧美大片91| 亚洲黄色av一区| 日韩亚洲视频| 小嫩嫩精品导航| 久久午夜精品| 欧美日韩系列| 国产日韩精品一区| 亚洲国产精品第一区二区| 亚洲美女福利视频网站| 亚洲影视九九影院在线观看| 久久成人免费电影| 欧美成人精品1314www| 亚洲精品久久久久久久久| 在线亚洲伦理| 久久精品二区亚洲w码| 女人色偷偷aa久久天堂| 欧美性猛交一区二区三区精品| 国产视频一区在线观看一区免费| 在线成人激情视频| 亚洲视频狠狠| 久久一区二区三区av| 最新国产拍偷乱拍精品| 午夜亚洲激情| 欧美成人精品1314www| 国产精品成av人在线视午夜片| 国产一区二区三区日韩欧美| 亚洲人成免费| 久久精品国产999大香线蕉| 欧美高潮视频| 亚洲欧美日韩精品一区二区| 美乳少妇欧美精品| 国产欧美精品国产国产专区| 久久久久久久性| 欧美午夜视频| 亚洲国产日韩精品| 香蕉久久一区二区不卡无毒影院 | 这里是久久伊人| 久久理论片午夜琪琪电影网| 亚洲美女中文字幕| 久久综合中文| 国产日韩三区| 亚洲一区二区视频在线| 欧美不卡视频一区发布| 国产精品99久久99久久久二8 | 欧美色区777第一页| 黄色精品一区| 午夜亚洲伦理| 日韩亚洲成人av在线| 男同欧美伦乱| 激情国产一区| 久久精品国产精品 | 亚洲电影在线免费观看| 亚洲综合精品四区| 欧美日本一区| 99re6这里只有精品视频在线观看| 久久久欧美精品| 香蕉国产精品偷在线观看不卡| 欧美性猛交99久久久久99按摩 | 夜夜嗨一区二区| 欧美国产精品一区| 亚洲黄色免费电影| 欧美大片91| 美日韩免费视频| 亚洲国产精品传媒在线观看| 久久久久9999亚洲精品| 欧美亚洲在线| 国内精品**久久毛片app| 久久久精品国产免费观看同学| 亚洲综合色激情五月| 国产伦精品一区二区三区照片91| 亚洲自拍啪啪| 亚洲一区二区三区成人在线视频精品| 欧美性猛交99久久久久99按摩 | 亚洲大黄网站|