遗传算法初探

组成要素

编码

分为二进制编码、实数编码和顺序编码

初始种群的产生

分为随机方法、基于反向学习优化的种群产生。
基于反向学习优化的种群其思想是先随机生成一个种群P(N),然后按照反向学习方法生成新的种群OP(N),合并两个种群,得到一个新的种群S(N),对S(N)按适应度排序,选择适应度最高的N个个体作为初始种群。

适应度函数的设计

f ( x ) f(x) f(x)表示目标函数, F ( x ) F(x) F(x)为适应度函数
线性关系为 F ( x ) = a f ( x ) + b F(x)=af(x) + b F(x)=af(x)+b
幂律关系为 F = f a F=f^a F=fa
对数关系为 F ( x ) = a ∗ l n f ( x ) + b F(x)=a*lnf(x) + b F(x)=alnf(x)+b
指数关系为 F ( x ) = a ∗ e b f ( x ) + c F(x)=a*e^{bf(x)} + c F(x)=aebf(x)+c

选择策略

对于个体i,其适应度为 F i F_i Fi,假定规模为n,则个体被选中的概率为 P i = F i ∑ i = 1 n F i P_i=\frac{F_i}{\sum_{i = 1}^n{F_i}} Pi=i=1nFiFi
可以使用锦标赛选择策略,从种群中选取n个个体,选取最优的个体放入下一代种群中

遗传操作

有交叉和变异两种运算。
其中交叉分为有:单点交叉,双点交叉,单形杂交,球形杂交
变异有:按位变异,高斯变异,有向变异

停止条件

设置最大迭代次数或者适应值函数评估次数,也可以规定的搜索精度

算法流程

N
Y
开始
初始种群
是否满足停止条件
评价个体
输出结构
选择
遗传操作
产生新种群
结束

数学原理

称为模式定理
模式的原始长度 L ( H ) L(H) L(H):模板中总的基因位数
模板的定义矩 δ ( H ) \delta(H) δ(H):模板中从左到右第一个确定字符与最后一个确定字符的距离
模板的阶数 o ( H ) o(H) o(H):模板中确定字符的个数
模板的容量 D ( H ) D(H) D(H):模板包含字符串的个数,对于二进制编码来说, D ( H ) = 2 L ( H ) − O ( H ) D(H)= 2^{L(H)-O(H)} D(H)=2L(H)O(H)
设第(t+1)代种群 P ( t + 1 ) P(t+1) P(t+1)含有H中元素个数的期望值为 E ( H ⋂ P ( t + 1 ) ) E(H\bigcap P(t+1)) E(HP(t+1)),l为种群P(t)中个体和串长,在只有选择操作情况下时
E ( H ⋂ P ( t + 1 ) ) = ∣ H ⋂ P ( t ) ∣ ⋅ N ⋅ f ( H , t ) F ( t ) = ∣ H ⋂ P ( t ) ∣ ⋅ f ( H , t ) F ˉ ( t ) E(H\bigcap P(t+1))=|H\bigcap P(t)| \cdot N \cdot \frac{f(H,t)}{F(t)} = |H\bigcap P(t)| \cdot \frac{f(H, t)}{\bar{F}(t)} E(HP(t+1))=HP(t)NF(t)f(H,t)=HP(t)Fˉ(t)f(H,t)
在考虑杂交概率情况下 p c p_c pc时,期望值为
E ( H ⋂ P ( t + 1 ) ) = ∣ H ⋂ P ( t ) ∣ ⋅ f ( H , t ) F ˉ ( t ) ⋅ ( 1 − p c ⋅ δ ( H ) l − 1 ) E(H\bigcap P(t+1))= |H\bigcap P(t)| \cdot \frac{f(H, t)}{\bar{F}(t)} \cdot (1 - p_c \cdot \frac{\delta (H)}{l - 1}) E(HP(t+1))=HP(t)Fˉ(t)f(H,t)(1pcl1δ(H))
在考虑变异概率情况下 p m p_m pm时,期望值为 E ( H ⋂ P ( t + 1 ) ) = ∣ H ⋂ P ( t ) ∣ ⋅ f ( H , t ) F ˉ ( t ) ⋅ ( 1 − p c ⋅ δ ( H ) l − 1 ) ⋅ ( 1 − p m ) o ( H ) E(H\bigcap P(t+1))= |H\bigcap P(t)| \cdot \frac{f(H, t)}{\bar{F}(t)} \cdot (1 - p_c \cdot \frac{\delta (H)}{l - 1}) \cdot (1 - p_m)^{o(H)} E(HP(t+1))=HP(t)Fˉ(t)f(H,t)(1pcl1δ(H))(1pm)o(H)

