人工智能原理(10)

news2024/12/23 9:49:41

目录

一、进化计算

1、概述

2、进化算法搜索方式特点

二、遗传算法

1、遗传算法的基本原理

三、进化规划

1、标准进化规划

2、进化规划的基本技术

四、进化策略

1、进化策略及其改进

2、进化策略基本技术


一、进化计算

1、概述

        进化计算包括遗传算法、进化规划、进化策略和遗传编程,他们是借鉴生物界中进化与遗传的机理,用于解决复杂的工程技术问题。

        在进化算法中,仿效生物的遗传方式,采用复制(选择)、交换(交叉/重组)、突变(变异)这三种遗传操作,衍生下一代个体。

        进化算法都是从一组随机生成的初始个体出发,经过选择、交叉、变异等操作,并根据适应度大小进行个体的优胜劣汰,提高新一代群体的质量,再经过多次反复迭代,逐步逼近最优解,从数学角度讲,进化算法实质上是一种搜索寻优算法。

        进化算法和传统的搜索寻优方法不同,他不要求所研究问题连续、可导,但是可以很快地得出所要求的最优解。进化算法基本流程如下:

2、进化算法搜索方式特点

(1)有指导搜索。指导进化算法执行搜索的依据是适应度,也就是它的目标函数,在适应度的驱动下,进化算法逐步逼近目标值。

(2)自适应搜索。进化算法借助选择、交叉、变异等进化操作,体现“适者生存”的自然选择规律。

(3)并行式搜索。进化算法每一代运算都针对一组个体同时进行,而不是只对单个个体。

(4)全局最优解。进化算法由于采用多点并行搜索,每次迭代借助交叉和变异产生新个体,不断扩大搜索范围,容易搜索出全局最优解。

(5)黑箱结构。进化算法只研究输入和输出的关系,并不深究造成这种关系的原因,便于处理因果关系不明确的问题。

(6)通用性强。进化算法,使用某种编码方式表达问题,然后根据适应度区分个体优劣,其余进化操作统一,但这需要针对具体问题进化分析,有时难以构造与选择。

二、遗传算法

        遗传算法(GA)由密歇根大学的John Henry Holland和他的Colleagues在二十世纪六十年代在对细胞自动机进行研究时率先提出。二十世纪八十年代中期之前,遗传算法仅仅限于理论方面。随着计算机计算能力发展和实际应用需求增多,逐渐进入了实际应用阶段。

1、遗传算法的基本原理

        遗传算法中,优化问题的解被称为个体,它表示为一个参数列表,叫做染色体或基因串。

        染色体:一般被表达为简单的数字串,不过也有其他的表示方法适用,这一过程为编码。

        基本原理:

        (1)算法随机生成一定数量的个体,操作者可以对这个随机产生过程进行干预,播下已经部分优化的种子。

        (2)在每一代中,每一个个体都将被评价,并通过计算适应度函数得到一个适应度数值,种群中的个体按照适应度排序,适应度高的排在前面。

        (3)产生下一代个体,并组成种群,这个过程要通过选择、交叉、变异完成,新个体的适应度越高,被选择的机会越高。被选择的个体进行交叉,一般的遗传算法都有一个交叉概率,每两个个体之间通过交叉产生两个新个体,代替原来的老个体,不交叉的个体保持不变。变异分为局部变异和全局变异。局部变异则是对种群中随机抽取一个个体进行操作,比如二进制编码下的取反操作。全局变异则是对种群中每一个个体都有一定的变异概率。

        (4)不断重复(2)(3)步进行迭代,寻找最优解。

三、进化规划

        1962年美国Lawrence J.Fogel首先提出进化规划(EP)当时未得到足够的重视,而他的鹅子(商务殷语)David B.Fogel改善了这种方法,从而使进化规划作为进化算法的一个分支得到广泛应用。

