精英主义 遗传算法 matlab,遗传算法优化 - osc_lfs4vsih的个人空间 - OSCHINA - 中文开源技术交流社区...

1.遗传算法简介

遗传算法是一种基于自然选择和群体遗传机理的搜索算法,它模拟了自然选择和自然遗传过程中的繁殖、杂交和突变现象.再利用遗传算法求解问题时,问题的每一个可能解都被编码成一个“染色体”,即个体,若干个个体构成了群体(所有可能解).在遗传算法开始时,总是随机的产生一些个体(即初始解),根据预定的目标函数对每一个个体进行评估,给出一个适应度值,基于此适应度值,选择一些个体用来产生下一代,选择操作体现了“适者生存”的原理,“好”的个体被用来产生下一代,“坏”的个体则被淘汰,然后选择出来的个体,经过交叉和变异算子进行再组合生成新的一代,这一代的个体由于继承了上一代的一些优良性状,因而在性能上要优于上一代,这样逐步朝着最优解的方向进化.因此,遗传算法可以看成是一个由可行解组成的群体初步进化的过程.

2.遗传算法原理简析

2.1.GA算法是一种元启发式自然选择的过程 ,遗传算法通常是利用生物启发算子,如变异、交叉和选择来生成高质量的优化和搜索问题的解决方案。

借鉴生物进化理论,遗传算法将问题模拟成一个生物进化过程,通过遗传、交叉、突变、自然选择等操作产生下一代的解,并逐步淘汰适应度函数值低的解,增加适应度函数高的解。这样进化N代后就很有      可能会进化出适应度函数值很高的个体。

2.2.遗传算法的基本术语

个体:可行解

种群:可行解集

染色体:可行解的编码

基因:可行解的分量

基因形式:遗传编码

适应度:适应度函数(评价的值)

选择:选择操作

交叉:编码的交叉操作

变异:可行解码的变异

3.遗传算法的基本操作

遗传算法的操作即模拟生物基因操作:优选适应性强的个体的“选择”;个体间交换基因产生新个体的“交叉”;个体间的基因突变而产生新个体的“变异”。

3.1选择

选择是指从群体中选择优良个体并淘汰劣质个体的操作.它建立在适应度评估的基础上.适应度越大的个体,被选中上的可能性就越大,他的“子孙”在下一代中的个数就越多,选择出来的个体就被放入配对库中.目前常用的选择方法有轮赌盘方法、最佳个体保留法、期望值法、排序选择法、竞争法、线性标准化法.

3.2交叉

交叉就是指把两个父代个体的部分结构加以替换重组而生成新的个体的操作,交叉的目的是为了在下一代产生新的个体,通过交叉操作,遗传算法的搜索能力得到了飞跃性的提高.交叉是遗传算法获取优良个体的重要手段.交叉操作是按照一定的交叉概率在匹配库中随机的选取两个个体进行的,交叉位置也是随机的,交叉概率一般取得很大,为0.6~0.9.

3.3变异

变异就是以很小的变异概率Pm随机地改变种群中个体的某些基因的值,变异操作的基本过程是:产生一个[0,1]之间的随机数rand,如果rand0.5,遗传算法就退化为了随机搜索.

https://blog.csdn.net/jzp1083462154/article/details/80032987

4.遗传算法的操作步骤

开始循环直至找到满意的解。

1.评估每条染色体所对应个体的适应度。

2.遵照适应度越高,选择概率越大的原则,从种群中选择两个个体作为父方和母方。

3.抽取父母双方的染色体,进行交叉,产生子代。

4.对子代的染色体进行变异。

5.重复2,3,4步骤,直到新种群的产生

结束循环

流程图参照老师上课PPT讲解过的内容,这里就不再贴出。

5.遗传算法的实现

遗传算法优化方法:

(1)精英主义(Elitist Strategy)选择:是基本遗传算法的一种优化。为了防止进化过程中产生的最优解被交叉和变异所破坏,可以将每一代中的最优解原封不动的复制到下一代中。

(2)插入操作:可在3个基本操作的基础上增加一个插入操作。插入操作将染色体中的某个随机的片段移位到另一个随机的位置。

求解一个目标函数y=sin(10 *Π *x)/x

部分代码:

608a94e54e4c8fd4c18c3722898fb6ff.png

运行结果

f3f759dccf5b04d27caea865474536f6.png

6.遗传算法的特点

①遗传算法是对参数的编码进行操作,而非对参数本身。

②遗传算法是从许多点开始并行操作,并非局限于一点,从而可有效防止搜索过程收敛于局部最优解。

