crossover

启发式算法之遗传算法

喜欢而已 提交于 2021-01-09 20:43:53
https://www.cnblogs.com/harrylyx/p/12397319.html 刚开学便被拉去参加了研究生数模比赛,赛题是一个航班排班的优化问题,所以第一反映便是遗传算法,比赛期间三个问题都使用单目标遗传算法,趁着还比较熟悉,特此记录,以便后续复习。本篇文章使用Python进行实现。 启发式算法 启发式算法是一种技术,这种技术使得在可接受的计算成本内去搜寻最好的解,但不一定能保证所得的可行解和最优解,甚至在多数情况下,无法阐述所得解同最优解的近似程度。 就是说这种算法的全局最优解只是理论上可行,大多数情况下都是一个局部最优解。启发式算法用的比较多的有模拟退火算法(SA)、遗传算法(GA)、列表搜索算法(ST)、进化规划(EP)、进化策略(ES)、蚁群算法(ACA)、人工神经网络(ANN)。这里重点介绍一下遗传算法(GA)。 遗传算法准备 遗传算法(Genetic Algorithm, GA)起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。其本质是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最佳解。 具体来说,在写算法之前,有四个很重要的步骤: 确定编码方式 如何设计编码 确定约束条件 如何实现约束 确定编码方式

从软件外包到阿里技术专家再到CTO,他究竟是如何一路晋升?

為{幸葍}努か 提交于 2020-10-31 07:06:46
技术界流传着许多未经验证的“定论” 例如: 程序员必然是千年格子衫牛仔裤; 日常脱发,大腹便便; 能进阿里必有着顶级高校学历; 管理层基本不写代码; ◐ 然而,他,似乎与这些定论大相径庭。 · 36岁的他,依旧黑发稠密,体态良好,丝毫没有中年男人的油腻,谈吐间可见他的儒雅与温和; · 专科出身,曾是当地国税局的一名小小信息员,软件外包公司的码农,十几年后,却进入菜鸟,负责公司核心业务服务器端技术架构; · 现是环球黑卡CTO的他,有着13年团队管理经验,却时常与一线同学讨论技术细节,并每天坚持写代码; …… 在他身上,一些想象中的 “不可能” 都成了现实中的 顺其自然。 ◐ 崔涛 现环球黑卡CTO 想都是问题 做才是答案 骨子里不安分的崔涛,不愿只在当地国税局当一名技术员。2002年,他只身从山西老家来到杭州找到了第一份软件外包的工作。这一干,就干了六年多。 “当时没什么想法,就是找一份工作,好好干!” 虽然软件外包对技术深度并没有太高的要求,但对于初入软件行业的新人来说,也是个不小的挑战。为了快速成长,那段日子里,崔涛阅读了大量的技术书籍,例如《Java与模式》、《Red Hat Linux 9 宝典》等等。在积累理论知识的同时,崔涛编写了各种实例代码以 练手 。 13年搬家时整理出来的书籍 在谈到印象最深的一本书时,崔涛的第一反应就是那本仅有340页的

GIS系列专题(5):使用遗传算法解决最优路径问题

偶尔善良 提交于 2020-10-01 11:29:27
本文非原创,而是节选自微信公众号AmazingRobot +的文章:《解决最优路径问题的算法》 遗传算法の解决最优路径问题 旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。 — Edited By Hugo 1、遗传算法与生物进化学说: 遗传算法(Genetic Algorithm)遵循『适者生存』、『优胜劣汰』的原则,是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。 遗传算法模拟一个人工种群的进化过程,通过选择(Selection)、交叉(Crossover)以及变异(Mutation)等机制,在每次迭代中都保留一组候选个体,重复此过程,种群经过若干代进化后,理想情况下其适应度达到《近似最优》的状态。 自从遗传算法被提出以来,其得到了广泛的应用,特别是在函数优化、生产调度、模式识别、神经网络、自适应控制等领域,遗传算法发挥了很大的作用,提高了一些问题求解的效率。 2、遗传算法是一类模拟自然界遗传进化规律的仿生学算法,它不是一个具体的算法,而是一个算法簇。遗传算法是演化算法的一个分支

从小玩到大的超级玛丽,计算复杂性是怎样的?

