遗传算法GA-算法原理与算法流程图

本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com

目录

一、遗传算法流程图    

 1.1. 遗传算法流程图    

二、遗传算法的思想与机制   

2.1 遗传算法的思想    

2.2 遗传算法的机制介绍    

三、 遗传算法的算法流程   

3.1 遗传算法的算法流程    

3.2 关于遗传算法的自定义内容    


遗传算法是著名的智能算法之一,它借鉴于生物遗传进行的机制来寻找一个优秀的解
本文讲解遗传算法的思路和具体流程,并剖析遗传算法的核心思路

一、遗传算法流程图    

 1.1. 遗传算法流程图    

 遗传算法(Genetic Algorithm,GA)是一种群体寻优算法
遗传算法的算法流程图如下:


遗传算法是一个灵活的算法,本流程图中仅包含遗传算法中最基础必备的核心内容
在实际应用中需要根据具体问题设计具体的染色体交换、基因变异方式

二、遗传算法的思想与机制   

本节介绍遗传算法的思想与机制,初步了解遗传算法是什么

2.1 遗传算法的思想    

遗传算法是一种借鉴生物遗传进化机制而设计的寻优算法,生物在多代种群迭代中,优胜劣态,最终种群越来越优秀 

这种机制可以迁移到我们的数学求最优值问题上来,种群个体就相当于我们的解,目标函数就是衡量这个个体优秀程度的指标,所以我们可以借鉴生物是怎么进化到一个优秀个体,来让我们的解,也进化(寻找)到一个更优秀的解

2.2 遗传算法的机制介绍    

遗传算法是以生物进化的概念而设计的一种寻优算法
主要借鉴的机制有三,如下:
👉1. 种群与编码                   
👉2. 染色体交换与基因突变
👉3. 适者生存  

种群与编码
在刚开始时,遗传算法会先初始化一个种群,即一组X,种群的个体(即每个X)都以编码的形式存在,如下 


染色体交换与基因突变
然后遗传算法通过个体之间的染色体交换和基因突变来产生新的种群


适者生存
最后,根据种群个体的适应度来选择是否能遗留到下一代种群


通过这种机制,不断的迭代,使得种群的质量不断优化,直到种群无法进化,或者达到最大迭代次数时,终止迭代,最后输出最优的个体

三、 遗传算法的算法流程   

本节展示遗传算法的具体算法流程

3.1 遗传算法的算法流程    

遗传算法的算法流程如下:
一、初始化种群                                                                                 
       初始化g个解                                                                         
二、迭代T轮                                                                                       
       2.1 染色体交换                                                                            
             解与解之间进行部分交换                            
             交换的方式是多种多样,具体问题有具体方案         
        2.2 基因变异                                                                             
             抽个别解作单独的随机调整                         
        2.3 计算个体适应度                                                                   
             越优秀的解,适应度越大                           
        2.4 赌轮盘选择一下代                                                               
             (1) 生成轮盘                                                                      
                  按适应度占比分配轮盘面积,适应度越大面积就越大
             (2) 赌轮盘选择下一代                                                        
                  仍抽g个解作为下一代 ,本轮最优必须进入下一轮,
                  剩余g-1个通过赌轮盘确定选择哪一个(赌g-1次轮盘)
                  赌轮盘的方法:                                                      
                  每次生成一个[0,1]之间的随机数,                
                  随机数指向轮盘哪个位置就抽哪个                
                (有可能重复抽到同一个)                        
三、输出结果                                              
       最后,遗传算法输出历史最优的解作为最终的解  

3.2 关于遗传算法的自定义内容    

遗传算法是一种思想,对于具体的问题,我们需要自行定义如下部分
(1) 染色体交换的方式(即解与解之间如何进行部分交换) 
      如果解的形式是一个数值,往往会把它先换为2进制,
      再将解进行部分片段交换,以此产生新解            
