遗传算法中的轮盘赌代码
时间: 2024-05-19 12:09:29 浏览: 14
遗传算法中的轮盘赌是一种常用的选择算子,其代码实现如下:
```
// 计算适应度总和
double sumFitness = 0;
for (int i = 0; i < POPULATION_SIZE; i++) {
sumFitness += population[i].fitness;
}
// 计算每个个体的选择概率
for (int i = 0; i < POPULATION_SIZE; i++) {
population[i].selectionProbability = population[i].fitness / sumFitness;
}
// 构建轮盘赌
double rouletteWheel[POPULATION_SIZE];
rouletteWheel = population.selectionProbability;
for (int i = 1; i < POPULATION_SIZE; i++) {
rouletteWheel[i] = rouletteWheel[i-1] + population[i].selectionProbability;
}
// 选择新个体
for (int i = 0; i < POPULATION_SIZE; i++) {
double r = (double)rand() / RAND_MAX;
for (int j = 0; j < POPULATION_SIZE; j++) {
if (r <= rouletteWheel[j]) {
newPopulation[i] = population[j];
break;
}
}
}
```
以上代码中,先计算出适应度总和,然后计算每个个体的选择概率,接着构建轮盘赌,最后根据随机数选择新个体。其中,rouletteWheel数组用于存储轮盘赌每个刻度的累加概率,r为随机数,当随机数小于等于某个刻度时,就选中该刻度对应的个体。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)