遺傳演算法 二進位制編碼方式

2021-07-09 10:18:47 字數 1254 閱讀 1333

**:

/*

用遺傳演算法求y=x

*sin(10

*pi*x)+2的最大值 -1=<=2

精確到6位小數

pow(2,21)<3

*1000000

2,22)

編碼的二進位制長度為22

*/#include

#include

#include

#include

#include

#define n 3000000

#define pi 3.14159265

#define max(a,b) ((a)>(b)?(a):(b))

#define size 50

#define maxgen 50

#define p_corss 0.75

#define p_mutation 0.05

#define len 22

typedef struct node

node;

node cur[size],next[size],max,min;

double randd()

int randi(int k)

//計算當前種群中各個個體的適應度

void cal_fitness()

}void init()

}cal_fitness();

} int sel() //選擇

}//換代

void tran()

for(int k=0;k2)

else

//變異

if(randd()pos=randi(len-1);

next[k].x[pos]^=next[k].x[pos];

pos=randi(len-1);

next[k+1].x[pos]^=next[k+1].x[pos];}}

//找下一代的最差個體

min=next[0],j=0;

for(i=1;i1;i++)

next[j]=max;

memcpy(cur,next,sizeof(cur));

cal_fitness();

} //列印個體適應度和二進位制編碼

void print(node tmp)

//列印種群

void printcur()

void ga()

int main()

遺傳演算法之二進位制編碼

遺傳演算法 ga 的流程如圖所示 把所需要選擇的特徵進行編號,每乙個特徵就是乙個基因,乙個解就是一串基因的組合。為了減少組合數量,在影象中進行分塊,然後把每一塊看成乙個基因進行組合優化的計算。每個解得基因數量是要通過實驗確定的。遺傳演算法不能直接處理問題空間的引數,必須把它們轉換成遺傳空間的由基因按...

遺傳演算法 matlab實現 多維變數 二進位制編碼

這些日子一直在學習遺傳演算法,在csdn上看了好多關於遺傳演算法的例子,但是找不到乙個符合自己的例子。自己的需求 有四個變數,尋求最優化的結果。跟那些用二元函式舉例的不同。首先介紹下,1.遺傳演算法的流程 假設有100個個體,計算每個個體的適應度 即效能 通過輪盤演算法,選擇100個個體,這100個...

mysql二進位制方式 MySql二進位制連線方式詳解

使用mysql二進位制方式連線 您可以使用mysql二進位制方式進入到mysql命令提示符下來連線mysql資料庫。例項以下是從命令列中連線mysql伺服器的簡單例項 複製 如下 root host mysql u root p enter password 在登入成功後會出現 mysql 命令提示...