组合29个简单Python代码块,自动发现新算法

您所在的位置:网站首页 python分块矩阵 组合29个简单Python代码块,自动发现新算法

组合29个简单Python代码块,自动发现新算法

#组合29个简单Python代码块,自动发现新算法| 来源: 网络整理| 查看: 265

英特尔的研究人员提出一种新的自动算法生成器(AAD),利用演化算法框架,以Python语言的基本子集作为语法架构,能够对29个数组/向量问题的代码块进行组合,通过学习,自动生成更复杂问题的解决方案。

本文介绍一种自动算法发现器(AAD),这是一种用于合成高复杂度计算程序的演化算法框架。此前的演化算法依赖于客观的适应函数,这在给算法设计上增加了难度。

本文提出的AAD采用问题式引导演化过程(PGE),这需要将一组问题一起引入,针对更简单问题发现解决方案,用于解决同一组问题中的更复杂的问题。PGE还支持几种新的进化策略,并自然地应用于高性能计算(HPC)技术。

AAD可以为29个数组/向量问题生成Python代码,范围从min,max,reverse到更具挑战性的问题,如排序和矩阵向量乘法。此外,AAD显示出对受限环境/受限输入的强适应性,以及针对“开箱即用”的问题的解决能力。

AAD是将相对简单的问题解决组件自动组合程序,可以实现搜索由这些组件的所有可能排列所组成的整个空间,然后寻找满足给定要求的解决方案。目前已经提出了许多这样的搜索策略(例如枚举,基于演绎,约束求解,随机)来应对这类挑战。

使用AAD的分类算法代码块示例

本文提出了一种基于演化算法的搜索策略,将其AAD中实现。AAD可以基于Python的子集作为语法结构,组合成复杂度相对较高的程序(循环,嵌套块,嵌套函数调用等),并生成可执行的Python代码。在本文中使用AAD来发现数组/向量问题的算法解决方案。

总的来说,AAD实现了以下目标:

使用问题导向型的演化策略来消除算法中的目标函数。

使用多样化的演化策略(多环境解决方案,异花授粉和联合演化),并通过广泛的实验评估其有效性。

利用AAD解决通用Python语言中的29个数组/向量问题,表明演化算法能够解决复杂的新问题。

支持循环模块,可以发现任何(非零)输入的算法。

AAD结构设计方案和原理

AAD主要架构示意图,主要由问题生成器、解决方案生成器和检测器组成

问题生成器(ProbGen)

我们想要解决的每个问题都从问题生成器开始。这部分负责:(1)指定输入和输出的数量和类型。(2)为给定的问题生成输入。例如,对于最大查找(Max),问题生成器指定Max将一个数组作为输入,并生成一个数字作为输出。另外,当请求为大小为N的问题生成输入时,会产生一个由N个数字组成的输入数组。

检测器(Checker)

检测器负责接受/拒绝为给定问题生成解决方案。检测器使用问题生成器生成的输入执行生成的程序,并生成输出。检测器中包含接受/拒绝输出的逻辑。因此,检测器与给定的问题生成器对应,两者齐头并进。

检测器不一定真正需要实现其想要发现的算法。比如,针对“排序问题”的检测器不必对真的对输入数组进行排序,而是可以比较输出数组中的每两个相邻元素,并查看这两个元素是否按预期顺序排列。一旦检测到未排序数据对,检测器会做出“失败”的声明。如果每对相邻元素都是有序的,并且输出数组中包含的元素与输入数组完全相同,则检测器宣布可接受该解决方案。

解决方案生成器(SolGen)

SolGen主要由两部分组成:(1)表达式/短语存储,以及(2)演化器。

表达式/短语存储器(ExpStore)

解决方案生成器使用语法构造源程序。AAD使用的Python语法子集存储在ExpStore中,如表1所示。在AAD中,语法规则使用类型信息进行扩充。

AAD支持四种数据类型:数字(NUM),布尔数(BOOL),数组(ARR)和数组的数组(AoA),它们可以对矩阵进行建模。此外,表达式的每个操作数都标记为Consumer(只读),Producer(只写)或ProdCon(读-修改-写)。

演化器(Evolver)