天涯浪子 提交于 2020-08-17 06:20:02
  机器之心转载    作者:张诸俊   吃蘑菇长大的「超级玛丽」比你想象的更复杂。      「超级玛丽」(Super Mario Bros.)应该算是红白机上最著名的游戏了,大部分 80 后、 90 后应该都玩过吧。对于这样经典的游戏,「无聊」的游戏计算复杂性研究人员当然不会放过啦。2015 年,Aloupis, Demaine, Guo 和 Viglietta [1] 证明了「超级玛丽」属于 NP-hard。2016 年,Demaine , Viglietta 和 Williams [2] 证明了「超级玛丽」属于 PSPACE-complete。   今天我们就来详细介绍一下关于这个游戏的计算复杂性的研究。在文中我们将看到如何设置地图使得超级玛丽能够模拟一些计算困难的问题,从而说明该游戏在计算理论的角度下是难解的。   本篇的第 1 节介绍一个 NP-hard 框架;第 2 节介绍应用框架证明「超级玛丽」属于 NP-hard;第 3 节介绍一个 PSPACE-hard 框架;第 4 节介绍「超级玛丽」属于 PSPACE-hard 的归约;第 5 节说明如何使归约更完善;第 6 节进行总结。    1. NP-hard 框架   我们先来介绍一个用于证明一类 2D 游戏困难性的框架,这个框架来自文献 [1] 。我们假设 在这类 2D 游戏中,玩家操控一个角色在地图上移动

deepin v20 升级tim3.0

做~自己de王妃 提交于 2020-08-17 03:36:30
1,去官方下载最新版Windows安装包 https://tim.qq.com/download.html 2,使用crossover安装一下tim3 可以使用crossover来安装一下tim3,(crossover安装后,总是有各种问题,不能完美使用) crosssover使用步骤如下: 接下来的步骤 等待安装完成 crossover安装的tim路径为: ~/.cxoffice/tim3/drive_c/Program Files (x86)/Tencent/TIM 3,在应用商店安装tim2 安装后的目录为: ~/.deepinwine/Deepin-TIM/drive_c/Program Files/Tencent/TIM 将步骤2安装过的文件拷贝覆盖到当前目录 启动tim测试 完美运行。 来源: oschina 链接: https://my.oschina.net/u/4399228/blog/4415162

一文了解NLP中的数据增强方法

别等时光非礼了梦想. 提交于 2020-08-13 18:46:06
最近研究了一阵文本数据增强的方法,看到国外有一个小哥写了一篇很不错的博客来总结 NLP 领域数据增强的方法,读完感觉收益颇多,所以周末花了一上午时间翻译了一下全文。 原文地址: A Visual Survey of Data Augmentation in NLP 翻译:简枫(转载请私信或邮件) 数据增强技术在计算机视觉中应用的比较广泛,但是在 NLP 中却很少能得到有效的应用。本质原因在于图像中的一些数据增强方法,比如将图像旋转几度或将其色度转换为灰度,在增强数据的同时并不会改变图像本身的含义。这种特性使得数据增强成为计算机视觉研究中的一种重要工具。 不同于 CV,NLP 中想要做数据增强,明显困难很多 我对是否有人尝试去开发 NLP 相关的数据增强技术很感兴趣,所以找时间研究了一下现有的文献。在这篇文章中,我会努力去概述当前用于文本数据增强的方法,同时也提供对应的参考文献,供大家学习。 NLP 里面数据增强的常用方法 1. 词汇替换 这一类的工作,简单来说,就是去替换原始文本中的某一部分,而不改变句子本身的意思。 1.1 基于同义词典的替换 在这种方法中,我们从句子中随机取出一个单词,将其替换为对应的同义词。例如,我们可以使用英语的 WordNet 数据库来查找同义词,然后进行替换。 WordNet 是一个人工维护的数据库,其中包含单词之间的关系。 使用 WordNet

Kubernetes实战

喜欢而已 提交于 2020-08-13 04:03:08
1.5 提高可用性-发布多节点的Node/Express网络应用程序 Kubernetes实战 - 从零开始搭建微服务 前言 在上一篇文章中,已经学习了如何简单地开发一个单层网络应用。 【Kubernetes实战 - 从零开始搭建微服务 1 - 使用kind构建一个单层架构Node/Express网络应用程序】 ,本文将在上一篇基础上,添加额外节点,目的在于提高可用性(high availability)。 关于可用性 high availability 在软件产品环境下,如何提高服务稳定性,进而避免用户流失,一直是架构师工作的核心。高可用性有一些基本的设计原则, 找到单一故障点/单点故障,就是在整个架构中,找到其中可用性最低的服务/点,增加冗余,以避免单点故障 可靠交叉(reliable crossover),没找到很好的中文翻译,即,当多服务交叉在一起,互相依赖度极高,它们可能成为单点故障 及时发现故障 计算可用性 high availability A(可用性),MTBF(平均故障间隔),MDT(平均修复时间) 举个例子,AWS S3 存储服务HA保证值就在99.99%,耐用性durability是11个9 - 99.999999999%。 kind 创建一个多节点集群 k8s设计本身就是在于降低容器devops维护复杂度,提高可用性。 在上一篇文章的介绍里