非线性约束优化

min ⁡ f ( x ) s.t. g i ( x ) ≤ 0 , i = 1 , 2 , … , m h j ( x ) = 0 , j = 1 , 2 , … , p \begin{equation} \begin{aligned} \min & \quad f(x) \\ \text{s.t.} \quad & g_i(x) \le 0, \quad i = 1, 2, \ldots, m \\ & h_j(x) = 0, \quad j=1,2,\ldots, p \end{aligned} \end{equation} mins.t.f(x)gi(x)0,i=1,2,,mhj(x)=0,j=1,2,,p
其中 x = [ x 1 , x 2 , … , x n ] x=[x_1, x_2, \ldots, x_n] x=[x1,x2,,xn]
选择策略有

  • 约束违背的度数
    p ( x ) = ∑ i = 1 m + p q i ( x ) 2 q j ( x ) = { m a x ( 0 , g j ( x ) ) , 1 ≤ j ≤ m ∣ h j ( x ) ∣ , 1 ≤ j ≤ p p(x)=\sum_{i=1}^{m+p} {q_i(x)^2} \\ \begin{equation} q_j(x)=\left\{ \begin{aligned} & max(0, g_j(x)), \quad 1 \le j \le m \\ & |h_j(x)|, \quad 1 \le j \le p \end{aligned} \right. \end{equation} p(x)=i=1m+pqi(x)2qj(x)={max(0,gj(x)),1jmhj(x),1jp
  • 约束违背的数目
    s ( x ) = ∑ j = 1 m + p n u m j ( x ) n u m ( x ) = { 0 , q j ( x ) ≤ 0 1 , 其他 s(x)=\sum_{j=1}^{m+p} {num_j(x)} \\ \begin{equation} num(x)=\left\{ \begin{aligned} & 0, \quad q_j(x) \le 0 \\ & 1,其他 \end{aligned} \right. \end{equation} s(x)=j=1m+pnumj(x)num(x)={0,qj(x)01,其他
    个体的特征向量表达为
    v ( x ) = ( f ( x ) , p ( x ) , s ( x ) ) v(x)=(f(x), p(x), s(x)) v(x)=(f(x),p(x),s(x))

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

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

相关文章

【算法】堆

堆 heap,一棵完全二叉树,使用数组实现的,但具备完全二叉树的一些性质。一般总是满足以下性质: 堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。(即除了最底层,其他层…

C/C++高性能Web开发框架全解析:2025技术选型指南

一、工业级框架深度解析(附性能实测) 1. Drogon v2.1:异步框架性能王者 核心架构: Reactor 非阻塞I/O线程池(参考Nginx模型) 协程实现:基于Boost.Coroutine2(兼容C11)…

使用PHP接入纯真IP库:实现IP地址地理位置查询

引言 在日常开发中,我们经常需要根据用户的IP地址获取其地理位置信息,例如国家、省份、城市等。纯真IP库(QQWry)是一个常用的IP地址数据库,提供了丰富的IP地址与地理位置的映射关系。本文将介绍如何使用PHP接入纯真IP库,并通过一个完整的案例演示如何实现IP地址的地理位…

Django ORM 的常用字段类型、外键关联的跨表引用技巧,以及 `_` 和 `__` 的使用场景

一、Django ORM 常用字段类型 1. 基础字段类型 字段类型说明示例CharField字符串字段,必须指定 max_lengthname models.CharField(max_length50)IntegerField整数字段age models.IntegerField()BooleanField布尔值字段is_active models.BooleanField()DateFiel…

java递归求自然数列的前n项和

概述 实现 /*** 数列 1 2 3 ... n ...* 递归求数列的前n项和* param n* return*/private static long calSum(long n){if (n1) return 1;else {return ncalSum(n-1); // 前n项的和 即第n项的值前n-1项的和}}测试用例 public static void main(String[] args) {long res1 cal…

【Golang 面试题】每日 3 题(六十五)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…

16、Python面试题解析:python中的浅拷贝和深拷贝

在 Python 中,浅拷贝(Shallow Copy) 和 深拷贝(Deep Copy) 是处理对象复制的两种重要机制,它们的区别主要体现在对嵌套对象的处理方式上。以下是详细解析: 1. 浅拷贝(Shallow Copy&a…

【Godot4.3】题目与答案解析合并器

免责申明 本文和工具截图中涉及题库和题目,均为本人自学使用,并未有商业和传播企图。如有侵害,联系删改。 概述 笔者本人医学专业从业人员,编程只是业余爱好。在自己的专业应考学习过程当中: 有时候不太喜欢纸质题库…

Lm studio本地部署DeepSeek

为什么用Lm studio Ollama官网下载过慢或失败(Lm默认下载源无法下载,但可以更换下载源)Ollama默认安装至C盘一部分Nivida显卡无法吃满显存资源一部分AMD显卡替换rocm文件后无法启动 Lm studio安装 官网下载:LM Studio - Discov…

基于Qlearning强化学习的2DoF机械臂运动控制系统matlab仿真

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 2DoF机械臂运动学模型 2.2 Q-learning强化学习算法原理 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): 仿真操作步骤可参…

Unity贴图与模型相关知识

一、贴图 1.贴图的类型与形状 贴图类型 贴图形状 2.在Unity中可使用一张普通贴图来生成对应的法线贴图(但并不规范) 复制一张该贴图将复制后的贴图类型改为Normal Map 3.贴图的sRGB与Alpha sRGB:勾选此选项代表此贴图存储于Gamma空间中…

快速上手 Unstructured:安装、Docker部署及PDF文档解析示例

1. 核心概念 1.1 Unstructured简介 Unstructured 是一个强大的 Python 库,专注于从非结构化数据中提取和预处理文本信息,广泛应用于 PDF、Word 文档、HTML 等多种格式的文件处理。其核心功能包括分区、清理、暂存和分块,能够将复杂的非结构化文档转换为结构化输出,为后续…

pyecharts介绍

文章目录 介绍安装pyecharts基本使用全局配置选项 折线图相关配置地图模块使用柱状图使用 介绍 echarts虑是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可,而Pyhon是门富有表达力的语言&a…

Fisher信息矩阵与Hessian矩阵:区别与联系全解析

Fisher信息矩阵与Hessian矩阵:区别与联系全解析 在统计学和机器学习中,Fisher信息矩阵(FIM)和Hessian矩阵是两个经常出现的概念,它们都与“二阶信息”有关,常用来描述函数的曲率或参数的敏感性。你可能听说…

python与C系列语言的差异总结(1)

/ 表示浮点除法 // 表示整数除法 print(8/3)print(8//3)布尔型 False/True 首字母大写 整数的大小是没有限制的,会根据需要自动增长,仅受限于可用内存的大小。 m**n表示m的n次方 x 4.3 ** 2.4print(x)print(3.5e30 * 2.77e45)print(1000000001.0 *…

Python selenium 库

Selenium 是一个用于自动化 Web 浏览器操作的强大工具,广泛应用于 Web 应用程序测试、网页数据抓取和任务自动化等场景。 Selenium 为各种编程语言提供了 API,用作测试。 目前的官方 API 文档有 C#、JavaScript、Java、Python、Ruby。 安装 Selenium 和…

vllm部署LLM(qwen2.5,llama,deepseek)

目录 环境 qwen2.5-1.5b-instruct 模型下载 vllm 安装 验证安装 vllm 启动 查看当前模型列表 OpenAI Completions API(文本生成) OpenAI Chat Completions API(chat 对话) vllm 进程查看,kill llama3 deep…

Python NumPy库使用指南:从入门到精通

1. 引言 NumPy(Numerical Python)是 Python 中用于科学计算的核心库之一。它提供了强大的多维数组对象(ndarray),以及一系列高效的数学函数,能够轻松处理大规模的数值数据。NumPy 是许多其他科学计算库(如 Pandas、Matplotlib、Scikit-learn 等)的基础。 本文将详细介…

15.2 智能销售顾问系统技术架构解密:构建企业级知识驱动型对话引擎

智能销售顾问系统技术架构解密:构建企业级知识驱动型对话引擎 关键词:RAG 架构设计、销售知识库系统、LoRA 微调优化、多模态交互引擎、高并发服务部署 1. 系统技术架构全景解析 1.1 核心架构设计图 #mermaid-svg-UBkTgaR5lf5WfGMa {font-family:"trebuchet ms",…

用PyTorch从零构建 DeepSeek R1:模型架构和分步训练详解

DeepSeek R1 的完整训练流程核心在于,在其基础模型 DeepSeek V3 之上,运用了多种强化学习策略。 本文将从一个可本地运行的基础模型起步,并参照其技术报告,完全从零开始构建 DeepSeek R1,理论结合实践,逐步…