【遗传算法】【机器学习】【Python】常见交叉方法(二)、多点交叉和均匀交叉

news2024/11/28 1:33:29

往期遗传算法文章见:
【遗传算法】【机器学习】【Python】常见交叉方法(一)、单点交叉和两点交叉

一、遗传算法流程图

在这里插入图片描述

交叉过程即存在于上图的”交叉“(crossover)步骤中。

二、多点交叉

多点交叉的原理就是,随机地从父代两个基因型中,选择n个位点进行交换,其中n小于等于父代基因型长度(假设双亲基因长度相同,使用一维数组进行表示),如下图所示:

在这里插入图片描述

用Python实现如下:

import random


# 简单的多点交叉算法
def multi_cross(list1, list2, n):
    # 假设list1和list2长度相同, n为交叉位点个数
    for i in range(n):
        pos = random.randint(i, len(list1) - 1)  # 保证下一个位点在上一个位点之后
        list1[pos], list2[pos] = list2[pos], list1[pos]  # 交换数组元素

    return list1, list2


for i in range(5):
    list1 = [1, 2, 3, 4, 5, 6, 7, 8]
    list2 = [10, 20, 30, 40, 50, 60, 70, 80]
    print(multi_cross(list1, list2, 3))

程序输出(5次不同的交叉结果):

在这里插入图片描述

三、均匀交叉

均匀交叉是指,从头到尾遍历双亲的每一个基因位点,每一个位点以概率p交换。在Python中,我们用random.random()方法可以产生一个0,1之间的随机小数,可以方便地模拟“概率”,见如下代码:

import random


def uniform_cross(list1, list2, prob):
    # 以概率prob对list1和list2进行均匀交叉
    # 假设list1和list2长度相同
    for i in range(len(list1)):
        val = random.random()
        if val <= prob:
            list1[i], list2[i] = list2[i], list1[i]

    return list1, list2


for i in range(5):
    list1 = [1, 2, 3, 4, 5, 6, 7, 8]
    list2 = [10, 20, 30, 40, 50, 60, 70, 80]
    print(uniform_cross(list1, list2, 0.666))

程序输出(5次不同的交叉结果):
在这里插入图片描述

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

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

相关文章

RISCV中CLINT和PLIC解析

中断这个东西理论上属于CPU核心的东西。一般来说并不需要重新设计。实际的实现中是比较繁琐的&#xff0c;此处只介绍原理。ARM基本上会用NVIC(Nested Vectored Interrupt Controller) 的东西&#xff0c;RISC-V目前实现了一个比较简单的东西&#xff08;有人称之为简洁高效&am…

算法 | hbut期末复习笔记

贪心选择策略&#xff1a;所求问题的整体最优解可以通过一系列局部最优的选择&#xff08;贪心选择&#xff09;得到 最优子结构&#xff1a;问题的最优解包括了其子问题的最优解 回溯法&#xff1a;具有限界函数的深度优先搜索法 回溯法的解空间&#xff1a;子集树&排列…

【计网复习】应用层总结(不含HTTP和错题重点解析)

应用层总结&#xff08;不含HTTP和错题重点解析&#xff09; 应用层简介 应用层的主要功能常见的应用层协议小林对于应用层通常的解释 网络应用模型 客户端-服务器模型&#xff08;Client-Server Model, C/S&#xff09; 特点优点缺点应用场景 对等网络模型&#xff08;Peer-to…

【QT5.14.2】编译MQTT库example的时候报No such file or directory

【QT5.14.2】编译MQTT库example的时候报No such file or directory 前几天导师让跑一下MQTT库&#xff0c;用的5.14.2版本的QT&#xff0c;于是就上网搜了一个教程&#xff1a;https://www.bilibili.com/video/BV1dH4y1e7hG/?spm_id_from333.337.search-card.all.click&v…

TCP/IP协议介绍——三次握手四次挥手

TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff0c;传输控制协议/网际协议&#xff09;是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议&#xff0c;而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议…

如何在隔离环境中设置 LocalAI 以实现 GPU 驱动的文本嵌入

作者&#xff1a;来自 Elastic Valeriy Khakhutskyy 你是否想在 Elasticsearch 向量数据库之上构建 RAG 应用程序&#xff1f;你是否需要对大量数据使用语义搜索&#xff1f;你是否需要在隔离环境中本地运行&#xff1f;本文将向你展示如何操作。 Elasticsearch 提供了多种方法…

