遺傳演算法的C 實現及應用

2021-05-10 04:33:39 字數 1512 閱讀 9629

以下**實現了乙個簡單的花朵進化的模擬過程。

花朵的種群數量是10,共進化了50代。

通過執行程式,你會發現通過不斷的進化,種群的總的適應環境的能力在逐步提高(fitness的值下降)。

實現**:

using system;

using system.collections.generic;

using system.text;

namespace ga}}

class world

/**

/// 初始化第一代花朵的基因結構

///

public void init()

currenttemperature = rnd.next(1, 75);

currentwater = rnd.next(1, 75);

currentsunlight = rnd.next(1, 75);

currentnutrient = rnd.next(1, 75);

currentbeneficialinsect = rnd.next(1, 75);

currentharmfulinsect = rnd.next(1, 75);

}/**

/// 越大說明花朵的適應環境的能力差,**明適應環境的能力強

///

///

///

private int fitness(int flower)

/**

/// 排除適應能力差的花朵,讓適應能力強的花朵雜交繁殖,產生下一代。同時有一定的概率變異。

///

public void evolve()

temperature[leastfitindex] = temperature[rnd.next(1, 10)];

water[leastfitindex] = water[rnd.next(1, 10)];

sunlight[leastfitindex] = sunlight[rnd.next(1, 10)];

nutrient[leastfitindex] = nutrient[rnd.next(1, 10)];

beneficialinsect[leastfitindex] = beneficialinsect[rnd.next(1, 10)];

harmfulinsect[leastfitindex] = harmfulinsect[rnd.next(1, 10)];

for (i = 1; i < kmaxflowers; i++)

for (i = 1; i < kmaxflowers; i++)

for (i = 1; i < kmaxflowers; i++)

}/**

/// 顯示種群中個體對環境的適應能力,還有所有個體對環境的適應能力之和。

///

public void show()

console.writeline("fitness sum is " + sum); }}

}

遺傳演算法 C

示例為計算函式為y x x 1024的最大值,32 x 31.參考 採用輪盤賭演算法作為選擇運算元的演算法 更新下一代 基於輪盤選擇選擇方法,進行基因型的選擇 private static void updatenext else console.writeline totalfitvalue to...

遺傳演算法 C

chromosome的定義,沒有定義複製方法,所以,在往子代傳遞的時候,變成了引用傳遞,在傳遞了幾代之後,後代其實全部變成了乙個染色體 隨機數取值的時候臨時定義的random變數,導致迴圈中每次取到的隨機數有很大程度是一樣的 輪盤賭選擇時,沒有定義子代種群,直接在當前種群中操作,會覆蓋一部分父代,導...

遺傳演算法及matlab簡單實現

遺傳演算法的實現 遺傳演算法的一次迭代稱為一代,每一代都有一組解。新的一組解不但可以有選擇的保留一些適度值高的舊的解,而且可以包括一些由其它解結合得到的新解。最初的一組解 初始群體 是隨機生成的,之後的每組解由遺傳操作生成。每個解都通過乙個與目標函式相關的適應度函式給予評價,通過遺傳過程不斷重複,達...