【人工智能】遗传算法

news/2024/4/27 7:05:29/文章来源:https://blog.csdn.net/qq_25218219/article/details/130345443

人工智能算法---遗传算法(基础篇)

  • 知识导图:
    • 遗传算法(概念)
    • 1.初始化种群
      • 二进制编码与解码
    • 2.选择操作
    • 3.交叉操作
    • 4.评估操作
    • 5.终止操作

知识导图:

遗传算法(概念)

可以把遗传算法类比成一个游戏,我们需要通过这个游戏来找到最佳的解决方案。

  • 首先,我们需要创建一些角色(也就是种群),每个角色有自己的装备和技能(染色体),但是我们并不知道哪个角色更加强大。
  • 然后,我们让这些角色相互竞争,通过升级、打怪等方式来获得经验值(适应度值)。经验值越高的角色,就拥有了更多胜利的可能性。
  • 接着,我们会将经验值高的角色进行复制,将装备/技能进行升级,继承属性(对应其交叉操作),而一些随机变异的角色也会加入其中。这些新的角色代表了我们在寻找答案的过程中的探索。如果它们的表现好于之前的角色,那么我们就可以用它们来代替原来的角色。
  • 最后,通过这样的迭代过程,我们会逐渐找到最强大的角色,也就是最优解。

总之,遗传算法通过不断地试错,从而找到最优解决方案,就像在玩游戏一样。

具体来说,遗传算法的流程包括以下几个步骤:

  • 初始化种群:通过随机方式生成一组初始解,称为种群。
  • 适应度函数:根据问题要求,设计一个适应度函数,用于评价每个个体的好坏程度。
  • 选择操作:按照适应度函数的评价结果,从当前种群中选择一些优秀的个体作为父代,并使用复制、交叉等方法产生下一代种群。
  • 变异操作:在新产生的个体中进行随机变异的操作,增加搜索的多样性。
  • 终止条件:根据预设的停止条件(如迭代次数、达到最优解等)决定算法何时结束。

遗传算法通过不断地试错,在种群中选择、交叉和变异来生成新的个体,并计算它们的适应度值。然后,根据设定的适应度函数来选择出适应度值高的个体作为下一代的父母,再进行交叉和变异操作,生成新的个体。通过这样的迭代过程,逐渐找到最优解决方案

1.初始化种群

 初始化种群是指在遗传算法中,初始阶段按照其规定的编码方式随机生成一组个体,并将其作为遗传算法的起点。

这些个体构成了一个种群,每个个体都代表了问题的一个可能解。通过对这些个体进行交叉、变异等操作,不断迭代,从而逐步逼近问题的最优解。因此,初始化种群的质量和数量对于遗传算法的性能有很大影响。

基础篇,理解并学会使用以下三种编码方式方法:

  • 二进制
  • 整数
  • 浮点数

二进制编码与解码

顾名思义,就是将10进制数编码成二进制数

以下是我总结的常用方式和其代码:

 假设需要解决一个最小化函数 f ( x ) f(x) f(x)(适应函数 f f f),其中变量x是取值范围出现以下情况:

1. 当x是取值范围为 [ a , b ] [a,b] [a,b]之间的实数。公式(一): a + x ⑩ 2 n − 1 ∗ ( b − a ) a+\frac{x_{⑩}}{2^n-1}*(b-a) a+2n1x(ba)

例如:假设需要解决一个最小化函数f(x),其中变量x是取值范围为[0,10]之间的实数。可以将x表示为一个长度为n的二进制串,其中n满足 2 n − 1 > = 10 2^n-1>=10 2n1>=10。例如,当 n = 5 n=5 n=5时,可将二进制串 10101 10101 10101表示为 ( 21 31 ) ∗ 10 = 6.77 (\frac{21}{31})*10=6.77 (3121)10=6.77

x ⑩ x_{⑩} x是二进制串的值(10进制),如10101的值为21

n的取值和你所需要的精度p有关, 2 n − 1 < ( b − a ) ∗ 1 0 p < 2 n 2^{n-1}<(b-a)*10^p<2^{n} 2n1<(ba)10p<2n

例如:例子来源


代码:

import math
import random# 求n(已知精度p,x的取值范围[a,b])
def calculate_n(p, a, b):power = math.log2((b - a) * 10 ** p)n = math.ceil(power)return n# 随机生成n位二进制数
def generate_binary_number(n):binary = ""for i in range(n):bit = random.randint(0, 1)binary += str(bit)return binary# 初始化种群(二进制版)
def initialize_population(population_size, n):population = []for i in range(population_size):individual = generate_binary_number(n)population.append(list(map(int,individual)))return populationn = calculate_n(1, -5, 5)
print(n)
population = initialize_population(100, n)
print(population)

其他的,暂时没学。。。。

2.选择操作

根据第一步初始化的种群,对其每个个体进行评价,选出适应度最高的个体作为下一代的父代

3.交叉操作

4.评估操作

5.终止操作

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

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

相关文章

Docker 快速入门

1、Docker 简介 Docker是一个开源的容器引擎&#xff0c;它可以帮助我们更快地交付应用。Docker可将应用程序和基础设施层隔离&#xff0c;并且能将基础设施当作程序一样进行管理。使用Docker&#xff0c;可更快地打包、测试以及部署应用程序&#xff0c;并可减少从编写到部署…

python的智能换行函数(一堆烦乱的判断)

def zntxt(txt):line30 #设置单行长度js,e,s,rs,aa,nm,x,y{},[],txt,[],,[],0,0n 1 if ord(s[0]) > 127 else 0for i in range(len(s)):m1 if ord(s[i]) > 127 else 0if m!n:rs.append(aa)aas[i]elif ilen(s)-1:aas[i]rs.append(aa)else:aas[i]nmfor i in rs: for j in…

搜索引擎找外贸客户

说起搜索引擎&#xff0c;我们每个人都不陌生&#xff0c;也许第一时间就能想到平日经常使用的“百度一下”和凭借强大算法及丰富功能占据近85%市场份额的谷歌搜索&#xff08;Statista 2023年1月数据&#xff09;这些耳熟能详的搜索引擎。对于外贸人而言搜索引擎也是非常实用的…

一文谈谈文心一言对比ChatGPT4.0的差距

对于想体验文心一言的朋友&#xff0c;可以进行申请尝试&#xff0c;快速入口 如果想体验ChatGPT的朋友&#xff0c;可以自行fq注册&#xff1b;但是由于现在限制注册并且不稳定&#xff0c;对于不会用梯子不想注册的朋友可以使用这个进行访问&#xff0c;快速入口 关于ChatG…

PMP证书备考攻略+PMP知识点汇总

一&#xff0c;考PMP好处多 1.能力提升 大型项目&#xff0c;领导专业团队 2.升职加薪 晋升管理岗&#xff0c;优先升职加薪 3.招投标加分 具有PMP证书&#xff0c;企业招标有加分 4.转型利器 助力转型&#xff0c;拓宽职业发展 5.公司支持 企业鼓励学习&#xff0c;报销费用 6…

C++模板使用

感谢你的阅读&#xff01;&#xff01;&#xff01; 目录 感谢你的阅读&#xff01;&#xff01;&#xff01; 举个例子&#xff1a; template 有什么意义为什么要用模板 与typedef的区别 使用方法 模板&#xff1a;隐式实例化与显示实例化 和非模板函数以及多个模板类…

气传导耳机和骨传导耳机的区别是啥?气传导耳机有哪些优缺点?

本文主要讲解一下气传导耳机和骨传导耳机的区别、气传导耳机的优缺点&#xff0c;并推荐一些目前主流的气传导耳机款式&#xff0c;大家可以根据自身需求&#xff0c;选择自己感兴趣的部分观看。 气传导耳机和骨传导耳机不同点&#xff1a; 气传导耳机和骨传导耳机最大且最根…

什么是 MVVM?MVVM和 MVC 有什么区别?什么又是 MVP ?

目录标题 一、什么是MVVM&#xff1f;二、MVC是什么&#xff1f;三、MVVM和MVC的区别&#xff1f;四、什么是MVP&#xff1f; 一、什么是MVVM&#xff1f; MVVM是 Model-View-ViewModel的缩写&#xff0c;即模型-视图-视图模型。MVVM 是一种设计思想。 模型&#xff08;Model…

windows安装sqli-labs靶场,两种方式

1、安装phpstudy 官网打不开了&#xff0c;下载地址在这儿https://download.csdn.net/download/weixin_59679023/87711536 双击安装 点自定义安装&#xff0c;选择安装目录&#xff0c;注意目录不要有空格和中文 安装完成启动红框内的两个服务 2、安装sqli靶场 这个包支持ph…

