遗传算法c语言程序

一 需求分析

1.本程序演示的是用简单遗传算法随机一个种群,然后根据所给的交叉率,变异率,世代数计算最大适应度所在的代数

2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的命令;相应的输入数据和运算结果显示在其后。

3.测试数据

输入初始变量后用y=100*(x1*x1-x2)*(x1*x2-x2)+(1-x1)*(1-x1)其中-2.048<=x1,x2<=2.048作适应度函数求最大适应度即为函数的最大值

二 概要设计

1.程序流程图

2.类型定义

int popsize; //种群大小

int maxgeneration; //最大世代数

double pc; //交叉率

double pm; //变异率

struct individual

{

char chrom[chromlength+1];

double value;

double fitness; //适应度

};

int generation; //世代数

int best_index;

int worst_index;

struct individual bestindividual; //最佳个体

struct individual worstindividual; //最差个体

struct individual currentbest;

struct individual population[POPSIZE];

3.函数声明

void generateinitialpopulation();

void generatenextpopulation();

void evaluatepopulation();

long decodechromosome(char *,int,int);

void calculateobjectvalue();

void calculatefitnessvalue();

void findbestandworstindividual();

void performevolution();

void selectoperator();

void crossoveroperator();

void mutationoperator();

void input();

void outputtextreport();

4.程序的各函数的简单算法说明如下:

(1).void generateinitialpopulation ()和void input ()初始化种群和遗传算法参数。

input() 函数输入种群大小,染色体长度,最大世代数,交叉率,变异率等参数。

(2) void calculateobjectvalue();计算适应度函数值 。

根据给定的变量用适应度函数计算然后返回适度值。

(3)选择函数selectoperator()

在函数selectoperator()中首先用rand ()函数产生0~1间的选择算子,当适度累计值不为零时,比较各个体所占总的适应度百分比的累计和与选择算子,直到达到选择算子的值那个个体就被选出,即适应度为fi的个体以fi/∑fk的概率继续存在

能被选中,以便增加下一代群体的多样性。

(4)染色体交叉函数crossoveroperator()

这是遗传算法中的最重要的函数之一,它是对个体两个变量所合成的染色体进行交叉,而不是变量染色体的交叉,这要搞清楚。首先用rand ()函数产生随机概率,若小于交叉概率,则进行染色体交叉,同时交叉次数加1。这时又要用rand()函数随机产生一位交叉位,把染色体的交叉位的后面部分交叉即可;若大于交叉概率,则进行简单的染色体复制即可。

(5)染色体变异函数mutation()

变异是针对染色体字符变异的,而不是对个体而言,即个体变异的概率是一样。随机产生比较概率,若小于变异概率,则1变为0,0变为1,同时变异次数加1。

(6)long decodechromosome(char *,int,int)

本函数是染色体解码函数,它将以数组形式存储的二进制数转成十进制数,然后才能用适应度函数计算。

(7)void findbestandworstindividual()本函数是求最大适应度个体的,每一代的所有个体都要和初始的最佳比较,如果大于就赋给最佳。

(8)void outputtextreport () 输出种群统计结果

输出每一代的种群的最大适应度和平均适应度,最后输出全局最大值

三 运行环境

本程序的开发工具是VC++,在