1、标准进化规划

        标准进化规划(SEP)个体表达形式:

        x_i^`=x_i+\sqrt{f(X)} \cdot N_i(0,1)

        其中x_i表示旧个体的第i个分量,x_i^`  表示新个体的第i个分量,表示旧个体的适应度,N_i(0,1)是针对第i个分量发生的随机数,服从标准正态分布,上式表明,新个体是在旧个体的基础上添加一个随机数,随机数的大小与个体的适应度有关,适应度大的个体随机数也大。

        进化规划用传统的十进制实数表达问题,没有交叉算子,进化主要依赖变异,而变异则是参照个体适应度添加一个随机数,标准进化规划在进化过程中的自适应调整功能主要依靠适应度来实现。

2、进化规划的基本技术

(1)编码

        和其他进化算法一样,进化规划也是一种反复迭代、不断进化的过程,进化规划采用十进制实数表达问题,每个个体的目标变量可以有多个分量,即X=(x_1,x_2,...,x_n),相应地,每个个体的控制因子σ和x_i是一一对应的,n个x_i要有n个σ,而X和σ组成的二元组是进化规划最常用的表达形式。

(2)产生初始群体

        进化规划从可行解中随机选择μ个个体作为进化算法的出发点。

(3)计算适应度

        进化规划采用十进制实数表达问题,计算适应度比较简单直观。

(4)变异

        变异是进化规划产生新群体的唯一方法,它不采用交叉算子。

(5)选择

        进化规划中没有交叉算子,所以变异之后就执行选择。进化规划中,新群体的个体数目λ等于旧群体个数数目μ,则λ=μ。选择便是在这新群体和旧群体的总数2μ中,选择μ个个体组成新群体。

        进化规则的选择采用随机型的q竞争选择法,通过从2μ个个体中任选q个个体组成测试群体,并对个体的适应度和q个个体的适应度进行比较,记录个体i优于q个个体的次数,该次数作为i个体的得分,该测试将对2μ个个体进行,每次测试时重新选择q个个体组成新的测试群体。最终个体得分高的个体组成下一个新群体。

        竞争选择法是一种随机选择,总体而言,对于优良个体入选的可能性较大,一般来说q取0.9μ。

(6)终止

        进化规划在进化过程中,每代都执行变异、计算适应度、选择等操作,不断反复执行,使群体素质得到改进,直到得到最优解。进化规划的终止准则有最大进化次数、最优个体与期望值的偏差、适应度的变化趋势以及最优适应度与最差适应度之差等。

四、进化策略

1、进化策略及其改进

(1)(1+1)-ES

        进化策略的个体用十进制实型数表示,即:

        X^{t+1}=X^t+N(0,\sigma)

        若新个体的适应度优于旧个体,则进行替换,否则舍弃性能欠佳的新个体,重新产生下一代新个体,在进化策略中,个体的这种进化方式也称为变异,进化操作只有变异一种,用独立的随机变量修正旧个体,提高个体素质。

(2)(μ+1)-ES

        与(1+1)-ES相比都只产生了一个新个体,但使用了群体搜索策略,增添了重组算子,从夫代继承信息构成新个体,有了明显的改进。

(3)(μ+λ)-ES和(μ,λ)-ES

        这两种进化策略中,都采用了重组、变异、选择三种算子,其中重组算子类似(μ+1)-ES,而变异算子的标准差可以自适应调整。

        \sigma^`=\sigma \cdot e^{N(0,\Delta \sigma )}

X^{`}=X+N(0,\sigma^`)

        上式中(X,σ)为父代个体,(X`,σ`)为子代新个体,N(0,σ`)为独立的服从正态分布的随机变量。

        如今进化策略适合于目标函数含有噪声干扰,优化程度明显受迭代次数影响的问题。

2、进化策略基本技术

(1)适应度计算

        进化策略中对于约束条件处理,主要采用重复试凑法,每当新个体生成,将其带入约束条件中检验是否满足约束条件,若满足接受新个体,否则舍弃。

        对于采用(μ,λ)-ES,旧群体不参加选择,初始个体可以略去适应度计算,直接执行重组、变异等操作,之后计算新群体适应度,对于(μ+λ)-ES,旧群体需要参加选择,需要计算初始群体的适应度。

 (2)重组

        进化策略中的重组相当于遗传算法中的交叉,都是以父代个体为基础进行信息交换。

        重组策略有三种:离散重组(均匀交叉)、中值重组、混杂重组。