Kubernetes实战

牧云@^-^@ 提交于 2020-08-07 21:15:53
1.5 提高可用性-发布多节点的Node/Express网络应用程序 Kubernetes实战 - 从零开始搭建微服务 前言 在上一篇文章中,已经学习了如何简单地开发一个单层网络应用。 【Kubernetes实战 - 从零开始搭建微服务 1 - 使用kind构建一个单层架构Node/Express网络应用程序】 ,本文将在上一篇基础上,添加额外节点,目的在于提高可用性(high availability)。 关于可用性 high availability 在软件产品环境下,如何提高服务稳定性,进而避免用户流失,一直是架构师工作的核心。高可用性有一些基本的设计原则, 找到单一故障点/单点故障,就是在整个架构中,找到其中可用性最低的服务/点,增加冗余,以避免单点故障 可靠交叉(reliable crossover),没找到很好的中文翻译,即,当多服务交叉在一起,互相依赖度极高,它们可能成为单点故障 及时发现故障 计算可用性 high availability A(可用性),MTBF(平均故障间隔),MDT(平均修复时间) 举个例子,AWS S3 存储服务HA保证值就在99.99%,耐用性durability是11个9 - 99.999999999%。 kind 创建一个多节点集群 k8s设计本身就是在于降低容器devops维护复杂度,提高可用性。 在上一篇文章的介绍里

种群进化+邻域搜索的混合算法(GA+TS)求解作业车间调度问题(JSP)-算法介绍

柔情痞子 提交于 2020-08-04 11:16:22
程序猿声 代码黑科技的分享区 过去小编简单了解过作业车间调度问题(JSP),这两个月简单接触了柔性车间调度问题(FJSP),但是因为一些原因打算暂时研究到这里。 在研究的时候,小编发现网上这方面的 中文资源不多,那么秉持着普度众生的原则,就在这里和大家分享一下最近研究的一些成果。 柔性作业车间调度问题介绍 之前我们曾经做过车间调度问题(JSP)的内容,相关可以看这篇文章: 这里再简单介绍一下FJSP: 集合 表示一系列相互独立的工件,任一工件 需要经过 等一系列工序的加工方可完成,工序之间按照固定的加工顺序依次完成。集合 表示可用的加工机器, 表示工件 的第 道工序,可以在可用机器集合 中的任意机器上进行加工。每道工序的加工时间与加工机器相关。 一道工序一旦开始加工,就不能中断。每台机器一次只能加工一道工序。在初始加工时刻,所有工件和机器都是可用的。 一般来说,该问题的目标是最小化Makespan,通常用L来表示,即从开始加工到所有工件加工完毕总的时长。 综上所述,柔性车间调度问题和车间调度问题相似,在此之上改变了一个条件:对JSP,每道工序只能在某个特定的机器上加工;对FJSP,工序可能有多个可加工的机器(且不同机器上加工时间不同)。 所以,FJSP不光要选择工序在机器上加工的顺序,还要选择在哪个机器上加工。这也意味着FJSP是比JSP更复杂的优化问题。 根据小编这段时间的研究

超详细的遗传算法(Genetic Algorithm)解析

天大地大妈咪最大 提交于 2020-04-28 04:32:27
https://blog.csdn.net/u010451580/article/details/51178225 https://www.jianshu.com/p/c82f09adee8f https://my.oschina.net/u/1412321/blog/192454 00 目录 遗传算法定义 生物学术语 问题导入 大体实现 具体细节 代码实现 01 什么是遗传算法? 1.1 遗传算法的科学定义 遗传算法(Genetic Algorithm, GA)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。 其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索空间,自适应地调整搜索方向。 遗传算法以一种群体中的所有个体为对象,并利用随机化技术指导对一个被编码的参数空间进行高效搜索。其中,选择、交叉和变异构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的核心内容。 1.2 遗传算法的执行过程(参照百度百科) 遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene