進擊的小白Day012 遺傳演算法(一)

2021-09-01 00:09:01 字數 1079 閱讀 8750

今天寫個遺傳演算法的程式,例子很簡單,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...