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

news2024/11/20 7:05:56

本站原创文章,转载请说明来自《老饼讲解-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.coloradmin.cn/o/1225635.html

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

相关文章

深度学习——(生成模型)DDPM

前置数学知识 1、先验概率和后验概率 先验概率:根据以往经验和分析得到的概率,它往往作为“由因求果”问题中的“因”出现,如 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xt​∣xt−1​) 后验概率:指在得到“结果”的信息后重新修正的概率,是…

【数据库】数据库连接池导致系统吞吐量上不去-复盘

在实际的开发中,我们会使用数据库连接池,但是如果不能很好的理解其中的含义,那么就可以出现生产事故。 HikariPool-1 - Connection is not available, request timed out after 30001ms.当系统的调用量上去,就出现大量这样的连接…

OpenGL 坐标投影与反投影(Qt)

文章目录 一、简介1.1投影1.2反投影二、应用代码三、实现效果参考资料一、简介 在学习OpenGL一段时间之后,我们都会了解坐标的转换过程,如下图所示: 1.1投影 正如图中所述,OpenGL将一个3D坐标投影到一个2D空间主要有以下几个步骤,这也是我们比较熟知的几个步骤: 现实局部…

Android SdkManager简介

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、 安装使用3.1 安装3.2 使用3.3 选项…

05-Spring Boot工程中简化开发的方式Lombok和dev-tools

简化开发的方式Lombok和dev-tools Lombok常用注解 Lombok用标签方式代替构造器、getter/setter、toString()等重复代码, 在程序编译的时候自动生成这些代码 注解名功能NoArgsConstructor生成无参构造方法AllArgsConstructor生产含所有属性的有参构造方法,如果不希望含所有属…

注解【元数据,自定义注解等概念详解】(超简单的好吧)

注解的理解与使用 注解的释义元数据的含义基础阶段常见的注解注解的作用(包括但不限于)教你读懂注解内部代码内容五种元注解尝试解读简单注解我当时的疑惑点 自定义注解自定义注解举例 注解的原理总结 注解的释义 我们都知道注释是拿来给程序员看的&…

asp.net学生成绩评估系统VS开发sqlserver数据库web结构c#编程计算机网页项目

一、源码特点 asp.net 学生成绩评估系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 系统运行视频连接:https://www.bilibili.com/video/BV1Wz4y1A7CG/ 二、功能介绍 本系统使用Microsof…

创建谷歌账号 绕过手机验证(2023.11亲测有效)

如何成功注册谷歌账号:一个详细实用指南 写在最前面谷歌注册全流程环境配置切换至全英文环境 开通foxmail.com邮箱在英文环境下注册验证邮箱注册过程中的注意事项完成!总结 写在最前面 在这个数字化迅速发展的时代,谷歌账号几乎成为了我们日…

【计算机网络笔记】IPv6简介

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

二分查找算法合集

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 时间复杂度 O(logn) 自己写二分算法 左闭右开 左开右闭C算法&a…

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

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

Linux shell编程学习笔记27:tputs

除了stty命令,我们还可以使用tput命令来更改终端的参数和功能。 1 tput 命令的功能 tput 命令的主要功能有:移动更改光标、更改文本显示属性(如颜色、下划线、粗体),清除屏幕特定区域等。 2 tput 命令格式 tput [选…

使用 Python进行量化交易:前向验证分析

运行环境:Google Colab 1. 利用 yfinance 下载数据 import yfinance as yfticker AAPL df yf.download(ticker) df下载苹果的股票数据 df df.loc[2018-01-01:].copy()dfdf[change_tomorrow] df[Adj Close].pct_change(-1) df.change_tomorrow df.change_tom…

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

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

【C语言的秘密】密探—深究C语言中多组输入的秘密!

场景引入: 你是否在刷题过程中,经常遇到以下场景呢? 场景一: 场景二: 从这些题上都能看见输入描述中提出了一条多组输入,那啥是多组输入?如何实现它呢? 多组输入:在输入…

Centos(Linux)服务器安装Dotnet8 及 常见问题解决

1. 下载dotnet8 sdk 下载 .NET 8.0 SDK (v8.0.100) - Linux x64 Binaries 拿到 dotnet-sdk-8.0.100-linux-x64.tar.gz 文件 2. 把文件上传到 /usr/local/software 目录 mkdir -p /usr/local/software/dotnet8 把文件拷贝过去 mv dotnet-sdk-8.0.100-linux-x64.tar.gz /usr/loc…

【Linux】 uptime命令使用

uptime 正常运行时间提供以下信息的单行显示。当前时间、系统运行的时间、当前登录的用户数量以及过去1、5和15分钟的系统平均负载。 语法 uptimeuptime命令 -Linux手册页 作者 由Larry Greenfield编写和迈克尔K约翰逊编写。 命令选项及作用 执行令 man uptime 执行命令结…

【linux】进行间通信——共享内存+消息队列+信号量

共享内存消息队列信号量 1.共享内存1.1共享内存的原理1.2共享内存的概念1.3接口的认识1.4实操comm.hppservice.cc (写)clint.cc (读) 1.5共享内存的总结1.6共享内存的内核结构 2.消息队列2.1原理2.2接口 3.信号量3.1信号量是什么3…

goland 远程调试 remote debug

1、远程服务器装好go环境,并设置国内源 linux go安装 参考: 如何在 Debian / Ubuntu 上安装 Go 开发环境 - 知乎 设置国内源 go env -w GOPROXYhttps://goproxy.cn,direct 2、远程服务器安装dlv git clone https://github.com/derekparker/delve.gi…

移动端表格分页uni-app

使用uni-app提供的uni-table表格 网址&#xff1a;https://uniapp.dcloud.net.cn/component/uniui/uni-table.html#%E4%BB%8B%E7%BB%8D <uni-table ref"table" :loading"loading" border stripe type"selection" emptyText"暂无更多数据…