遗传算法 练习

本文通过一个实例介绍了如何使用遗传算法寻找函数的极大值。实验内容包括设定种群大小、交叉概率和变异概率,并编写遗传算法程序。在C++中实现了编码、解码、选择、交叉和变异操作,通过迭代找到近似最优解。实验总结了遗传算法的基本步骤和程序设计要点。
摘要由CSDN通过智能技术生成

一、 实验目的

1. 熟悉和掌握遗传算法的原理、实质。

2. 学会使用遗传算法解决问题。

3. 学会编写遗传算法程序寻找函数最值。

 

 

二、 实验内容

 

1. 用遗传算法解决下面函数的极大值问题。   

 

参数设定可参考如下:

种群大小M=10

交叉概率 pc=0.6

变异概率 pm=0.02

迭代次数最多为100

 

三、 算法实现

 

#include<bits/stdc++.h>

#define de(x) cout<<#x<<"="<<x<<endl

#define rep(i,a,b) for(int i=a;i<b;i++)

using namespace std;

const int M=10;

const double pc=0.6;

const double pm=0.02;

const int MAXT=100;

const int gn=5;

struct unit

{

int bit[gn];  

int suit;

} gen[MAXT+5][M];

int gennum=0;

int maxx;

int maxgen;

unit tmp;

unit encode(int x)

{

int i=gn-1;

while(x)

{

tmp.bit[i--]=x%2;

x>>=1;

}

return tmp;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值