演化器负责对表达式和短语进行组合,以生成程序(或函数),以解决问题生成器提出的问题。演化器分三个阶段构建解决函数(SolFunc)。

阶段1:构建解决函数

阶段2:在“生产者”(只写数据)和“消费者”(只读数据)间建立联系

阶段3:操作和函数调用突变

检查输出

一旦解决函数构建出来,就会执行这个函数,使用Python的exec()函数生成输出结果。检测器负责检查输出,判定接受或拒绝输出。如果第一个输出被接受,则使用问题生成器生成的更多不同大小的、与输入测试相同的解决函数。如果检测器接受了所有测试,则该解决函数即被声明为该问题的解决方案。上述三个阶段构成了一个循序渐进的步骤。

上表所示为在问题集A中的调用者-被调用者的关系。比如SortDesc函数所在的行显示,SortAsc在57%的解决方案中调用了Max函数,在14%的解决方案中调用了Min函数,以此类推。Min,Max和ReverseArr函数没有调用任何其他函数。所有其他函数都依赖于一个或多个函数来得到解决方案,显示出函数组合的重要性。

上表中列出了3组问题以及在基线方法下的步数表现,并将其与四种演化策略下的表现进行了对比。

未来前景与应用方向

从概念上讲,AAD也可用于程序翻译。对于用C语言,汇编语言甚至二进制语言编写的程序,可以执行该实例作为AAD的检测器来生成Python(或类似语言)代码。这种方式与仅通过观察另一个对象行为,来构建自身行为方式的机器学习算法类似。很明显,本文中使用的Python代码可以被视为“Python到Python”的翻译,因为不同的检测器对应了不同的Python实现。

AAD可能不仅仅是一个程序合成器。它还可以用来获取机器的内在知识。通过调用-被调用关系图和父子图捕捉不同问题之间的内在关系。这些关系是由AAD本身发现的,并且可以被认为是不同操作之间的联想记忆的一种表示,其形式与人类大脑构造和机制类似。

由于AAD可以通过引入越来越多的问题来增加知识储备的扩展,通过适当的指导机制,就可以引导系统获取大量技能(算法),并自己构建知识表示。就像我们在自己孩子还小时,向TA们提出许多问题和挑战,目的是为了引导孩子们获得大量技能和知识。

AAD是用于综合高复杂度程序的演化框架,它以Python语言的基本子集作为语法架构。使用AAD能够对29个数组/向量问题的代码块进行组合,其中既有最大值、最小值,矩阵翻转这类简单问题,也有更具挑战性的问题,如排序和矩阵向量乘法等,对于输入没有大小限制。

我们评估了解决这些问题策略的有效性,并证明了AAD具备解决“开箱即用”问题的能力。为了应对复杂需求带来的各种挑战,AAD工具还能实现与高性能计算(HPC)技术的结合。总的来说,与现有技术相比,采用PGE的演化算法能够解决类似或更高复杂性的问题。

原文标题:英特尔“演化算法”新框架:29个Python代码块,自动生成新算法

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

扫一扫,分享给好友

复制链接分享 评论

发布评论请先 登录

相关推荐

