人工智能-遗传算法

2023-11-01

一、简介

遗传算法(Genetic Algorithm,GA)借鉴了生物学遗传进化的思想,模拟了种群进化过程中经历的繁殖、杂交、基因变异的自然选择和自然变异的过程。遗传算法是一种高效的进行全局搜索和优化的方法,能在 ‘ 进化 ’ 过程中自适应获得适应度最大个体,该个体即为最优化问题最优解。

遗传算法首先需要把待解决的问题进行编码,相当于生物学当中的原始染色体。不同人的染色体是不同的,因此在遗传算法中,不同的编码相当于不同的染色体,即不同的个体,这些不同的编码个体构成了一个种群。遗传算法开始时,总是随机地产生一些个体(即初始解),根据预定的目标函数对每个个体进行评价,给出了一个适应度值。 根据生物学的适者生存原理,基于此适应度值,选择个体用来复制下一代。如此循环繁衍进化,直至满足目标为止。

二、基本概念

遗传算法的基本思想是从初始种群出发,采用优胜劣汰、适者生存的自然法则选择个体,并通过杂交、变异来产生新一代种群,如此逐代进化,直到满足目标为止。遗传算法所涉及到的基本概念主要有以下几个:    

种群(Population):种群是指用遗传算法求解问题时,初始给定的多个解的集合。遗传算法的求解过程是从这个子集开始的。  

 个体(Individual):个体是指种群中的单个元素,它通常由一个用于描述其基本遗传结构的数据结构来表示。    

染色体(Chromos):染色体是指对个体进行编码后所得到的编码串。其中的每1位称为基因,若干个基因构成的一个有效信息段称为基因组。    

适应度(Fitness)函数:适应度函数是一种用来对种群中各个个体的环境适应性进行度量的函数。    

遗传操作(Genetic Operator):遗传操作是指作用于种群而产生新的种群的操作。标准的遗传操作包括以下3种基本形式:    

选择(Selection) :根据概率从种群中选择若干个个体。一般,选择过程是一种基于适应度的适者生存的过程。  

交叉(Crosssover):两个编码的某一相同位置处编码被切断,前后两串分别交叉组合形成两个新的染编码。也称基因重组或杂交;    

变异(Mutation)复制时可能(很小的概率)产生某些复制差错,变异产生新的编码,表现出新的适应度。

三、遗传算法结构

四、编码方式

(1)二进制编码(Binary encoding)

二进制编码是将原问题的结构变换为染色体的位串结构。(缺点:汉明悬崖,位数突变)

(2) 格雷编码(Gray encoding)

格雷编码是对二进制编码进行变换后所得到的一种编码方法。

(3) 实数编码(Real encoding)

实数编码是将每个个体的染色体都用某一范围的一个实数(浮点数)来表示,其编码长度等于该问题变量的个数。

五、适应度函数

根据目标不同适应度函数往往不同,但总结起来最优化问题最后需要达到的目标一般有两个分类,即极大化问题和极小化问题。

极大化标准的适应度函数如下:

 极小化标准的适应度函数如下:

 依照适应度函数计算适应度。

六、选择操作

选择(Selection)操作是指根据选择概率按某种策略从当前种群中挑选出一定数目的个体,使它们能够有更多的机会被遗传到下一代中常用的选择方法分类是比例选择和竞技选择。

1.比例选择之轮盘赌算法

轮盘赌选择法又被称为转盘赌选择法或轮盘选择法。在这种方法中,个体被选中的概率取决于该个体的相对适应度。而相对适应度的定义为:

 其中,P(xi)是个体xi的相对适应度,即个体xi被选中的概率;f(xi)是个体xi的原始适应度。     轮盘赌选择算法的基本思想是:根据每个个体的选择概率P(xi)将一个圆盘分成N个扇区,其中第i个扇区的中心角为:

 再设立一个移动指针,将圆盘的转动等价为指针的移动。选择时,假想转动圆盘,若静止时指针指向哪个扇区,则选择哪个扇区。

2.竞技选择之锦标赛选择

每次从种群中取出一定数量个体(放回抽样),然后选择其中最好的一个进入子代种群。重复该操作,直到新的种群规模达到原来的种群规模。

1、确定每次选择的个体数量N。(二元锦标赛选择即选择2个个体)
2、 从种群中随机选择N个个体(每个个体被选择的概率相同) ,根据每个个体的适应度值,选择
其中适应度值最好的个体进入下一代种群。
3、 重复步骤(2)多次(重复次数为种群的大小),直到新的种群规模达到原来的种群规模。

七、交叉操作

交叉(Crossover)操作是指按照某种方式对选择的父代个体的染色体的部分基因进行交配重组,从而形成新的个体。交叉主要分为二进制交叉和实值交叉。

1.二进制交叉    

二进制交叉(Binary Valued Crossover)是指二进制编码情况下所采用的交叉操作,它主要包括单点交叉、两点交叉、多点交叉和均匀交叉等方法。

(1)单点交叉随机选择第k位为交叉点,若采用对交叉点后面的基因进行交换的方法,但点交叉是将X中的xk+1到xn部分与Y中的yk+1到yn部分进行交叉

单点交叉例子如下:

        设有两个父代的个体串A=0 0 1 1 0 1 和B=1 1 0 0 1 0 ,若随机交叉点为4,则交叉后生成的两个新的个体是A’= 0 0 1 1 1 0   和B’= 1 1 0 0 0 1

(2)两点交叉随机设定第i、j位为两个交叉点(其中i<j<n),两点交叉是将X中的xi+1到xj部分与Y中的yi+1到yj部分进行交换

两点交叉例子如下:

        设有两个父代的个体串A= 0 0 1 1 0 1 和B= 1 1 0 0 1 0 ,若随机交叉点为3和5,则交叉后的两个新的个体是  A’= 0 0 1 0 1 1  和B’= 1 1 0 1 0 0

(3)多点交是指先随机生成多个交叉点,然后再按这些交叉点分段地进行部分基因交换,生成子代中的两个新的个体。

多点交叉例子如下:

        设有两个父代的个体串A= 0 0 1 1 0 1 和B= 1 1 0 0 1 0 ,若随机交叉点为1、3和5,则交叉后的两个新的个体是A’= 0 1 0 1 0 0     B’= 1 0 1 0 1 1

2.实值交叉    

 实值交叉是在实数编码情况下所采用的交叉操作,主要包括离散交叉和算术交叉,下面主要讨论离散交叉(部分离散交叉和整体离散交叉)。

八、变异操作

变异(Mutation)是指对选中个体的染色体中的某些基因进行变动,以形成新的个体。根据个体编码方式的不同,变异操作可分为二进制变异和实值变异两种类型。

1. 二进制变异

二进制变异是先随机地产生一个变异位,然后将该变异位置上的基因值由“0”变为“1”,或由“1”变为“0”,产生一个新的个体。

设变异前的个体为A=0 0 1 1 0 1,若随机产生的变异位置是2,则该个体的第2位由“0”变为“1”。     变异后的新的个体是A’= 0 1 1 1 0 1 。

2.实值变异

当个体的染色体采用实数编码表示时,其变异操作应采用实值变异方法。

设选中的个体向量C=20 16 19 12 21 30,若随机产生的两个变异位置分别时2和4,则变异后的新的个体向量是C’= 20 12 16 19 21 30

到此遗传算法所有步骤都已阐述简介完毕按照三中算法步骤进行即可,接下来介绍一下遗传算法的一些特点。

1. 遗传算法具有自适应,自学习,自组织的特性。

2.遗传算法是采用概率的变迁来学习适应,寻找进化的方向。

3.遗传算法对结果的覆盖面大,利于全局择优。

个人学习笔记,如有错漏恳请指正!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

人工智能-遗传算法 的相关文章

  • 概述:利用大模型 (LLMs) 解决信息抽取任务

    论文标题 Large Language Models for Generative Information Extraction A Survey 论文链接 https arxiv org pdf 2312 17617 pdf 论文主要探讨
  • 如何利用CHAT做简单的总结体会?

    问CHAT 在测试过程中使用appium python自动化的优点和体会 CHAT回复 使用 Appium 配合 Python 进行自动化测试主要有以下几点优点 1 跨平台性 Appium 支持 iOS 和 Android 平台的应用自动化
  • 扬帆证券:产业化破题在即 人形机器人超预期演进

    大模型助力下的拐点 特斯拉A股产业链上 两笔重磅出资几乎一起现身 总规划超百亿元 1月4日 拓普集团公告 与宁波经济技能开发区办理委员会签署了 机器人电驱系统研发生产基地项目出资协议书 公司拟出资50亿元 建设机器人核心部件生产基地 此次出
  • 文档扫描与矫正-仿射变换

    图像变换是计算机视觉和图像处理中的关键技术之一 它允许我们对图像进行各种形式的变形 调整和校正 其中 仿射变换是一种常见的变换方式 在文档扫描过程中 由于拍摄角度和畸变等原因 文档图像可能存在一定程度的形变 仿射变换可以用于校正文档图像 使
  • 2024年华数杯国际赛B题:光伏发电功率 思路模型代码解析

    2024年华数杯国际赛B题 光伏发电功率 Photovoltaic Power 一 问题描述 中国的电力构成包括传统能源发电 如煤 油和天然气 可再生能源发电 如水电 风能 太阳能和核能 以及其他形式的电力 这些发电模式在满足中国对电力的巨
  • 深度好文:最全的大模型 RAG 技术概览

    本文是对检索增强生成 Retrieval Augmented Generation RAG 技术和算法的全面研究 对各种方法进行了系统性的梳理 涉及了 RAG 流程中的数据拆分 向量化 查询重写 查询路由等等 在做 RAG 的小伙伴一定知道
  • 用通俗易懂的方式讲解:图解 Transformer 架构

    文章目录 用通俗易懂方式讲解系列 1 导语 2 正文开始 现在我们开始 编码 从宏观视角看自注意力机制 从微观视角看自注意力机制 通过矩阵运算实现自注意力机制
  • 问CHAT很繁琐的问题会不会有答案呢?

    问CHAT 什么已有的基于极值理论的极端温度重现期主要针对极端高温事件 对极端低温事件研究较少 CHAT 回复 为这主要可能是由于以下几个原因 1 气候变化与全球变暖 当前 全球变暖和气候变化的问题备受关注 这导致科研者更加关注极端高温事件
  • 无人机视角、多模态、模型剪枝、国产AI芯片部署

    无人机视角 多模态 模型剪枝 国产AI芯片部署是当前无人机技术领域的重要研究方向 其原理和应用价值在以下几个方面进行详细讲述 一 无人机视角 无人机视角是指在无人机上搭载摄像头等设备 通过航拍图像获取环境信息 并进行图像处理和分析 这种技术
  • 台积电再被坑,2纳米光刻机优先给Intel和三星,美国太霸道了

    外媒指出今年ASML的10台2纳米光刻机分配已经基本确定了 Intel拿到6台 三星获得3台 台积电只能得到一台 考虑到美国对ASML的强大影响力 外媒的这些消息应该有较高的可信性 Intel在先进工艺制程方面 自从2014年量产14纳米之
  • 作物叶片病害识别系统

    介绍 由于植物疾病的检测在农业领域中起着重要作用 因为植物疾病是相当自然的现象 如果在这个领域不采取适当的护理措施 就会对植物产生严重影响 进而影响相关产品的质量 数量或产量 植物疾病会引起疾病的周期性爆发 导致大规模死亡 这些问题需要在初
  • 人工智能 AI 如何让我们的生活更加便利

    每个人都可以从新技术中获益 一想到工作或生活更为便利 简捷且拥有更多空余时间 谁会不为之高兴呢 借助人工智能 每天能够多一些空余时间 或丰富自己的业余生活 为培养日常兴趣爱好增添一点便利 从电子阅读器到智能家居 再到植物识别应用和智能室内花
  • AI帮助终结全球饥饿问题

    全球饥饿问题是牵动人心的头等大事 5月28日是 世界饥饿日 这一问题更值得关注 让人人都能吃饱的想法不仅令人向往 而且很快就会变成现实 与大多数新事物引进一样 对于在控制世界粮食供应这样复杂的任务中AI究竟应该发挥多大的作用 人们还踟蹰不前
  • AI-基于Langchain-Chatchat和chatglm3-6b部署私有本地知识库

    目录 参考 概述 部署安装 环境准备 原理和流程图 一键启动 启动WebAPI 服务 启动WebUI服务 Docker部署
  • 史上最全自动驾驶岗位介绍

    作者 自动驾驶转型者 编辑 汽车人 原文链接 https zhuanlan zhihu com p 353480028 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 求职交流 技术交流群 本
  • 基于节点电价的电网对电动汽车接纳能力评估模型研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 国产化率100%,北斗导航单日定位4500亿次,外媒:GPS将被淘汰

    追赶30年的技术差距 国产卫星导航系统 北斗 开始扬眉吐气 数据显示 北斗导航目前单日定位量达4500亿次 已经获得100多个国家的合作意向 甚至国际民航也摒弃以往 独宠 GPS的惯例 将北斗纳入参考标准 对此 有媒体直言 GPS多年来的技
  • 深度学习(5)--Keras实战

    一 Keras基础概念 Keras是深度学习中的一个神经网络框架 是一个高级神经网络API 用Python编写 可以在TensorFlow CNTK或Theano之上运行 Keras优点 1 允许简单快速的原型设计 用户友好性 模块化和可扩

