今天寫個遺傳演算法的程式,例子很簡單,y=x^3,x∈[0,101],求y最大時x的值,今天實現到累積概率的計算。
貼**:
收穫:#include #include #include #include #define m 6 /*種群規模*/
/*十進位制轉二進位制*/
int transform(int n)
return result;
}/*產生隨機初始種群*/
void creat(int *a)
}/*產生0-1的隨機數*/
void recreat(double *a)
}/*適應度*/
void adapt(int *a, double *p, double *q)
for (i = 0; i < m; i++)
for (i = 1, q[0] = p[0]; i < m; i++) }
void xx(double *r, double *q)
else if (r[i] > q[0] && r[i] < q[1])
else if (r[i] > q[1] && r[i] < q[2])
else if (r[i] > q[2] && r[i] < q[3])
else if (r[i] > q[3] && r[i] < q[4])
else
}}int main(void)
printf("\n");
adapt(population, p, q);
printf("選擇概率為:");
for (i = 0; i < m; i++)
printf("\n");
printf("累積概率為:");
for (i = 0; i < m; i++)
printf("\n");
recreat(r);
return 0;
}
要想子函式直接對主函式中多個值產生影響,可以考慮以位址作為形參, 比如希望子函式執行後產生乙個陣列,可以將主函式中的陣列名作為子函式的形參,在子函式中以位址的形式影響主函式中的數值。
進擊的小白Day021 遺傳演算法(三)
這次不在上次的基礎上改了,先自己根據流程 寫一遍,然後再優化修改。遺傳演算法概念及流程 1 問題描述 求極小值。2 概念介紹 1 種群 個體 染色體 基因 數學模型的乙個可行解成為一條染色體 也可以稱之為個體 乙個可行解有多個元素組成,因此每個元素成為乙個基因,一組 人為設定值,用n表示 可行解組合...
遺傳演算法的理解
遺傳演算法是一種啟發式的隨機多引數優化演算法,能夠解決多種尋優問題,如揹包問題,求解函式極值點,影象配準引數優化,神經網路中的網路權係數的優化等等。遺傳演算法可以說是模擬自然界種群的進化過程。根據達爾文進化理論,生物種群在世世代代的繁衍過程中,適應環境的優良特性會一代代遺傳下去,不適應環境的特性則逐...
遺傳演算法的java實現
我們來研究一下遺傳演算法 ga ga的理論部分可以去google或者wikipedia上問,現在我們通過乙個具體的例子來說明一下。首先,遺傳演算法可以解決很多問題。比如訓練神經網路 本文主要通過下面這個例子來講解 假設有10張卡牌,上面數字為1 10,要求將這10張卡牌分為兩組,每組5張,第一組的5...