Tag: 人工智能

什么是最好的战列舰AI?

战舰! 早在2003年(当时我17岁),我参加了一个战舰AI编码竞赛。 即使我输了那场比赛,我也有很多乐趣,并从中学到很多东西。 现在,我想重振这场比赛,寻找最好的战舰AI。 这里是框架,现在托pipe在Bitbucket上 。 获胜者将被授予+450的声望! 比赛将于2009年11月17日开始 。 17日之后不得迟于零时间进行或修改。 (中部标准时间)尽早提交你的参赛作品,所以你不要错过机会! 为了保持这一目标 ,请遵循比赛的精神。 游戏规则: 游戏将在10×10格子上播放。 每个参赛者将把5艘(长度为2,3,4,5)的船舶分别放在电网上。 没有船可能重叠,但它们可能相邻。 然后竞争对手轮stream向对手单枪匹马发射。 游戏的变化允许每发射一发射出多发,每发射一发。 如果投篮下沉,命中或失误,对手将通知参赛者。 当任何一个玩家的所有船只都沉没时,游戏结束。 比赛规则: 比赛的精神是find最好的战列舰algorithm。 任何违反比赛精神的行为都将成为取消资格的理由。 干扰对手是违背比赛精神的。 multithreading可以在以下限制下使用: 没有超过一个线程可能正在运行,而不是轮到你。 (虽然,任何数量的线程可能处于“暂停”状态)。 没有线程可以以“正常”以外的优先级运行。 鉴于上述两个限制,在您轮到时您将至less保证3个专用CPU内核。 每个游戏CPU时间的限制1秒被分配给主线程上的每个参赛者。 时间不够会导致目前的游戏失败。 任何未处理的exception都将导致当前游戏的丢失。 networking访问和磁盘访问是允许的,但您可能会发现时间限制相当严重。 但是,增加了一些设置和拆卸方法来减轻时间压力。 代码应该作为一个答案张贴在堆栈溢出,或者如果太大,链接。 条目的最大总大小(未压缩)为1 MB。 .Net 2.0 / 3.5是唯一的框架要求。 您的条目必须实现IBattleshipOpponent接口。 评分: 101场比赛中最好的51场比赛是胜者。 所有的竞争者都会玩互相配对的循环赛模式。 最好的一半的竞争对手将发挥双淘汰赛,以确定赢家。 (实际上大于或等于一半的两个最小的幂)。 我将使用锦标赛的TournamentApi框架。 结果将张贴在这里。 如果您提交了多个条目,则只有您得分最高的条目符合双重条件。 祝你好运! 玩的开心! 编辑1: 感谢Freed […]

如何识别这个图像中的矩形?

我有一个水平和垂直线的图像。 事实上,这个形象是BBC网站转换成横向和纵向的线条。 我的问题是,我想能够find图像中的所有矩形。 我想编写一个计算机程序来查找所有的矩形。 有谁知道如何做到这一点或build议如何开始的想法? 这个任务对我来说很容易find视觉矩形,但我不知道如何将其描述为一个程序。 图片是BBC网站http://www.bbc.co.uk/ 谢谢,菲利普 更新到这里,我写了将BBC网站图片转换成水平和垂直线的代码,问题是这些线条在angular落处并不完全相遇,有时它们并不完全形成矩形。 谢谢!

计算机是否可以通过用户提供的示例“学习”正则expression式?

计算机是否可以通过用户提供的示例“学习”正则expression式? 澄清: 我不想学习正则expression式。 我想创build一个程序,从用户交互提供的例子中“学习”一个正则expression式,也许从文本中select部分或select开始或结束标记。 可能吗? 是否有algorithm,关键字等我可以谷歌? 编辑 :谢谢你的答案,但我对提供此function的工具不感兴趣。 我正在寻找理论信息,如论文,教程,源代码,algorithm名称,所以我可以为自己创造一些东西。

Dijkstraalgorithm和A-Star如何比较?

