前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用于人工代码生成的AI研究环境(元编程)

用于人工代码生成的AI研究环境(元编程)

作者头像
代码医生工作室
发布2019-06-21 17:38:44
4630
发布2019-06-21 17:38:44
举报
文章被收录于专栏:相约机器人相约机器人

https://github.com/gsurma/meta_intelligence

关于

鉴于一种深奥的,简约的,虽然图灵完整的编程语言Brainfuck,目标是人工生成执行特定任务的程序。

Brainfuck只有8个指令,使得它很容易为计算机阅读(检查python解释器brainfuck_interpreter.py),但另一方面,很难理解人类,因此这个名称。

">" Increment the pointer.

"<" Decrement the pointer.

"+" Increment the byte at the pointer.

"-" Decrement the byte at the pointer.

"." Output the byte at the pointer.

"[" Jump forward past the matching ] if the byte at the pointer is zero.

"]"] Jump backward to the matching [ unless the byte at the pointer is zero.

"," Input a byte and store it in the byte at the pointer.

遗传进化

目标是生成一个输出给定目标字符串的brainfuck程序。目标字符串'HI'的示例用法:

代码语言:javascript
复制
python3 genetic_evolution_meta_programmer.py 'HI'
  1. 将从一群随机染色体开始,其中每条染色体都是一个脑卒中程序,表示为一串随机指令。例如染色体:[->+]+.-><>+。请记住,绝大多数随机生成的程序在语法上都是不正确的,因此需要在添加到填充之前使用解释器对它们进行验证。
  2. 然后将进入选择阶段,将选择表现最佳的节目。程序使用适应度函数进行评估,该函数使用以下函数计算每个字符的分数:fitness_score += ASCII_CHARS_COUNT-abs(input_score-target_score)这基本上是计算ASCII表上从给定字符到所需字符的距离。越接近目标角色。分数越大,越接近目标,ASCII_CHARS_COUNT每个角色最多。每条染色体的最大适合度得分计算为len(self.target)*ASCII_CHARS_COUNT。
  3. 接下来,将配置染色体与轮盘选择并执行交叉。
  4. 最后要进行突变。一些突变后的程序是无效的,所以我将用随机有效程序替换它们以保持总体大小不变。
  5. 将重复步骤1-3,直到找到目标字符串。

超参数

POPULATION = 100

MUTATION_RATE = 0.115

MAX_MUTATION_ATTEMPTS = 500

SELECTION_RATE = 0.9

PROGRAM_LENGTH_LOWER_BOUND = 10

PROGRAM_LENGTH_UPPER_BOUND = 100

结果

代码语言:javascript
复制
FOUND SOLUTION: +++++++++++++++++++++++++++++++++. for: '!' in: 5 minutes
代码语言:javascript
复制
FOUND SOLUTION: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+. for: 'HI'  in: 27 minutes
代码语言:javascript
复制
FOUND SOLUTION: +++++-+++[>+++++++<-]>-+.+.+. for: '123' in: 20 minutes
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 相约机器人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档