每日一题——Python实现PAT甲级1077 Kuchiguse(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码点评 时间复杂度分析 空间复杂度分析 总结 我要更强 方案1&#x…

Postman 打开错误的解决方法

错误如下&#xff1a; PostMan的文件都是放在用户文件下&#xff0c;所以在Local和Roaming文件夹下查看&#xff0c;并删除所有PostMan相关文件夹。 我电脑上的路径在 C:\Users\Administrator\AppData\Local 和 C:\Users\Administrator\AppData\Roaming【Administrator为系…

APP单页分发源码下载安卓苹果自动识别apk描述文件免签自动安装

下载地址&#xff1a;APP单页分发源码下载安卓苹果自动识别apk描述文件免签自动安装

Vue学习笔记_Day02

文章目录 1&#xff0c;指令修饰符2&#xff0c;样式控制3&#xff0c;v-model进阶4&#xff0c;计算属性5&#xff0c;监视器6&#xff0c;生命周期 1&#xff0c;指令修饰符 跟在指令后面&#xff0c;具有特殊的功能。 事件修饰符&#xff1a; .enter&#xff1a;只有enter…

2024-6-9 石群电路-27

2024-6-9&#xff0c;星期日&#xff0c;12:49&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。Hello&#xff0c;大家&#xff0c;我回来啦&#xff0c;昨天断更了一天&#xff0c;是为什么捏&#xff0c;是因为&#xff0c;我通过毕业答辩啦&#xff01;&…

Golang | Leetcode Golang题解之第133题克隆图

题目&#xff1a; 题解&#xff1a; func cloneGraph(node *Node) *Node {if node nil {return node}visited : map[*Node]*Node{}// 将题目给定的节点添加到队列queue : []*Node{node}// 克隆第一个节点并存储到哈希表中visited[node] &Node{node.Val, []*Node{}}// 广…

SpringBoot+Vue影城管理系统(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 角色对应功能 用户管理员 功能截图

2024050702-重学 Java 设计模式《实战状态模式》

重学 Java 设计模式&#xff1a;实战状态模式「模拟系统营销活动&#xff0c;状态流程审核发布上线场景」 一、前言 写好代码三个关键点 如果把写代码想象成家里的软装&#xff0c;你肯定会想到家里需要有一个非常不错格局最好是南北通透的&#xff0c;买回来的家具最好是品…

如何在手机上恢复误删除的视频?

说到移动设备上的视频恢复&#xff0c;我们仍将揭开4种解决方案供您使用。希望它们对您的案件有所帮助。 众所周知&#xff0c;我们移动设备上的视频应用程序将创建一个缓存文件夹&#xff0c;以在它们永远消失之前临时存储已删除的项目。因此&#xff0c;有许多iPhone / Andr…

Thermal-BST自动化工具在Flotherm建模中的应用与优势

引言 随着科技的不断发展&#xff0c;电子领域的需求也越来越广泛和多样化。然而&#xff0c;PCB板及其上的器件建模问题一直是电子工程师在设计过程中面临的重要挑战之一。软件中原有的PCB建模工具&#xff0c;转换出来的模型复杂&#xff0c;影响后期的网格划分&#xff0c;…

SpringBoot+Vue学生宿舍管理系统(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 角色对应功能 学生宿管员管理员 功能截图

你好GPT-4o——对GPT-4o发布的思考与看法

你好GPT-4o 前言 2024年5月13日&#xff0c;OpenAI官网发布了他们的新一代自然语言处理交互系统——GPT-4o。这是OpenAI继GPT4之后又一个新的旗舰模型。 GPT-4o&#xff08;“o”代表“omni”&#xff09;是迈向更自然的人机交互的一步——它接受文本、音频、图像和视频的任意…

linuxDNS域名解析

文章目录 DNS 是域名系统的简称正向解析反向解析主从服务器解析bond网卡 DNS 是域名系统的简称 域名和IP地址之间的映射关系 互联网中&#xff0c;IP地址是通信的唯一标识&#xff0c;逻辑地址 访问网站 域名解析的目的就是为了实现&#xff0c;访问域名就等于访问IP地址 …

Linux---进程/磁盘管理

文章目录 目录 文章目录 一.Linux中进程的概念 二.显示系统执行的进程 2.1: ps 命令 2.2 top 命令 三.终止进程 四.磁盘分区 一.Linux中进程的概念 在Linux中&#xff0c;进程是指操作系统中正在执行的程序的实例。每个进程都由操作系统分配了独立的内存空间&#xff0c;用于…