我正在研究马里奥人工智能竞赛中的人,他们中的一些人使用A *(A-Star)Pathingalgorithm构build了一些漂亮的马里奥机器人。 替代文字http://julian.togelius.com/mariocompetition2009/screen1.png ( 马里奥A *机器人的video在行动 ) 我的问题是,A-Star与Dijkstra相比如何? 看着他们,他们看起来很相似。 为什么有人会用另一个呢? 特别是在游戏中的path?

如何使用斯坦福分析器将文本分成几个句子?

如何使用斯坦福分析器将文本或段落分解成句子? 有什么方法可以提取句子,如为Ruby提供的getSentencesFromString() ?

什么algorithm可以用来确定AI的“最佳举动”?

在一个井字游戏的实现中,我猜测挑战性的部分是确定机器玩的最佳动作。 什么是可以追求的algorithm? 我正在考虑从简单到复杂的实现。 我怎么去解决这个问题的这个部分呢?

将方向存储到一个数组 – 并进行比较

我想要实现以下内容: 我希望用户能够使用陀螺仪“logging”iPhone的移动。 此后,用户应该能够复制相同的动作。 我使用以下方法提取音高,滚动和偏航: [self.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler: ^(CMDeviceMotion *motion, NSError *error) { CMAttitude *attitude = motion.attitude; NSLog(@"pitch: %f, roll: %f, yaw: %f]", attitude.pitch, attitude.roll, attitude.yaw); }]; 我想我可以将这些值存储到一个数组,如果用户在logging模式。 而当用户试图复制那个动作时,我可以将复制的动作数组与所logging的动作数组进行比较。 问题是,我怎样才能巧妙地比较两个数组? 他们将永远不会有完全相同的价值观,但他们可以有点相同。 我是否在正确的轨道上? 更新:我认为,也许阿利斯使用DTW的答案可能是我在这里的正确方法。 但是我不是那么聪明(显然),所以如果任何人能够帮助我比较arrays的第一步,我会是一个快乐的人! 谢谢!

在neural network中,训练,validation和testing集之间有什么区别?

我正在使用这个库来实现一个学习代理。 我已经生成了培训案例,但我不确定validation和testing集是什么。 老师说: 70%应该是培训案例,10%将是testing案例,其余20%应该是validation案例。 编辑 我有这个训练的代码,但我不知道何时停止训练。 def train(self, train, validation, N=0.3, M=0.1): # N: learning rate # M: momentum factor accuracy = list() while(True): error = 0.0 for p in train: input, target = p self.update(input) error = error + self.backPropagate(target, N, M) print "validation" total = 0 for p in validation: input, target = […]

什么是2048年游戏的最佳algorithm?

我最近偶然发现了2048年的比赛。 通过在四个方向中的任何一个方向移动它们来合并类似的瓷砖,以制作“更大”的瓷砖。 在每次移动之后,随机出现一个新的图块,其值为2或4 。 当所有的方块都被填满并且没有可以合并方块的移动时,游戏就会终止,或者你创build一个值为2048的方块。 一,我需要遵循一个明确的策略来实现目标。 所以,我想为它写一个程序。 我目前的algorithm: while (!game_over) { for each possible move: count_no_of_merges_for_2-tiles and 4-tiles choose the move with a large number of merges } 我所做的是在任何时候,我会尝试将瓦片与值2和4合并,即尽可能最小化2和4瓦片。 如果我以这种方式尝试,所有其他瓷砖自动合并,战略似乎不错。 但是,当我实际使用这个algorithm时,在游戏结束之前我只能得到4000点左右。 AFAIK的最大分数略高于20,000分,比我现在的分数还要大。 有没有比上述更好的algorithm?

偏差在neural network中的作用

我意识到梯度下降和反向传播定理。 我没有得到的是:什么时候使用一个重要的偏见,你如何使用它? 例如,当映射AND函数时,当我使用2个input和1个输出时,它不会给出正确的权重,但是当我使用3个input(其中1个是偏差)时,它给出了正确的权重。