随机推荐

  • Android 10(Android Q) 适配

    官方网站 沙盒存储 Android Q 中的隐私权 重大隐私权变更 官方网站 展示时间敏感的通知 1 设备硬件信息读取限制 在Android10中 系统不允许普通App请求android permission READ PHONE STAT
  • 已解决:attributeerror: ‘FreeTypeFont‘ object has no attribute ‘getsize‘

    在运行yolov5时 报错 attributeerror FreeTypeFont object has no attribute getsize 在网上搜索的结果大部分给出字体不对 之类的答案 但通过仔细研究 发现该报错的报错原因不是字体
  • CSS3+Html5 学习笔记之css 样式加载顺序

    有时候在写CSS的过程中 某些限制总是不起作用 这就涉及了CSS样式覆盖的问题 如下 navigator height 100 width 200 position absolute left 0 border solid 2 EEE cu
  • 003 数据结构_无头单向非循环链表的详细分解——“C”

    引入 前言 本文介绍的是无头单向非循环链表 这种链表结构简单 一般不会单独用来存数据 实际中更多是作为其他数据结构的子结构 如哈希桶 图的邻接表等等 另外这种结构在笔试面试中出现很多 链表是什么 常见的链表包括 单向链表 singly li
  • IDEA Git回退到指定历史版本

    1 找到要回退的版本号 右击项目 gt Git gt Show History gt 选中要回退的版本 gt Copy Revision Number 2 打开idea的Terminal 输入命令 git reset hard 139dcf
  • Dockerfile解析

    Dockerfile是什么 Dockerfile是用来构建Docker镜像的文本文件 是由一条条构建镜像所需的指令和参数构成的脚本 概述 官网 https docs docker com engine reference builder 构
  • 【CV】第 8 章:语义分割和神经风格迁移

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 传统制造型企业数字化转型面临的问题以及解决方案介绍

    传统制造业数字化转型面临的问题 一直都在关注数字化很久了 就是迟迟不敢动手 这大概是很多企业经营者的心里话 传统制造企业遇到的问题 关键还是在于数字化基础薄弱 1 工业信息化平台与软件繁多 方向和功能也各不同 对于不同的行业类别 生产工艺
  • 为什么基类的析构函数是虚函数

    点击链接查看更多C 技巧 Effective C 考虑以下继承结构 派生类 Derived 中申请了一块内存 使用指针 i ptr 管理 并在析构的时候释放掉 class Base 基类 class Derived public Base
  • 栈溢出基本原理的简单讲解

    栈溢出基本原理的简单讲解 新手上路 大牛还请自行跳过 不足之处 欢迎批评指正 一 预备知识 缓冲区溢出简单介绍 缓冲区溢出 简单的说 缓冲区溢出就是超长的数据向小缓冲区复制 导致数据超出了小缓冲区 导致缓冲区其他的数据遭到破坏 这就是缓冲区
  • 如何记忆和使用PNP和NPN?

    常用的NPN三极管型号 C1815 baiC945 S9013 S9014 S8050 2SD880 D882 2N5401 实物怎么判断PNP还是NPN 1 用万用表来进行判断 如果是指针是万用表 黑笔是电池正极 数字表相反 将指针拨到电
  • Linux下Ptread_create崩溃问题

    今天写了一个简单的Pthread函数在Linux Ubuntu20 4中qt运行 结果一运行就崩溃 百思不得其解 代码如下 include
  • 对于STM32编译出现“The size of this image (34208 bytes)...“此类问题解决办法

    自创立博客以来 就没怎么用过 感觉很对不起CSDN这个学习氛围如此浓厚的大佬论坛 闲话少说 近期忙于工作项目 在昨晚收到通知毕设要加紧进度 这才放下手中的活 毕设做的半球系统 用的mdk开发环境 当程序写好准备编译时 出现 The code
  • matlab设计FIR滤波器

    方法1 通过fir1 函数进行设计 B fir1 N Wn 设计FIR低通滤波器 返回的滤波器参数保存在长度为N 1的数组B中 Wn为归一化截止频率 范围为0 1 截止频率用于区分过渡带和阻带 1处对应的是采样频率的一半 滤波器系数B是实的
  • Apifox接口自动化测试方法

    1 新建测试用例 2 输入名称 分组 优先级后点击确定 3 点击测试用例名称或者详情 4 添加步骤 两个方式都可以 5 选择要测试的接口后选择模式 复制 绑定 复制 复制一份数据 和原来的接口相互独立 互不影响 绑定 两边改动相护实时同步
  • 深度学习之MNIST数据集

    深度学习是以数据为驱动的技术 在使用深度学习进行科研或者工作当中 都离不开数据集 文章目录 前言 一 MNIST数据集是什么 二 使用步骤 1 下载数据集 2 完整代码 总结 前言 还有一些 如人脸数据集 地球信息的数据集 数据集来源有一些
  • docker日志设置定期清理

    docker日志设置定期清理 1 日志的查看docker logs 具体的参数 请查看help命令 docker logs help 2 清除日志文件docker日志的存储位置 var lib docker containers lt 容器
  • Redis学习笔记(一):CentOS7安装Redis4

    CentOS版本 CentOS Linux release 7 5 1804 Core Redis版本 Redis server v 4 0 9 1 安装 1 1下载 去官网找到下载地址https redis io download 右键复
  • Mysql优化5-选择合适的存储引擎

    一 如何选择存储引擎 myisam 存储 如果对事务要求不高 同时以查询新增为主的 主要考虑使用此引擎 比如bbs的发帖表 回复表 INNODB 存储 对事务要求比较高 保存的数据都是重要数据 比如订单表等等 Memory 存储 数据变化频
  • 人工智能-遗传算法

    一 简介 遗传算法 Genetic Algorithm GA 借鉴了生物学遗传进化的思想 模拟了种群进化过程中经历的繁殖 杂交 基因变异的自然选择和自然变异的过程 遗传算法是一种高效的进行全局搜索和优化的方法 能在 进化 过程中自适应获得适