24
实验鼠竞赛:遗传算法练习
这是每两周挑战#3。主题:遗传算法 这个挑战有点实验。我们想看看我们可以用遗传算法做些什么。并非所有内容都是最佳的,但我们尽了最大努力使其变得可访问。如果能够解决问题,谁会知道我们将来会看到什么。也许是希尔的遗传之王? 规格很长!我们已尝试将规范分为基础知识-开始使用框架并提交答案所需的最低知识-和Gory Details-完整规范,以及有关控制器的所有详细信息,可以自己写。 如果您有任何疑问,请随时加入我们的聊天室! 您是行为心理学的研究者。今天是星期五晚上,您和您的同事决定找点乐子,并用您的实验用老鼠参加小老鼠赛跑。实际上,在我们对它们过于迷恋之前,我们称它们为标本。 您已经为标本设置了一个小小的赛道,并且为了使其更加有趣,您在赛道上放置了一些墙壁,陷阱和传送器。现在,您的标本仍然是老鼠……他们不知道什么是陷阱或传送器。他们所看到的只是一些颜色不同的东西。他们也没有任何记忆力-他们所能做的就是根据当前环境做出决定。我猜自然选择会从那些不知道如何避免陷阱的标本中挑选出来(这场比赛将需要一段时间...)。让游戏开始!† †84,465个样本在进行挑战时受到了伤害。 基础 这是一款单人游戏(您和您的同事不想混合人口,因此每个人都建立自己的赛车场)。赛道是一个矩形网格,高15格,宽50格。您从左边缘(其中x = 0)上随机(不一定不同)的15个样本开始。您的标本应尝试达到x≥49和0≤y≤14的任何单元的目标(标本可能会超出右侧的轨道)。每次发生这种情况,您都会得到一点。您也以1点开始游戏。您应该尝试在10,000转后最大化积分。 多个标本可能占据同一个细胞,并且不会相互作用。 在每个转弯处,每个标本都看到一个5x5的周围网格(自身位于中心)。该网格的每个单元包含一个颜色-1来15。-1表示超出范围的单元格。如果标本超出范围,则标本会死亡。至于其他颜色,它们代表空的单元,陷阱,墙壁和传送器。但是您的标本不知道哪种颜色代表什么,您也不知道。但是有一些限制: 8种颜色代表空单元格。 4种颜色代表一个传送器。传送器会将标本发送到其9x9邻域内的某个单元中。对于所有相同颜色的传送器,此偏移量将相同。 2种颜色代表墙壁。进入墙壁等同于静止不动。 2种颜色代表陷阱。甲陷阱表明一个的9个单元在其近邻的是致死的(不一定是陷阱细胞本身)。对于所有相同颜色的陷阱,此偏移量将相同。 现在,关于自然选择……每个标本都有一个基因组,即一个具有100位的数字。通过杂交两个现有的标本,然后稍微突变基因组,可以创建新的标本。标本越成功,复制的机会就越大。 因此,这是您的任务:您将编写一个函数,该函数接收标本所见颜色的5x5网格及其基因组作为输入。您的函数将返回样本的移动(Δx,Δy),其中Δx和Δy分别为之一{-1, 0, 1}。您不得在函数调用之间保留任何数据。这包括使用您自己的随机数生成器。您的函数将提供带种子的RNG,您可以随意使用它。 您提交的分数将是50条随机轨道上的点数的几何平均值。我们发现该分数存在一定差异。因此,这些分数将是初步的。一旦挑战消失,将宣布截止日期。在截止日期结束时,将随机选择100个委员会,所有提交的意见将在这100个委员会中重新评分。请随意在您的答案中加上预估的分数,但我们会为每份提交的作品评分,以确保没有人作弊。 我们提供了几种语言的控制器程序。目前,您可以使用Python(2或3),Ruby,C ++,C#或Java编写提交内容。控制器生成棋盘,运行游戏并为遗传算法提供框架。您所要做的就是提供移动功能。 等一下,那么我该如何处理基因组呢? 挑战在于弄清楚! 由于标本没有记忆,因此您在给定回合中所拥有的只是5x5的颜色网格,对您没有任何意义。因此,您必须使用基因组来达到目标。通常的想法是,您使用基因组的一部分来存储有关颜色或网格布局的信息,而您的机器人则根据存储在基因组中的其他信息来做出决定。 现在,您当然不能实际在此处手动存储任何内容。因此,在那里存储的实际信息最初将是完全随机的。但是遗传算法将很快选择那些基因组包含正确信息的标本,同时杀死那些信息错误的标本。您的目标是找到从基因组位和视野到移动的映射,这使您可以快速找到目标的路径,并且始终如一地发展为制胜法宝。 这应该是足够的信息,可以帮助您入门。如果需要,可以跳过下一部分,并从底部的控制器列表中选择您要选择的控制器(还包含有关如何使用该特定控制器的信息)。 继续阅读... 血腥细节 该规范已完成。所有控制器都必须执行这些规则。 除非另有说明,否则所有随机性均使用均匀分布。 轨道生成: 轨道是一个矩形网格,X = 53单元宽,Y = 15单元高。与细胞X≥49是目标细胞(其中,X是从零开始)。 每个单元格只有一种颜色,并且可能是致命的,也可能不是致命的 -除非由以下一种单元格类型指定,否则这些单元格不是致命的。 有16种不同的单元格颜色,从标记0为15,其含义将因游戏而异。另外,-1表示超出范围的细胞-这些是致命的。 选择8种随机颜色。这些将是空单元格(无效)。 再选择4种随机颜色。这些是传送器。对于其中两种颜色,请在9x9邻域中选择一个非零偏移量(从(-4,-4)到(4,4),除了(0,0)以外)。对于其他两种颜色,请反转这些偏移量。如果样本踩在传送器上,它将立即移动该偏移量。 再选择2种随机颜色。这些是陷阱。对于每种颜色,在3x3邻域中选择一个偏移量(从(-1,-1)到(1,1))。陷阱表示该偏移量处的单元格是致命的。注意:陷阱单元本身不一定具有致命性。 剩下的2种颜色是墙壁,阻碍运动。尝试移动到墙单元上将使移动变得静止。壁细胞本身具有致命性。 对于网格的每个非目标单元,选择一种随机颜色。为每个目标单元选择一个随机的空色。 对于轨道左边缘的每个像元,确定是否可以在100转内达到目标(根据下面的转弯顺序规则)。如果是这样,则此单元格是允许的起始单元格。如果起始单元少于10个,则丢弃轨道并生成一个新轨道。 创建15个样本,每个样本具有随机的基因组,年龄为0。将每个标本放在随机的起始细胞上。 …