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

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 閱讀(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>
            美女精品国产| 久久免费视频一区| 国产精品毛片一区二区三区| 免费欧美日韩国产三级电影| 久久不见久久见免费视频1| 午夜亚洲伦理| 久久福利一区| 免费观看国产成人| 欧美噜噜久久久xxx| 欧美色视频一区| 国产精品一区在线观看| 国产三级欧美三级日产三级99| 国产日韩欧美在线视频观看| 国产专区一区| 最新日韩中文字幕| 亚洲影音先锋| 久久精品中文字幕一区| 欧美成人午夜77777| av72成人在线| 久久久精品日韩| 欧美a级片一区| 国产精品免费在线 | 久久精品最新地址| 美女视频黄 久久| 欧美日韩无遮挡| 国产一区二区三区久久精品| 亚洲国产精品一区二区久| 亚洲一区二区在线播放| 久热精品视频在线免费观看| 亚洲精选大片| 久久精品欧美日韩| 国产精品久久久久久久久久免费看| 国产亚洲欧洲997久久综合| 亚洲精品乱码久久久久久日本蜜臀 | 久久综合中文字幕| 国产精品视频99| 亚洲精品小视频在线观看| 欧美有码在线视频| 亚洲国产1区| 日韩视频一区| 美日韩在线观看| 国内揄拍国内精品久久| 亚洲调教视频在线观看| 亚洲国产精品久久久| 久久精品官网| 国产精品一级在线| 在线视频欧美日韩精品| 欧美成ee人免费视频| 亚洲视频在线观看视频| 欧美区国产区| 亚洲三级观看| 欧美激情a∨在线视频播放| 麻豆成人精品| 欧美一区二区三区在线| 国产精品综合| 亚洲欧美www| 在线午夜精品| 国产精品国产三级欧美二区| 一区二区三区.www| 亚洲靠逼com| 欧美精品久久天天躁 | 亚洲欧美视频在线观看| 9国产精品视频| 欧美日韩在线三级| 亚洲天堂免费在线观看视频| 亚洲精品综合精品自拍| 欧美日韩另类丝袜其他| 99精品久久| 亚洲日本成人| 欧美日韩亚洲激情| 亚洲午夜精品一区二区| 亚洲一区二区免费视频| 国产欧美视频一区二区| 久久精品一区蜜桃臀影院 | 欧美一区二区三区免费观看视频| 一区二区三区高清不卡| 国产精品久久久久久超碰 | 久久男人资源视频| 在线观看视频一区| 欧美福利一区二区| 欧美日本高清一区| 亚洲影视在线| 久久激情一区| 亚洲精品五月天| 亚洲在线观看视频网站| 国内精品久久久久久久97牛牛| 欧美韩日精品| 国产精品美腿一区在线看| 香蕉成人伊视频在线观看| 久久精品成人一区二区三区蜜臀 | 免费成人激情视频| 久热成人在线视频| 99人久久精品视频最新地址| 一级日韩一区在线观看| 国产色综合网| 亚洲精品日韩欧美| 国产亚洲一区精品| 亚洲精品免费在线| 国产在线视频欧美| 日韩视频国产视频| 一区二区三区在线不卡| 亚洲国产一区二区三区青草影视| 国产精品第13页| 噜噜噜噜噜久久久久久91| 99国产精品国产精品毛片| 国产精品一区二区a| 亚洲国产成人精品女人久久久| 国产精品美女| 欧美成人午夜激情在线| 国产精品网站在线播放| 亚洲国产成人精品久久| 国产资源精品在线观看| 99re在线精品| 亚洲国产天堂久久综合网| 亚洲一区欧美二区| 99一区二区| 久热成人在线视频| 久久久999精品免费| 欧美网站在线观看| 亚洲国产一区二区三区青草影视| 韩国女主播一区二区三区| 一区二区三区三区在线| 亚洲久久一区二区| 久久综合色播五月| 狼狼综合久久久久综合网| 国产欧美日韩另类视频免费观看| 一本久道综合久久精品| 亚洲精选成人| 欧美福利精品| 亚洲国产精品小视频| 伊人久久综合| 久久精品色图| 久久综合久色欧美综合狠狠 | 亚洲国产日韩在线一区模特| 久久精品观看| 美女日韩在线中文字幕| 国产一区二区在线观看免费播放| 亚洲女同精品视频| 欧美一区激情视频在线观看| 国产精品稀缺呦系列在线| 亚洲一区二区三区免费视频| 亚洲尤物视频在线| 国产精品成人久久久久| 亚洲永久在线| 久久人人97超碰精品888| 极品裸体白嫩激情啪啪国产精品 | 欧美日韩国产色视频| 亚洲精品免费观看| 亚洲图片在区色| 欧美午夜一区二区| 亚洲午夜在线| 久久精品国产清高在天天线 | 在线播放日韩| 免费中文字幕日韩欧美| 91久久久久久久久| 一区二区精品| 欧美特黄一区| 欧美一区二区私人影院日本| 久久久久久亚洲精品中文字幕| 伊人蜜桃色噜噜激情综合| 欧美激情aⅴ一区二区三区| 日韩视频免费观看| 久久激情五月激情| 亚洲国产精品国自产拍av秋霞| 欧美精品色综合| 亚洲一二三区精品| 久久久亚洲国产天美传媒修理工| 亚洲福利精品| 欧美性一区二区| 欧美一区二区高清| 在线观看日韩av| 欧美精品日韩一区| 亚洲欧美日韩电影| 欧美激情免费在线| 亚洲综合电影| 亚洲国产高清一区| 国产精品日本| 欧美成人嫩草网站| 午夜激情综合网| 日韩一二三在线视频播| 久久久久久69| 在线亚洲一区观看| 亚洲国产精品成人精品| 国产日韩av在线播放| 欧美日韩免费观看一区=区三区| 欧美在线啊v一区| 夜夜嗨av色综合久久久综合网| 久久视频在线视频| 亚洲欧美成aⅴ人在线观看| 亚洲国产欧美一区| 国产欧美日韩不卡| 欧美性色aⅴ视频一区日韩精品| 久久精品视频一| 亚洲免费小视频| 91久久精品www人人做人人爽| 久久久综合网站| 久久超碰97中文字幕| 亚洲午夜电影在线观看| 亚洲日本va午夜在线影院| 国产一区二区三区最好精华液|