一类新算法研究智能飞行器航迹规划问题 摘要: 智能飞行器航迹规划问题是一个大范围多目标多约束的三维规划问题,这类问题可以归属于路径规划问题.... 发表于 03-12 11:24 • 4次 阅读 一类新算法研究智能飞行器航迹规划问题 pip 的超全使用指南 1. 查询软件包查询当前环境安装的所有软件包 [code]$ pip list[/code]查询 pypi 上含有某名字的包 [code]$ pip search pkg[/co... 发表于 03-11 16:03 • 3659次 阅读 一文了解pip的超全使用指南 由于默认情况下,wheel 包的平台是运行 pip download 命令 的平台,所以可能出现平台.... 的头像 python爬虫知识分享 发表于 03-11 16:03 • 157次 阅读 python常规包与命名空间包 python常规包与命名空间包1. 常规包在 Python 3.3 之前或者说 Python 2 中,一个包想要被导入使用,那么该包内必须要有 __init... 发表于 03-11 15:46 • 2058次 阅读 详解python常规包与命名空间包 python常规包与命名空间包 1. 常规包 在 Python 3.3 之前或者说 Python 2.... 的头像 python爬虫知识分享 发表于 03-11 15:46 • 177次 阅读 python花式导包的八种方法 python花式导包的八种方法1. 直接 import人尽皆知的方法,直接导入即可 [code]>>> import os >>> os.getcwd() '/home/xxx'[/c... 发表于 03-10 16:51 • 756次 阅读 python花式导包的八种方法 python花式导包的八种方法 1. 直接 import 人尽皆知的方法,直接导入即可 import.... 的头像 python爬虫知识分享 发表于 03-10 16:48 • 161次 阅读 python安装第三方包的八种方法 python安装第三方包的八种方法1. 使用 easy_installeasy_install 这应该是最古老的包安装方式了,目前基本没有人使用了。下面是 ... 发表于 03-10 16:29 • 1027次 阅读 python安装第三方包的八种方法 python安装第三方包的八种方法 1. 使用 easy_install easy_install .... 的头像 python爬虫知识分享 发表于 03-10 16:27 • 134次 阅读 Cu杂质对Si(110)湿法蚀刻的影响 我们在蚀刻的硅(110)表面上实验观察到的梯形小丘的形成,描述它们的一般几何形状并分析关键表面位置的.... 发表于 03-10 16:15 • 2次 阅读 Cu杂质对Si(110)湿法蚀刻的影响 利用野外光谱开展重金属Pb含量反演的研究 近年来,土壤重金属污染已经成为一个严重的环境问题,尤其是在城市快速扩张、工业迅速发展的国家和地区,研.... 发表于 03-10 15:02 • 6次 阅读 利用野外光谱开展重金属Pb含量反演的研究 今天咱们用Python整一个超级玛丽游戏 | 附带源码 开发环境Python版本:3.7.8相关模块:requests模块;tqdm模块;pyfreeproxy模块;pyecharts模块;以及一些python自带的模块。... 发表于 03-10 14:26 • 734次 阅读 今天咱们用Python整一个超级玛丽游戏 | 附带源码 一种基于生成对抗网络的无人机图像去雾算法 摘要: 无人机所采集的图像容易受到雾霾、雾气等阴霾天气干扰,造成图像质量下降。针对阴霾天气下无人机采.... 发表于 03-10 10:30 • 396次 阅读 如何在RK3288上安装Opencv? 如何在RK3288上安装Opencv? 发表于 03-10 06:49 • 159次 阅读 RV1109优势和特点是什么?有哪些应用? RV1109优势和特点是什么?有哪些应用? 发表于 03-10 06:45 • 170次 阅读 如何才能在RV1109平台上编写基于USB Camera的demo程序? 如何才能在RV1109平台上编写基于USB Camera的demo程序?... 发表于 03-10 06:15 • 77次 阅读 什么是python包、模块和库? 1. 模块以 .py 为后缀的文件,我们称之为 模块,英文名 Module。 模块让你能够有逻辑地组织你的 Python 代码段,把相关的代码... 发表于 03-09 16:48 • 457次 阅读 python包、模块和库是什么 1. 模块 以 .py 为后缀的文件,我们称之为 模块,英文名 Module。 模块让你能够有逻辑地.... 的头像 python爬虫知识分享 发表于 03-09 16:47 • 193次 阅读 python类的多态和类的property属性 python类的多态多态,是指在同一类型下的不同形态。 比如下面这段代码 [code]class People:     def speak(self):... 发表于 03-09 16:38 • 742次 阅读 python类的多态和类的property属性 python类的多态 多态,是指在同一类型下的不同形态。 比如下面这段代码 class People.... 的头像 python爬虫知识分享 发表于 03-09 16:37 • 164次 阅读 用Python学习科学编程 用Python学习科学编程,Python经典教材。 发表于 03-09 15:00 • 24次 阅读 python类的继承详解 python类的继承 类的继承,跟人类繁衍的关系相似。 被继承的类称为基类(也叫做父类),继承而得的.... 的头像 python爬虫知识分享 发表于 03-08 16:40 • 329次 阅读 python私有变量和私有方法 python私有变量和私有方法 1. 下划线妙用 在 Python 中,下划线可是非常推荐使用的符号.... 的头像 python爬虫知识分享 发表于 03-08 16:30 • 382次 阅读 python静态方法与类方法 python静态方法与类方法 1. 写法上的差异 类的方法可以分为: 静态方法:有 staticme.... 的头像 python爬虫知识分享 发表于 03-07 16:56 • 402次 阅读 python类的理解与使用 python类的理解与使用 1. 通俗理解类 类(英文名 class),是具有相同特性(属性)和行为.... 的头像 python爬虫知识分享 发表于 03-07 16:51 • 384次 阅读 python如何捕获异常和主动抛出异常 python如何主动抛出异常和捕获异常 1. 如何抛出异常? 异常的产生有两种来源: 一种是程序自动.... 的头像 python爬虫知识分享 发表于 03-04 17:09 • 656次 阅读 Python中有哪些常见的错误和异常 python常见异常类型 在程序运行过程中,总会遇到各种各样的问题和错误。 有些错误是我们编写代码时.... 的头像 python爬虫知识分享 发表于 03-04 16:58 • 661次 阅读 基于改进遗传算法的无人机搜索路径规划的研究 无人机搜索路径规划就是为执行搜索任务的无人机规划搜索路径,以能够尽早地发现被搜索的目标。无人机搜索路.... 发表于 03-04 15:52 • 467次 阅读 算力新基建迎蓝海,多元发展成关键 近日,国家发改委、中央网信办、工信部、国家能源局四部委联合发布复函,同意京津冀、长三角、粤港澳大湾区.... 的头像 中科曙光 发表于 03-04 13:44 • 315次 阅读 python变量的作用域 python变量的作用域 1. 作用域 Python的作用域可以分为四种: L (Local) 局部.... 的头像 python爬虫知识分享 发表于 03-03 16:50 • 400次 阅读 python偏函数和泛型函数详解 python偏函数 假如一个函数定义了多个位置参数,那你每次调用时,都需要把这些个参数一个一个地传递.... 的头像 python爬虫知识分享 发表于 03-03 16:43 • 411次 阅读 python高阶函数详解 python高阶函数 1. map 函数 map 函数,它接收两个参数,第一个参数是一个函数对象(当.... 的头像 python爬虫知识分享 发表于 03-02 16:47 • 175次 阅读 python高阶函数详解 python匿名函数的使用 python匿名函数的使用 匿名函数(英语:anonymous function)是指一类无需定义标.... 的头像 python爬虫知识分享 发表于 03-02 16:42 • 168次 阅读 11个案例讲解python函数参数 函数,在定义的时候,可以有参数的,也可以没有参数。 的头像 python爬虫知识分享 发表于 03-01 16:39 • 237次 阅读 详解python普通函数创建与调用 函数是一种仅在调用时运行的代码块。您可以将数据(称为参数)传递到函数中,然后由函数可以把数据作为结果.... 的头像 python爬虫知识分享 发表于 03-01 16:32 • 230次 阅读 python推导式是什么 python推导式 推导式(英文名:comprehensions),也叫解析式,是Python的一种.... 的头像 python爬虫知识分享 发表于 02-28 17:13 • 191次 阅读 python while循环详解 python while循环 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处.... 的头像 python爬虫知识分享 发表于 02-28 16:39 • 171次 阅读 基于时空相关属性模型的公交到站时间预测算法 摘 要:公交车辆到站时间的预测是公交调度辅助决策系统的重要依据,可帮助调度员及时发现晚点车辆,并做出.... 发表于 02-28 10:59 • 12次 阅读 《深入Python3》中文版pdf 《深入Python3》中文版pdf 发表于 02-28 09:45 • 34次 阅读 智行者提出全新基于ivox激光雷达算法 近日,智行者高翔博士带领的定位团队撰写的论文《Faster-LIO: Lightweight Tig.... 的头像 智行者科技 发表于 02-25 18:17 • 489次 阅读 智行者提出全新基于ivox激光雷达算法 《Dive Into Python》中文翻译版.pdf 《Dive Into Python》中文翻译版.pdf 发表于 02-25 17:22 • 27次 阅读 python for循环的案例说明 python for循环 for 循环可以遍历任何序列的项目,如一个列表或者一个字符串。 它的基本语.... 的头像 python爬虫知识分享 发表于 02-25 16:27 • 213次 阅读 python判断语句的详细说明 python判断语句:if 1. 简单小例子 如果满足条件 A,则执行代码块 a,否则执行代码块 b.... 的头像 python爬虫知识分享 发表于 02-25 16:22 • 221次 阅读 人类的AI调校计划:像个淑女,或者硬汉 “头像是我,不满意?”如果男性机器人或AI智能体,开始跟你说爹言爹语,你是什么感觉? “你再说我会脸.... 的头像 脑极体 发表于 02-25 09:02 • 877次 阅读 python生成器是什么 python生成器 1. 什么是生成器? 生成器(英文名 Generator ),是一个可以像迭代器.... 的头像 python爬虫知识分享 发表于 02-24 15:53 • 231次 阅读 python迭代器详解 python迭代器 1. 可迭代对象 可以利用 for 循环的对象,都叫可迭代对象。 列表、元组、字.... 的头像 python爬虫知识分享 发表于 02-24 15:42 • 201次 阅读 面向数据特征的内存跳表优化技术 摘 要:跳表作为数据库中被广泛采用的索引技术,优点在于可以达到类似折半查找的复杂度O(log(n)).... 的头像 li1234567890123 发表于 02-24 10:02 • 207次 阅读 初学者学Python必看的几个练手小项目 Python是一种面向对象的解释型编程语言,源代码与解释器CPython遵守GPL协议,Python.... 的头像 叶枫架构师 发表于 02-23 17:06 • 289次 阅读 4个Python经典项目实战,练手必备! Python是一种极具可读性和通用性的编程语言。Python这个名字的灵感来自于英国喜剧团体Mont.... 的头像 叶枫架构师 发表于 02-23 17:06 • 271次 阅读 python集合是什么 python集合 集合(英文名 set),它是一个无序的不重复元素序列。 这里面有两个重点: 无序,.... 的头像 python爬虫知识分享 发表于 02-23 17:01 • 258次 阅读 python字典是什么 python字典 字典(英文名 dict),它是由一系列的键值(key-value)对组合而成的数据.... 的头像 python爬虫知识分享 发表于 02-23 16:54 • 235次 阅读 python元组的详细介绍 python元组 元组(英文名 tuple),和列表非常的相似,它也是由一系列元素按顺序进行排列而成.... 的头像 python爬虫知识分享 发表于 02-22 15:19 • 157次 阅读 python列表的详细介绍 python列表 列表(英文名 list),是由一系列元素按顺序进行排列而成的容器。 这里面有两个重.... 的头像 python爬虫知识分享 发表于 02-22 15:14 • 157次 阅读 python cookbook(第三版)免费下载 python cookbook(第三版)免费下载。 发表于 02-22 13:57 • 47次 阅读 python运算符是什么 python运算符 0. 什么是运算符? 本章节主要说明Python的运算符。举个简单的例子 4 +.... 的头像 python爬虫知识分享 发表于 02-21 16:44 • 203次 阅读 python字符串格式化 python字符串格式化 格式化输出,主要有三种方式 使用 % 进行格式化 使用 format 函数.... 的头像 python爬虫知识分享 发表于 02-21 16:28 • 178次 阅读 python字符串格式化 python输入与输出详解 python输入与输出 无论是从我们一开始的“hello world”,还是前面章节的里各种例子,基.... 的头像 python爬虫知识分享 发表于 02-21 16:18 • 224次 阅读 python布尔值是什么 python布尔值 1. 什么是布尔值 但在Python语言中,布尔类型只有两个值 True :表示.... 的头像 python爬虫知识分享 发表于 02-21 16:10 • 190次 阅读 瑞为技术为企业高质量发展保驾护航 厦门市人大常委会党组书记、主任杨国豪带队走访看望在厦企业家代表—瑞为技术创始人、董事长詹东晖,致以亲.... 的头像 瑞为技术Reconova 发表于 02-19 13:17 • 395次 阅读


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3