信息收集(三)端口和目录信息收集

信息收集&#xff08;一&#xff09;域名信息收集 信息收集&#xff08;二&#xff09;IP信息收集 端口是什么 "端口"是英文port的意译&#xff0c;可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口&#xff0c;其中虚拟端口指计算机内部或交换机…

关于package.json中版本锁定的方法和问题解决

前置知识&#xff1a;先了解一下package.json和package-lock.json的关系和区别&#xff0c;请看这篇文章 然后我们来说一下改怎么锁定版本&#xff1f; 首先肯定是要把package.json中的 ^ 这个符号去掉&#xff0c;但是如果你只去掉package.json中的 ^那就太天真了&#xff0…

必应,百度,神马头条,搜狗专用站长seo推送工具大全

软件介绍&#xff1a; 百度开始打击滥用api问题&#xff0c;针对这个问题已经开发了拟人推送系列功能&#xff0c;放心使用。 五合一高效推送软件&#xff0c;目前支持百度&#xff0c;神马&#xff0c;必应&#xff0c;搜狗&#xff0c;头条&#xff0c;谷歌六大搜索引擎同步…

优秀简历的HR视角:怎样打造一份称心如意的简历?

简历的排版应该简洁工整&#xff0c;注重细节。需要注意对齐和标点符号的使用&#xff0c;因为在排版上的细节需要下很大功夫。除此之外&#xff0c;下面重点讲述几点简历内容需要注意的地方。 要点1&#xff1a;不相关的不要写。 尤其是与应聘岗位毫不相关的实习经历&#x…

服务提供者 Eureka + 服务消费者(Rest + Ribbon)实战

1、Ribbon背景介绍 Ribbon是Netflix发布的开源项目&#xff0c;主要功能是提供客户端的软件负载均衡算法&#xff0c;将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时&#xff0c;重试等。简单来说&#xff0c;就是在配置文件中列出Load B…

【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令

【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令 一、上讲回顾 在上一讲开发环境搭建中&#xff0c;我们讲解了如何搭建Ubuntu系统环境和ROS2开发运行环境。 1.Ubuntu系统安装 2.ROS2系统环境安装 二、ROS2核心命令讲解 1、daemon-各种守护进程相关的子命令 查看帮助&am…

【计算机网络】网络命令的使用

文章目录 一、实验目的二、实验工具三、实验要求四、实验过程01 ping 命令的使用应用1&#xff1a;验证本地计算机上是否正确安装了 TCP/IP 协议应用2&#xff1a;测试某个目的主机可达性应用3&#xff1a;键入 ping&#xff0c;查看 ping 的其他参数含义 02 netstat 命令的典型…

可能是最强的Python可视化神器,建议一试

数据分析离不开数据可视化&#xff0c;我们最常用的就是Pandas&#xff0c;Matplotlib&#xff0c;Pyecharts当然还有Tableau&#xff0c;看到一篇文章介绍Plotly制图后我也跃跃欲试&#xff0c;查看了相关资料开始尝试用它制图。 Plotly Plotly是一款用来做数据分析和可视化的…

关于GeoServer发布的wfs服务的精度问题

本周基于arcgis/core组件&#xff0c;利用arcgis api for js 4.22版本加载GeoServer发布的同一数据源的wms和wfs服务&#xff0c;出现了偏移的问题。 分析&#xff1a;同一数据源不同的访问方式&#xff0c;出现了偏移&#xff0c;这是很严重的问题。初步判断为js api加载方式的…

HTB-SecNotes

HTB-SecNotes 信息收集8808端口80端口通过CSRF获取通过二次注入 立足tyler -> administrator 信息收集 8808端口 Windows IIS 10.0 可以从官方文档查看10.0版本可能的操作系统。 80端口 通过CSRF获取 目录扫描发现需要登陆后继续进一步操作啊。 对其进行简单的SQL注入测…

Ubuntu20.04安装CUDA和CUDNN

CUDA是GPU深度学习的运行库&#xff0c;那么cuDNN就是训练加速工具&#xff0c;两者要相互配合使用&#xff0c;所以一般机器学习需要训练引擎(tensorflow-gpu) CUDA cuDNN使用。想不安装cuDNN是不可以的&#xff0c;而且cuDNN版本要和CUDA版本相互搭配。 1、前置工作 查看…