③遗传算法通过目标函数计算适值,并不需要其它推导和附加信息,因而对问题的依赖性较小。

④遗传算法的寻优规则是由概率决定的,而非确定性的。

⑤遗传算法在解空间进行高效启发式搜索,而非盲目地穷举或完全随机搜索。

⑥遗传算法对所求解的优化问题没有太多的数学要求。

⑦遗传算法具有并行计算的特点,因而可通过大规模并行计算来提高计算速度

7.总结

由于对算法的运用掌握的不是很熟练,多目标求解代码还没运行出来,给大家提供一个概念理解的参考链接:https://www.cnblogs.com/lomper/p/3831428.html

计算智能这门课还需要多多熟悉matlab软件,发现这位博主讲解的挺仔细:https://blog.csdn.net/zhazhazl/article/details/52192595?tdsourcetag=s_pctim_aiomsg

另外这位博主讲解的算法分析很不错:https://blog.csdn.net/u010451580/article/details/51178225

本文参考:

https://blog.csdn.net/sinat_38321889/article/details/79001599?tdsourcetag=s_pctim_aiomsg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 类静态属性_如何从Python中的类中引用静态属性?

您面临的问题是因为您不了解类声明的作用域是如何工作的。类声明在其自己的作用域内执行。执行完成后,将创建一个新的类对象,并将获得的范围作为其__dict__附加到该类。在注意:类范围是从方法范围内搜索的而不是!这意味着当在方法…

php后台管理员登录密码错误,如果后台管理员的密码错误,我该怎么办,还有两种找回密码的方法...

Dedecms是中国著名的网站管理核心. 由于编织梦想简单易用,因此可以进行二次开发,并且可以实现各种网站. 在使用dedecms的过程中,如果忘记了梦想管理后台的密码怎么办?神山个人博客分享了两种修改(重置)管理员密码的方法.1. 下载织…

python logging模块 默认_python logging模块

函数式简单配置importlogginglogging.debug(debug message) #计算或者工作的细节logging.info(info message) #记录一些用户的增删改查的操作logging.warning(warning message) #警告操作logging.error(error message) #警告操作logging.critical(critical message) #批判的 直…

mac安装多php环境变量配置,Mac如何安装多个php版本

Mac安装多个php版本的方法:首先打开Mac上的终端工具,并确认安装Homebrew;然后安装【php5.5】及对应扩展;最后执行指令【brew unlink php55】删除brew中php的软链即可。Mac安装多个php版本的方法:1、打开Mac上的终端工具…

phpexcel 获取工作簿名称_工作分享 | Excel快速汇总考勤

点击蓝字关注我们每月月底,各位同事把考勤表报到部门后,检查核对再汇总一份总考勤表上报,传统的复制粘贴总是占用不少时间,还容易出错。为提高工作效率,现利用Excel实现考勤快速汇总。01 统一考勤模板,每个…

php进程通讯方式,PHP进程模型、进程通讯方式、进程线程的区别分别有哪些?

PHP进程模型是一个正在执行的程序,可以分配给处理器并由处理器执行的一个实体;PHP进程通讯方式有管道及有名管道,信号,共享内存等;PHP进程线程的区别有进程是资源的分配和调度的一个独立单元,而线程是CPU调…

iphone怎样关闭副屏_小米新设计专利曝光:“Z”型折叠屏手机

折叠屏手机可以说是最近几年的热门话题,虽然并未大面积普及,但已有多家厂商量产上市了旗下的折叠屏手机。同样作为知名厂商的小米,曾在此前展示过旗下的折叠屏手机视频,但并未真正发布。而近日曝光的一份小米旗下专利设计则表明小…

php socket开发斗地主,基于状态机模型的斗地主游戏(NodeJsSocketIO)

1. 系统结构系统考虑使用Nodejs和SocketIo实现服务器端逻辑,前端使用HTML5。2. 逻辑流程1 . 主要逻辑包括用户进入游戏、等待对家进入游戏、游戏过程、结束统计这4个过程。2 . 游戏过程的逻辑具体如下3 . 服务器-客户端通讯逻辑如下3. 客户端界面设计1 . 登录界面2 …

python几何拼贴画_图形几何图形拼贴画

四边形教学内容:教材第34页?——36页教学目标:1.直观感知四边形,能区分和辨认四边形,知道四边形的特征.进一步认识长方形和正方形,知道它们的角都是直角.2.通过画一画、找一找、拼一拼等活动,培养学生[此文转于斐斐课件园?FFKJ.Net]的观察比较和概括抽象的能力,发展空间想象能…

