遗传算法 c语言代码
时间: 2023-01-31 08:09:41 浏览: 156
遗传算法是一种模拟自然进化的进化算法,它被用于解决复杂的优化问题。在遗传算法中,我们使用一组解决方案(叫做种群)来解决问题,并使用自然选择的原理来选择最优解。
下面是一个简单的遗传算法的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define POPULATION_SIZE 100
#define CHROMOSOME_LENGTH 20
#define MAX_ITERATIONS 1000
// 随机生成 0 或 1
int rand_bit() {
return rand() % 2;
}
// 对每个染色体打分
int evaluate(int *chromosome) {
int score = 0;
for (int i = 0; i < CHROMOSOME_LENGTH; i++) {
score += chromosome[i];
}
return score;
}
// 交叉两个染色体
void crossover(int *chromosome1, int *chromosome2) {
int crossover_point = rand() % CHROMOSOME_LENGTH;
for (int i = crossover_point; i < CHROMOSOME_LENGTH; i++) {
int temp = chromosome1[i];
chromosome1[i] = chromosome2[i];
chromosome2[i] = temp;
}
}
// 变异一个染色体
void mutate(int *chromosome) {
int mutation_point = rand() % CHROMOSOME_LENGTH;
chromosome[mutation_point] = !chromosome[mutation_point];
}
int main(int argc, char **argv) {
srand(time(NULL));
// 初始化种群
int population[POPULATION_SIZE][CHROMOSOME_LENGTH];
for (int i = 0; i < POPULATION_SIZE; i++) {
for (int j = 0; j < CHROMOSOME_LENGTH; j++) {
population[i][j] = rand_bit();
}
}
// 迭代寻找最优解
for (int i = 0; i < MAX_ITERATIONS; i++) {
// 评估每个染色体的
阅读全文