1 / 7
文档名称:

遗传算法实验报告.doc

格式:doc   大小:106KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

遗传算法实验报告.doc

上传人:慢慢老师 2021/12/11 文件大小:106 KB

下载得到文件列表

遗传算法实验报告.doc

相关文档

文档介绍

文档介绍:实 验 报 告
【实验名称】___ 遗传算法实验
【实验目的】
熟悉和掌握遗传算法的运行机制和求解的基本方法。
【实验原理】
通过编码、设置种群、设置适应度函数、遗传操作、解码产生需要的解。
f(x)=x*sin(x)+1, xÎ[0,2p],求解f(x)的最大值和最小值。
【实验内容】
确定数据结构
struct poptype
{
double gene[length];//染色体
double realnumber;//对应的实数x
double fitness;//适应度
double rfitness;//相对适应度
double cfitness;//累计适应度
};
struct poptype population[popsize+1];//最后一位存放max/min
struct poptype newpopulation[popsize+1];//
染色体编码
,变量长度为2 π,取小数点后6位,由于
因此,染色体由23位字节的二进制矢量表示,则X与二进制串(<b22 b21…… b0>)2之间的映射如下:
;
.
设计适应度函数
由于要求f(x)的最值,所以适应度函数即可为f(x)。但为了确保在轮赌法选择过程中,每个个体都有被选中的可能性,因此需要将所有适应度调整为大于0的值。因此,设计求最大值的适应度函数如下:
将最小问题转化为求-f(x)的最大值,同理,设计最小值的适应度函数如下:
遗传算法程度设计

根据流程图设计算法程序
设定种群大小,本实验默认为50,再进行种群初始化。
根据收敛准则,是否进行遗传操作。遗传操作主要有选择、交叉、变异三项。其中交叉、变异不能控制进化的方向,因此需要在选择中控制进化的方向朝优的方向发展,本实验采用轮赌法算子来实现,即根据个体的适应度函数值所度量的优劣程度决定它在下一代是被淘汰还是被遗传。交叉从能进入下一代的个体中选出两个,将两者的部分码值进行交换。变异是根据变异概率选出一个个体,随机对其某位编码进行改变。
实验参数调整,主要有迭代数,交叉概率,变异概率这三个参数。-,-。可以通过手动输入进行调试。
【小结或讨论】
最大值:
最小值:
附核心程序:
//种群初始化
void initialize()
{
srand(time(NULL));
int i,j;
for(i=0;i<popsize;i++)
for(j=0;j<23;j++)
{
population[i].gene[j]=rand()%2;
//printf("%\n",population[i].gene[j]);
}
}
//染色体转化为实数x
void transform()
{
int i,j;
for(i=0;i<=popsize+1;i++)
{
population[i].realn