一、 实验目的
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;

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

被折叠的 条评论
为什么被折叠?