(3)变异

        与进化规划不同的是,有时候可能会引入旋转因子。

(4)选择

        进化策略中的选择是确定性操作,会严格根据适应度大小,优胜劣汰,全部保留优良个体。

        (μ+λ)选择会保留旧个体的同时,保留进化参数σ,可能产生局部最优解,不利于自适应调整机制。

        (μ,λ)选择不会保留旧个体,全部舍弃,保证算法从新的基础全方位进化,容易进化到全局最优解,促进自适应调整。

(5)终止

        终止准则与遗传算法类似,Schwefle提出最优个体和最差个体比较来决定算法是否终止,一旦小于某一阈值,则算法终止。

参考视频:【人工智能教程】10.1 - 进化计算概述_哔哩哔哩_bilibili

参考书籍:《人工智能原理》丁世飞

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

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

相关文章

安装IIS服务

什么是IIS服务 IIS(Internet Information Services)是微软公司开发的一款用于托管和管理Web应用程序的服务软件。IIS服务是一种在Windows操作系统上运行的Web服务器,它能够处理HTTP(Hypertext Transfer Protocol)和HTT…

《Kubernetes部署篇:Ubuntu20.04基于外部etcd+部署kubernetes1.24.16集群(多主多从)》

一、架构图 如下图所示: 二、环境信息 1、部署规划 主机名K8S版本系统版本内核版本IP地址备注k8s-master-631.24.16Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63master节点 + etcd节点k8s-master-641.24.16Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.64master节点 + …

【TA 挖坑02】RayMarching SDF 物体黏合

写在前面 由于实习和忙着论文很久没经营博客了,最近以各种方式收集到了一些想实现的效果,其中一个就是卡通云融合、变大变小、聚散收拢的效果如何实现的问题,这就不得不提搁置了很久的RayMarching... 挖坑!整理一下有帮助的文章…

origin修改默认的字体等

因为默认是中文宋体,每次切换成英文尤其是希腊字母就很麻烦。 选择菜单栏的【设置】——【选项】点击。 弹出窗口中选择【文本字体】 设置成你需要的字体就好。 这里同样可以更改页面、图等的默认设置。 效果: 选择插入文字后,自动更改成…

PyQt5登录界面跳转

目录 1、设计ui界面 2、设计逻辑代码,实现登录界面跳转 3、结果 1、设计ui界面 设计后的ui界面 在这里可以设置密码不显示 这里可以设置快捷键 最后将ui界面转为py文件后获得的逻辑代码为:(文件名为Login.py) # -*- coding: u…

Windows上使用dump文件调试

dump文件 dump文件记录当前程序运行某一时刻的信息,包括内存,线程,线程栈,变量等等,相当于调试程序时运行到某个断点上,把程序运行的信息记录下来。可以通过Windbg打开dump,查看程序运行的变量…

DispatcherServlet doDispatch()方法解析(1)

目录 简介doDispatch() 源码解析this.mappingRegistry 简介 在DispatcherServlet类中, 最关键的就是doDispatch()这个方法, 每一次请求都需要经过这个方法, 对每个请求进行转发, 通过反射调用对应的方法 doDispatch() 源码解析 可以看到最关键的代码就是1047行, 根据请求对象…

Python规范

PEP8 风格指南: 缩进,用 4 个空格,不要用制表符。(Python 不允许混合制表符和空格进行缩进。)换行,一行不超过 79 个字符。用空行分隔函数和类,及函数内较大的代码块。 用两个空行包围顶级函数和类定义。类内的方法定…

算法通关村第十关 | 数组中第k个最大元素

1.数组中第k大的数字 题目: LeetCode:数组中的第k个最大元素,给定整数数组nums和整数k,请返回数组中第k个最大的元素,请注意,你需要找的是数组排序后第k个最大的元素,而不是第k个不同的元素。 运…

【【STM32-SPI通信协议】】

STM32-SPI通信协议 STM32-SPI通信协议 •SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线 •四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO…

