AI 玩2048

本文介绍了作者利用AI实现2048游戏的智能玩法,采用期望最大化策略,计算机在格子中随机放置数字并评估局面效用。效用评估函数考虑了数值权重、相邻格子差异和顶部大数字的优先级。经过实验,AI在0.2秒内完成一步操作,约20-60%的概率达成2048,其余情况达到1024。作者指出,通过调整参数和提高搜索速度,AI的表现有望进一步提升。
摘要由CSDN通过智能技术生成

最近写了个AI 玩2048 的小游戏,简单记录一下过程

项目地址 : https://github.com/DylanFrank/Learn/tree/master/CSMM101AI/project/2048-game

核心代码是这一块儿 :

playerAI_3.py

其他代码都是系统给的

核心逻辑

最开始我是想 写一个alpha-beta剪枝来着,但是效果不好,后面我改了一下逻辑,变成期望最大化computer 是在任意一个格子上随机放一格, 90 % 90\% 90% 的概率是 2 2 2, 10 % 10\% 10% 的概率是 4 4 4, 然后平均一下整体的效用 (utility), 关于这个效用评估函数,后面再说。人就是尝试各种方向每步找一个期望效用最大的方向滑动就好。

    def minimize(self, grid, dep):
        # self.dep +=1
        cells = grid.getAvailableCells()

        if self.terminal_test(cells, dep):
            return self.estimateFun(grid)

        utility = 0

        for cell in cells:
            child = grid.clone()  # grid is not change

            # for val in tileVal:
            child.setCellValue(cell, tileVal[0])
            u1 = self.maximize(child, dep - 1)[1]

            child.setCellValue(cell, tileVal[1])
            u2 = self.maximize(child, dep - 1)[1]

            utility += prob * u1 + (1 - prob) * u2

        return utility / len(cells)

    def maximize(self, grid, dep):
        # self.dep +=1</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值