遗传算法求二元函数极值怎么编码_(整理)遗传算法求解函数极值C语言代码

该博客介绍了如何用C语言实现遗传算法来寻找二元函数的极值。通过定义个体结构,初始化种群,进行选择、交叉和变异操作,以及计算个体的代价值,最终实现优化求解过程。代码示例展示了具体的实现细节。
摘要由CSDN通过智能技术生成

精品文档

精品文档

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

#include "math.h"

#include "time.h"

#define num_C

12

//

个体的个数,前

6

位表示

x1

,后

6

位表示

x2

#define N

100

//

群体规模为

100

#define pc

0.9

//

交叉概率为

0.9

#define pm

0.1

//

变异概率为

10%

#define ps

0.6

//

进行选择时保留的比例

#define genmax 2000

//

最大代数

200

int RandomInteger(int low,int high);

void Initial_gen(struct unit group[N]);

void Sort(struct unit group[N]);

void Copy_unit(struct unit *p1,struct unit *p2);

void Cross(struct unit *p3,struct unit *p4);

void Varation(struct unit group[N],int i);

void Evolution(struct unit group[N]);

float Calculate_cost(struct unit *p);

void Print_optimum(struct unit group[N],int k);

/*

定义个体信息

*/

typedef struct unit

{

int path[num_C]; //

每个个体的信息

double cost;

//

个体代价值

};

struct unit group[N]; //

种群变量

group

int num_gen=0; //

记录当前达到第几代

int main()

{

int i,j;

srand((int)time(NULL)); //

初始化随机数发生器

Initial_gen(group);

//

初始化种群

Evolution(group);

//

进化:选择、交叉、变异

getch();

return 0;

}

/*

初始化种群

*/

void Initial_gen(struct unit group[N])

{

int i,j;

struct unit *p;

for(i=0;i<=N-1;i++) //

初始化种群里的

100

个个体

{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值