Skip to main content

:)

Project description

基于神经网络和遗传算法的游戏AI框架,可以用于多种游戏(大概)

示例: https://github.com/Iyrian/GameAI-Frame-

依赖: numpy, tkinter

Python版本: Python 3.6

  1. 内容说明

    GameRole.py : 声明了运用该AI框架的游戏所必须提供的数据和重载的函数

    Matrix.py, NeuroNetwork.py, Population.py : 神经网络 + 遗传算法的实现。如果不是要改进算法,可以不用管它们

    global_vars.py : 提供了神经网络和遗传算法的参数,将算法绑定到特定游戏时要适当修改这些参数

  2. 如何将AI框架绑定到特定游戏

    示例中展示了如何将贪吃蛇游戏绑定到框架

    当然绑定不一定要知道游戏内部数据,只要有方法在GameRole.look()中获得神经网络的输入就可

    1. 设定GameRole.look()的几种方法
      1. 动作类游戏

        及从游戏画面获取信息,操作游戏角色做动作的游戏,gameai_frame也是基于这种游戏构建的。对于这种游戏,可以用角色的视野作为神经网络的输入。比如对于贪吃蛇来言,可以用从蛇头射出的八方向的射线扫描游戏场景,获得蛇的视野数组。而神经网络的输出,可以传到一个或者几个分类器(比如if…else…)从而获得游戏角色操作的输入

        神经网络输入的元素顺序以及对输出值的处理是随意的,因为神经网络会被训练,最终总能得到适应的结果

        GameRole.calculate_fitness()计算当前个体的适应度,是决定神经网络训练效果效率的重要因素。绑定游戏时,一定要选择适当的适应性函数。在选择适应性函数时,将希望出现的游戏角色表现设定较大的适应性,比如对于贪吃蛇来言,适应性与蛇吃到的食物数正相关;对于PyMario来言,适应性与Mario的得分以及Mario向右移动的距离正相关。当然,除此之外,适应性还需要一些次要因素修饰,比如个体存活时间之类

      2. 棋牌策略类游戏

        这类游戏的规则比动作类复杂,很多时候,出于对全局的考虑,同样的情况下出牌可能不同。这时,神经网络的输入就不能只有从游戏场景获取的信息,还要增加自身的状态。神经网络输出还是由分类器转换为游戏操作输入

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for gameai-frame, version 0.1.5
Filename, size File type Python version Upload date Hashes
Filename, size gameai_frame-0.1.5.tar.gz (7.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page