c语言遗传算法百度云,遗传算法c语言程序.doc相关推荐

  1. c语言文件加密解密单词统计,C语言文件加密解密及单词统计程序.doc

    C语言文件加密解密及单词统计程序.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 15.9 积分  高级语言程序设计 课程设计学 院 计算 ...

  2. 郝斌c语言大纲百度云,C语言学习大纲 郝斌(讲解)

    教你如何快速掌握C语言,郝斌讲解,幽默而且加深了解.... 语言概述: 1.为什么学习C语言 1). C的起源和发展 2).C的特点 优点 代码量小 速度快 功能强大 缺点 危险性高 开发周期长 可移 ...

  3. c语言课设报告时钟vc环境,C语言课程设计报告模拟时钟转动程序.doc

    C语言课程设计报告模拟时钟转动程序 PAGE 课程设计报告 题 目 课 程 名 称 结构化程序设计课程设计 院 部 名 称 专 业 班 级 学 生 姓 名 王蕾 学 号 课程设计地点 课程设计学时 指 ...

  4. pytorch gpu版本的最全安装教程,含环境配置、CUDA(百度云下载)安装程序失败解决方案

    看过我cpu版本的pytorch小白安装教程CPU版pytorch小白教程应该已经会设置清华源了,这里不再叙述,gpu版本的pytorch会默认以清华镜像源来下载,速度不用担心. 请关闭杀毒软件 尤其 ...

  5. 百度云批量离线python程序

    有时下载一些资源时很慢,无意中发现百度云可以离线下载,利用这一功能可以将文件存到云盘里,这样再下载就快了, 有时要离线的资源多,一个个来太费手,就想能不能批量离线,可惜人家并没有提供这个功能. 曾看到 ...

  6. c语言烟花百度云,C语言实现放烟花的程序

    这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...

  7. 北华大学c语言题库百度云,北华大学C语言题库精简打印版(全).doc

    北华大学C语言题库精简打印版(全).doc 北华大学C语言题库精简打印版(全)一.判断题 - 正确篇1.字符常量的长度肯定为1.Y2.在调用函数时,实参把值传送给对应位置上的形参,形参的值不能传给实参 ...

  8. 一起学Java虚拟机(一),数据结构java语言描述百度云

    我们可以把Java程序设计语言.Java虚拟机.Java类库这三部分统称为JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境. JVM 是 JDK 的一部分 ...

  9. c语言深度剖析百度云,《C语言深度剖析》笔记

    <C语言深度剖析>笔记 1.在c语言中,凡不加返回值类型限定的函数,就会被编译器作为返 回整形处理. 2.register 变量必须是一个单个的值,并且其长度应小于或等于整型 的长度.而且 ...

  10. 飞机大战C语言代码百度云,C语言代码实现飞机大战

    本文实例为大家分享了C语言实现简单飞机大战的具体代码,供大家参考,具体内容如下 这个游戏的功能很单一,也就是"飞机大战",哈哈哈哈.总共只有300多行代码左右,你也可以想想它会有多 ...

最新文章

  1. iPhone全球技术巡讲北京站,WWDRChina 2009 Beijing
  2. 【知识星球】猫猫狗狗与深度学习那些事儿
  3. Android开发之系统信息——获取Android手机中SD卡内存信息
  4. hook koa web 码云_gitee码云使用webhook
  5. 加快Android Studio的编译速度
  6. ftp服务器收集文件,ftp服务器收集文件
  7. Python中dataframe数据框中选择某一列非空的行
  8. Oracle字符到数值转换错误
  9. Kendo UI 模板概述
  10. 日语输入法电脑版_攻略!教你如何用手机打日语
  11. sort colors 三色排序
  12. include包含文件查找的顺序 .
  13. 我们一般用的正则表达式合集和工具 any-rule
  14. 随手写了一段C++访问LDAP, 并且获取sid的代码
  15. python opencv制作隐藏图片
  16. Linux电脑睡眠后黑屏打不开,电脑睡眠唤醒后一直是黑屏状态怎么办?
  17. 不同局域网下共享打印机的解决思路(保证可用)
  18. 录音转文字工具,支持6大语音识别引擎识别,非常好用的网赚工具!
  19. python 多因素方差分析_多因素方差分析估计平方和的三种方法
  20. 可口可乐启示录:把世界装进瓶子里的4个商人【姜太公公】

热门文章

  1. linux 搭建webserver-BOA
  2. Java简答题库_java题库3-简答题.doc
  3. Matlab学习:读取excel中数据
  4. 家用WIFI网络摄像头(P2P)安全吗?记一次海思Hi3518方案摄像头的测试
  5. DSP28335学习记录(一)
  6. opencv java 人脸识别_Java OpenCV实现人脸识别过程详解
  7. nvme驱动架构分析1
  8. 数据库:SQL数据查询(详细、全面)
  9. SPSS中介效应与调节效应插件Process简介(1)
  10. MyBatis3——入门介绍