(2) 基因变异的方式(即单个解如何作出随机改变)           
(3) 适应度的设计(越优秀值的解适应度越大)                  
      如果是最小化问题,且目标函数恒大于0,         
      则常见的方法将适应度取为目标函数的倒数       
✍️补充:关于解的编码
如果解X不是编码形式,还需另外设计如何将X转换成编码形式
 例如X如果是数值形式,可以将它转换成二进制形式
 


相关文章
1-LVQ的学习目录:老饼|BP神经网络-竞争神经网络
2-SVM的学习目录:老饼|BP神经网络-感知机与SVM
3-BP的学习目录:老饼|BP神经网络-BP入门

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

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

相关文章

Ubuntu20.04 安装微信 【优麒麟的镜像源方式安装】

缺点:是网页版本的嵌入,功能少。 推荐wine方式安装:Ubuntu20.04 安装微信 【wine方式安装】推荐 从优麒麟的镜像源安装原生微信 应用下载-优麒麟|Linux 开源操作系统 新建文件software.list sudo vi /etc/apt/sources.list.d/…

损失函数(Loss Function)与代价函数(Cost Function)、目标函数(Objective Function)区别

损失函数定义在单个样本上,算的是一个样本的误差。 代价函数定义在整个训练集上,是所有样本误差的平均,也就是损失函数的平均。 目标函数定义为最终需要优化的函数,等于经验风险 结构风险(也就是Cost Function 正则化…

提升工作效率,打造精细思维——OmniOutliner 5 Pro for Mac

在当今快节奏的工作环境中,如何高效地组织和管理我们的思维和任务成为了关键。而OmniOutliner 5 Pro for Mac正是为此而生的一款强大工具。无论你是专业写作者、项目经理还是学生,OmniOutliner 5 Pro for Mac都能帮助你提升工作效率,打造精细…

【开源】基于JAVA的服装店库存管理系统

项目编号: S 052 ,文末获取源码。 \color{red}{项目编号:S052,文末获取源码。} 项目编号:S052,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 服…

正则表达式入门教程

一、本文目标 让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。 二、如何使用本教程 文本格式约定:专业术语 元字符/语法格式 正则表达式 正则表达式中的一部分(用于分析) 对其进行匹配的源字符串 …

Kafka的重要组件,谈谈流处理引擎Kafka Stream

系列文章目录 上手第一关,手把手教你安装kafka与可视化工具kafka-eagle Kafka是什么,以及如何使用SpringBoot对接Kafka 架构必备能力——kafka的选型对比及应用场景 Kafka存取原理与实现分析,打破面试难关 防止消息丢失与消息重复——Kafka可…

CentOS挂载:解锁文件系统的力量

目录 引言1 挂载简介2 挂载本地分区3 挂载网络共享文件系统4 使用CIFS挂载结论 引言 在CentOS(一种基于Linux的操作系统)上挂载文件系统是一项常见而重要的任务,无论是将新的磁盘驱动器添加到系统,还是挂载网络共享资源&#xff…

【flutter】使用getx下的GetMaterialApp创建路由和使用时间选择器国际化问题

GetMaterialApp是啥 网上解释说是 MaterialApp Getx properties GetMaterialApp 问题 在使用showDateRangePicker组件的时候, 一直报错 No MaterialLocalizations found 我就愁思是不是GetMaterialApp跟MaterialApp方法不一样的问题,结果不是&#…

城市网吧视频智能监控方案,实现视频远程集中监控

网吧环境较为复杂,电脑设备众多且人员流动性大,极易发生人员或消防事故,亟需改变,TSINGSEE青犀AI智能网吧视频监管方案可以帮助实现对网吧环境和用户活动的实时监控和管理。 1、视频监控系统 在网吧内部布置高清摄像头&#xff0…

【C++入门到精通】右值引用 | 完美转发 C++11 [ C++入门 ]

阅读导航 引言一、左值引用和右值引用1. 什么是左值?什么是左值引用?2. 什么是右值?什么是右值引用?3. move( )函数 二、左值引用与右值引用比较三、右值引用使用场景和意义四、完美转发std::forward 函数完美转发实际中的使用场景…

SSM项目初始化流程与操作概念解释-SpringBoot简化版

文章目录 1.引入概念2.导入依赖3.项目配置4.依照SpringMVC框架构建项目 1.引入概念 例如某一个XX系统,该系统存在前台页面(给用户直观看或使用),和后台页面(给管理人员调整数据和权限)。 这二个页面都通过…

机器学习笔记 - Ocr识别中的文本检测EAST网络概述

一、文本检测 文本检测简单来说就是找到图像中可以出现文本的区域。例如,请参见下图,其中在检测到的文本周围绘制了绿色边框。 在进行文本检测时,你可能会遇到两种情况 具有结构化文本的图像:这是指具有干净/均匀背景和常规字体的图像。文本大多密集,行结构正确,…

uniapp中使用render.js进行openers、arcgis等地图操作

uniapp中使用render.js进行openers、arcgis等地图操作 一、为啥需要render.js render.js主要作用于APP上,因为Uniapp本质为vuejshtml进行开发,整个技术栈还是H5,对DOM元素进行操作。而APP中没用Dom元素这个概念。因此利用render.js这个视图层…

GEM5 Garnet DVFS / NoC DVFS教程:ruby.clk_domain ruby.voltage_domain

简介 gem5中的 NoC部分是Garnet实现的,但是Garnet并没有单独的时钟域,而是保持ruby一致,要做noc的DVFS,便是要改ruby的 改电压 #这里只是生成一个随便变量名,存一下值。改是和频率一起的 userssaved_voltage_domain…

C++二分查找算法:查找和最小的 K 对数字

相关专题 二分查找相关题目 题目 给定两个以 非递减顺序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k 。 定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2 。 请找到和最小的 k 个数对 (u1,v1), (u2,v2) … (uk,vk) 。 示例 1:…

采用Nexus搭建Maven私服

采用Nexus搭建Maven私服 1.采用docker安装 1.创建数据目录挂载的目录: /usr/local/springcloud_1113/nexus3/nexus-data2.查询并拉取镜像docker search nexus3docker pull sonatype/nexus33.查看拉取的镜像docker images4.创建docker容器:可能出现启动…

【数据结构】树与二叉树(十八):树的存储结构——Father链接结构、儿子链表链接结构

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语 5.2 二叉树5.3 树5.3.1 树的存储结构1. 理论基础2. 典型实例 5.3.2 Father链接结构a. 定义树节点结构b. 创建新节点c. 主函数d. 代码整合 5.3.3 儿子链表链接结构a. 定义树节点结构b. 创建新节点c. 添加…

【IDEA 使用easyAPI、easyYapi、Apifox helper等插件时,导出接口文档缺少代码字段注释的相关内容、校验规则的解决方法】

问题 IDEA 使用easyAPI、easyYapi、Apifox helper等插件时,导出的接口文档上面,缺少我们代码里的注解字段,如我们规定了NOTNULL、字段描述等。 问题链接,几个月之前碰到过,并提问了,到现在解决&#xff0c…

Docker之DockerFile解析

DockerFile解析 是什么 Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。 概述 官网 https://docs.docker.com/engine/reference/builder/ 构建三步骤 编写Dockerfile文件 docker build命令构建镜像 docker run依镜像运…

元宇宙3D云展厅应用到汽车销售的方案及特点

为了紧紧抓住年轻消费者的需求,汽车销售行业也正在经历一场深刻的变革。在这个变革的前沿,元宇宙3D汽车展厅作为一项全新技术闪亮登场,打破了传统汽车销售模式的限制,为消费者带来了前所未有的购车体验。 元宇宙3D汽车展厅采用了尖…