**:
/*
用遺傳演算法求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 命令提示...