stm32F103R6实现流水灯参考源代码

#include "main.h" #include "gpio.h" void SystemClock_Config(void); void sleep(int a) {int i0,j0;for(i0;i<a;i){for(j0;j<2000;j);}} 真正发挥效果的是这个main函数// int main(void) {int i0;HAL_Init();SystemClock_Config();MX_GPIO_Init()…

4.UE数字人工程运行逻辑及程序逻辑

1.Fay-UE5数字人工程导入 2.UE数字人语音交互 3.UE基本操作及数字人工程模块组成&#xff08;UE数字人系统教程&#xff09; 一、3个状态&#xff1a;鸡汤广告、交互&#xff08;聊天与否&#xff09;、跳舞 1、启动即开始循环鸡汤广告模式 2、第一次交互&#xff08;助理版…

gromacs教程练习1

gromacs能在win上运行&#xff0c;还是个开源的软件&#xff0c;这都很值得入手学习 记录下gromacs教程的练习情况&#xff1a; Lysozyme in water 水中的溶菌酶&#xff0c;嗯&#xff0c;估计就是把蛋白处理后放在显试溶剂里跑MD这个模拟。 1、文件的准备&#xff1a; 1、…

JVM虚拟机:初始化的介绍

本文重点 我们前面学习了三个步骤: 装载 连接 初始化 初始化 初始化的时候,会为静态成员变量赋值初始值,它有两种方式: ①声明类变量是指定初始值 ②使用静态代码块为类变量指定初始值 例子 最后输出的结果为3,它的过程是这样的: main方法中输出T.count,由于count是…

产品经理如何提高用户画像效果?SIKT模型

产品经理做用户画像&#xff0c;最担心被业务方反馈&#xff1a;没效果。这往往是由用户画像与业务场景脱节造成的。那么我们该如何从业务场景出发&#xff0c;让用户画像更有效&#xff1f;一般来说&#xff0c;我们可以采用SIKT模型解决这个问题。 用户画像 ​ 1、SIK…

使用CLI添加磁盘到VM

登录 https://portal.azure.com/#home&#xff0c;点击右上角的控制台图标 &#xff0c;打开CLI 在控制台中输入如下指令&#xff0c;在NetworkWatcherRG创建一个名字为TEST的虚拟机&#xff0c;使用的镜像是Win2019datacenter&#xff0c;username是aaa,password是1234567890A…

SpringBoot 操作Redis、创建Redis文件夹、遍历Redis文件夹

文章目录 前言依赖连接 RedisRedis 配置文件Redis 工具类操作 Redis创建 Redis 文件夹查询数据遍历 Redis 文件夹 前言 Redis 是一种高性能的键值存储数据库&#xff0c;支持网络、可基于内存亦可持久化的日志型&#xff0c;而 Spring Boot 是一个简化了开发过程的 Java 框架。…

JDBC Vertica Source Connector 使用文档

支持以下引擎 Spark Flink SeaTunnel Zeta 关键特性 批处理 精确一次性处理 列投影 并行处理 支持用户自定义拆分 支持查询 SQL 并实现投影效果 描述 通过 JDBC 读取外部数据源数据。 支持的数据源信息 DatasourceSupported versionsDriverUrlMavenVerticaDifferent depen…

SAP和APS系统超级BOM核对(SAP配置BOM攻略八)

2023年是华为自动驾驶上路元年&#xff0c;8月问界M5的自驾版已经开通了第一批五大城市的自动驾驶功能&#xff0c;年底逐步开放的城市会多达60个。问界M9会也会在年底发布&#xff0c;而M9的生产工厂也在紧锣密鼓的建设中。 APS (Advanced Planning Scheduling) 高级计划与排…

SD WebUI 扩展:prompt-all-in-one

sd-webui-prompt-all-in-one 是一个基于 Stable Diffusion WebUI 的扩展&#xff0c;旨在提高提示词/反向提示词输入框的使用体验。它拥有更直观、强大的输入界面功能&#xff0c;它提供了自动翻译、历史记录和收藏等功能&#xff0c;它支持多种语言&#xff0c;满足不同用户的…