当前位置: 首页 > 知识库问答 >
问题:

使用机器学习改进益智游戏AI

司空浩邈
2023-03-14

我问这个问题的动机是,我发现了一个在图数据集上使用机器学习的有趣问题。有关于这个主题的论文。例如,“从有向图上的标记和未标记数据中学习”(周,黄,斯科普夫)。然而,我没有人工智能或机器学习的背景,所以在从事任何科学工作之前,我想为更普通的观众写一个更小的程序。

几年前,我写了一款名为Solumns的游戏。它是经典世嘉游戏《柱子》的邪恶变体。受巴斯特的启发,它暴力地选择对玩家不利的颜色组合。这很难。

我想改进它的人工智能。我认为游戏空间(彩色方块、列位置、列颜色的网格)更适合图形结构,而不是属性列表。如果是这样的话,那么这个问题和我的研究问题差不多。

我正在考虑使用以下高层计划来解决这个问题:

    < li >我在想,如果人工智能对手可以根据比移动后棋盘上现有方格数量更多的数据来为可能的移动分配适合度评级,这将是有用的。我在考虑用分类器。训练移动和所有过去的移动,使用游戏剩余部分的过程作为成功的衡量标准。 < li >我还在考虑开发一个可以击败标准人工智能对手的玩家机器人。这在为1生成数据时会很有用。 < li >使用玩家机器人的游戏样本来构建击败战略玩家的AI。也许把这个数据也用于1。 < li >编写一个有趣的人工智能,在适当的时候,它可以代表1、3和原始人工智能的可能组合,我将使用实验来确定这些组合,以找到启发式的蒙混因素。

为了构建播放器机器人,我想我可以使用蛮力来计算样本空间。然后使用机器学习技术,例如用于构建随机森林的技术来创建某种决策者。

打造AI对手是我最困惑的地方。

具体问题如下:

    < li >对棋步进行评级听起来像是人们对国际象棋所做的事情,虽然我承认我的方法可能是无知的,但文献中有很多关于这方面的内容,我可以从中学习。问题是,玩家机器人和AI对手应该创建数据样本吗?听起来好像我在不同的样本集之间感到困惑,这听起来像是糟糕的训练的处方。我应该一直玩游戏吗? < li >针对当前的人工智能,我应该考虑用什么样的算法来训练玩家机器人? < li >在训练人工智能对手对抗玩家机器人时,我应该考虑哪种算法?

额外信息:

  • 我故意不问这种策略是否适合编写游戏AI。当然,你也许可以更简单地编写一个伟大的AI(毕竟它已经很难玩了)。我想通过做一些有趣的事情来学习机器学习
  • 最初的游戏是用球拍和C混合编写的。出于各种原因,我将其移植到 jruby,可能是扩展或 RPC 调用另一种更快的语言。我对这里现有的特定于语言的解决方案不太感兴趣。我想发展这方面的技能,并且不怕为自己实现算法。

你可以在这里找到原始游戏的来源

共有1个答案

仇龙光
2023-03-14

我不会在这里进行机器学习。看看玩游戏的AI。

你有两个不对称的对手游戏(如围棋):

  • 放置碎片的用户,
  • 和选择棋子的计算机(而不是偶然选择棋子)。

我可能会从蒙特卡罗树搜索开始。

 类似资料:
  • 球门 我对机器学习相当陌生,经过一些在线教育后,这是我的第一个真正的项目。这是一个叫做Ouril的游戏,在这个游戏中,你和你的对手各有六个“房子”,里面有四块起始石头。你轮流玩一个房子和分配它的石头,这可能会让你获得对手的石头。你赢得了25块石头。 该项目的目标是拥有一个经过训练的函数,可以在给定当前游戏状态的情况下预测一个动作的好坏,以便机器人可以选择最好的预测动作并进行游戏。 安装程序 我构建

  • 我正在为跳棋电脑游戏做最后一年的机器学习项目。 在这个游戏中,我自动化了一个玩家(随机移动),我希望第二个玩家学习随机性,并通过更多的游戏和试验变得聪明。 正如我所说,第一个玩家是自动化的,所以它工作得很好,但是说到第二个玩家,我对它的动作有些问题。 我正在使用目标函数作为 > v(b)=w0 w1x1 w2x2 w3x3 w4x4 w5x5 w6x6 其中x1=白色碎片数量x2=黑色碎片数量x3

  • 二本鼠鼠学Java没出路。。 技术面 - 50min - 9.26 自我介绍 介绍一下你的项目经历 MySQL索引底层结构 Redis有哪些数据结构 Redis的持久化机制 学过其他语言吗(c++和go),说一下c++、go、Java的区别 LRU怎么实现 最短路径算法实现 JVM垃圾回收算法 手撕在一排数据中算出不重复数据的子集 TCP三次握手 你知道什么是SYN攻击吗 TCP四次挥手为什么是四

  • 不知道为啥在****上投了一万个数据分析岗没回应,结果多益的hr直接找上来问我对游戏玩的多不多,对游戏策划感不感兴趣,莫名其妙的就投了简历,填完了测评(看别人都说有些都乱填,就我兢兢业业填了快一千多个字?),明天笔试不知道考啥 多益很缺策划?鼠鼠就一破打游戏的能面游戏策划吗? 8.5一面(面试官的麦经常会听不清,反问了好几次,然后回答问题的时候眼睛不由自主往左下瞄,我也不知道为啥,下次屏幕中间贴个

  • 1.transformer结构 2.不用专业知识和数学知识解释CNN 3.如何把图片分割成目标数目不确定的多个子图 4.在UI特别复杂的游戏场景中,如何在数据进入RL之前把游戏场景中的agent信息提取出来 一面过 周四二面

  • 从sklearn加载流行数字数据集。数据集模块,并将其分配给可变数字。 分割数字。将数据分为两组,分别命名为X_train和X_test。还有,分割数字。目标分为两组Y_训练和Y_测试。 提示:使用sklearn中的训练测试分割方法。模型选择;将随机_状态设置为30;并进行分层抽样。使用默认参数,从X_序列集和Y_序列标签构建SVM分类器。将模型命名为svm_clf。 在测试数据集上评估模型的准确