这次不在上次的基础上改了,先自己根据流程 写一遍,然后再优化修改。
遗传算法概念及流程:
1、问题描述:
求极小值。
2、概念介绍
(1)种群、个体、染色体、基因
数学模型的一个可行解成为一条染色体(也可以称之为个体),一个可行解有多个元素组成,因此每个元素成为一个基因,一组(人为设定值,用n表示)可行解组合起来就形成了种群。
在这个问题中,1种群=n个体=n染色体=5n基因
今天实现了种群初始化、适应度计算、选择概率和累计概率计算这几个步骤,贴代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.1415926
#define BOUND_DOWN 0
#define BOUND_UP (0.9 * PI)
#define POP_SIZE 4
#define CHROM_LEN 5
#define EVO_NUM 500
/*目标函数值*/
float objFuncVal(float *a)
{
float x[5];
float f = 0;
memset(x, 0, sizeof(x));
x[0] = *a;
x[1] = *(a + 1);
x[2] = *(a + 2);
x[3] = *(a + 3);
x[4] = *(a + 4);
f = -5 * sin(x[0])*sin(x[1])*si