wgs84转经纬度_wgs84经纬度转为cgcs2000平面坐标

航拍测绘中,pos数据多数是wgs84,而GCP坐标是2000或者80坐标。有如下2情况需要转换坐标,1.不同坐标系刺点时,位置相差较远,影响工作效率。2.该软件不支持wgs84转国家2000,比如photoscan。所以需要把pos数据转为跟像控点…

php system 255,GitHub - dwg255/OA-SYS: OA办公系统开源项目

OA-SYSOA办公系统开源项目这是一套主要用于演示、学习为目的OA办公自动化系统。该系统具备基本的自动化办公功能。在使用前请确保您已阅读本系统协议部分内容。主要功能列表用户和用户组、权限管理个人网盘和分享文件生产计划任务和业绩考评通讯录和内部短消息公告系统个人工作…

wpcomments post.php,WordPress移动wp-comments-post文件防垃圾评论

将wp-comments-post文件移动到主题目录中达到阻止垃圾评论。需要修改程序文件:一、首先打开Wordpress程序根目录的wp-comments-pos.php文件,用:require( dirname(__FILE__) . /../../../wp-load.php );替换第16行的:require( dirn…

人工蜂群算法python_改进的人工蜂群算法解决聚类问题(在Python中的分步实现)...

在之前的文章中,我介绍了如何通过实施名为Artificial Bee Colony(ABC)的群集智能(SI)算法来解决现实世界中的优化问题。现在是时候让我们掌握一些真实的数据并解释我们如何使用我们的ABC算法的Python实现来执行群集任务。但在此之前,让我们深入了解一下聚…

python涉及到的逻辑_涉及逻辑运算的python表达式的运算顺序

以下代码并不报错,而我理解在”point 1″处如果先运算小括号里面的表达式,而y并不存在,不应该报错吗?难道发现x 10的短路运算优先于小括号里面的表达式运算?将这一行中x 10改为x 100后报错了,这个理解没…

oracle sql last_value,図でイメージするOracle DatabaseのSQL全集 第3回 分析関数

指定したソートキーでの、最初の行の値を求めるのが、First_Value関数。指定したソートキーでの、最後の行の値を求めるのが、Last_Value関数。指定したソートキーでの、(Row_Numberな順位が)n番目の行の値を求めるのが、nth_Value関数となります。Oracle11gR2でnth_Value関数が…

python读取字典元素笔记_Python 学习笔记 - 字典

Python 字典字典是一种无序的、可修改的、可索引的容器。字典使用花括号声明,具有键和值。mydic {name:孙悟空,origin:猴子}print(mydic)结果:{name: 孙悟空, origin: 猴子}访问字典mydic {name:孙悟空,origin:猴子}print(mydic[name])结果&#xff1a…

oracle =1,oracle中的 where 1=1 和where 1 !=1

11 永真&#xff0c; 1<>1 永假。1<>1 的用处&#xff1a; 用于只取结构不取数据的场合例如&#xff1a;create table table_ly_temp tablespace ly_temp asselect * from table_ly where 1<>112建成一个与table_ly 结构相同的表table_ly_temp &#xff0c;但…

企业信息化投入中咨询服务_全过程工程咨询服务核心价值是什么

建筑行业服务现状传统建设工程的目标、计划、控制都以参与单位个体为主要对象&#xff0c;项目管理的阶段性和局部性割裂了项目的内在联系&#xff0c;导致项目管理存在明显的管理弊端&#xff0c;这种模式已经与国际主流的建设管理模式脱轨。“专而不全”、“多小散”企业的参…

sp_addlinkedserver oracle,sp_addlinkedserver使用方法

Exec sp_droplinkedsrvlogin DBVIP,Null --删除映射(录与链接服务器上远程登录之间的映射)Exec sp_dropserver DBVIP --删除远程服务器链接EXEC sp_addlinkedserverserverDBVIP,--被访问的服务器别名srvproduct,providerSQLOLEDB,datasrc"…

oracle的undo表空间不足,undo表空间不足,ORA-30036 unable to extend segment by ...

一、一次更新或者删除大量数据&#xff0c;这些数据需要保存在undo表空间中(直到提交或回滚后这些undo表空间中的数据才允许被覆盖)&#xff0c;如果undo表空间不足&#xff0c;就会报ORA-30036错误。下面是两种解决办法&#xff1a;1、增加undo表空间大小&#xff0c;或将undo…