深入浅出强化学习编程实战(1)


主要介绍程序中的一些难点,适合拜读过程序的人来加深理解。

书本代码:

前11章的代码链接为:https://github.com/Teacher-Guo/RL_code
后2章的代码链接为:https://github.com/junxiaosong/AlphaZero_Gomoku

pygame

pygame在强化学习中主要用来构建原理模型,让学习效果能够清楚的展示在研究者面前,下面简要介绍pygame用法:
在这里插入图片描述
从pygame最小开发框架可以知道,pygame的用法主要分两大部分:
第一部分:引入相关的库(如pygame和sys),并且对你的展示模型画面做一些初始化定义。比如:我要展示的图画多大,背景啥颜色,然后我要在哪里画图片(一切你能看到的东西)。一句话总结就是你把你最原始的样子先在第一部分给老子画出来,然后我再去想办法改变,然后一次次改变后的效果就叠加成动画了。这样你也就知道了强化学习学习的动态效果了。(一次动画的改变一般对应智能体采取一次动作后的效果)
第二部分:这部分就是当你智能体做出动作的时候你你该如何根据智能体的动作进行画面的重新排布。(就是获取事件并且逐类响应),最后为了让你变化后的样子能够让人看到你就进行一次屏幕刷新。周而复始就成了动画图

部分代码解析:

    def render(self):
        if self.viewer is None:
            pygame.init()
            #画一个窗口
            self.viewer=pygame.display.set_mode(self.screen_size,0,32)
            pygame.display.set_caption("yuanyang")
            #下载图片
            self.bird_male = load_bird_male()
            self.bird_female = load_bird_female()
            self.background = load_background()
            self.obstacle = load_obstacle()
            # self.viewer.blit(self.bird_male, self.bird_male_init_position)
            #在幕布上画图片
            self.viewer.blit(self.bird_female, self.bird_female_init_position)
            # pygame.display.update()
            self.viewer.blit(self.background, (0, 0))
            # pygame.display.update()
            self.font = pygame.font.SysFont('times', 15)
        self.viewer.blit(self.background,(0,0))
        # pygame.display.update()
        #画直线
        for i in range(11):
            pygame.draw.lines(self.viewer, (255, 255, 255), True, ((120*i, 0), (120*i, 900)), 1)
            pygame.draw.lines(self.viewer, (255, 255, 255), True, ((0, 90* i), (1200, 90 * i)), 1)
        self.viewer.blit(self.bird_female, self.bird_female_init_position)
        #画障碍物
        for i in range(8):
            self.viewer.blit(self.obstacle, (self.obstacle1_x[i], self.obstacle1_y[i]))
            self.viewer.blit(self.obstacle, (self.obstacle2_x[i], self.obstacle2_y[i]))
        #画小鸟
        self.viewer.blit(self.bird_male,  self.bird_male_position)
        # 画值函数
        for i in range(10):
            for j in range(10):
                surface = self.font.render(str(round(float(self.value[i, j]), 5)), True,(0, 0, 0))
                self.viewer.blit(surface, (120 * i + 5, 90 * j + 70))
        # 画路径点
        for i in range(len(self.path)):
            rec_position = self.state_to_position(self.path[i])
            pygame.draw.rect(self.viewer, [255, 0, 0], [rec_position[0], rec_position[1], 120, 90], 3)
            surface = self.font.render(str(i), True, (255, 0, 0))
            self.viewer.blit(surface, (rec_position[0] + 5, rec_position[1] + 5))
        pygame.display.update()
        self.gameover()
        # time.sleep(1)
        self.FPSCLOCK.tick(15)


在这里插入图片描述
直接写上这玩意,谁还不初始化呢
在这里插入图片描述
碰到display,系统就会给你显示东西,你断电调试会发现出来一个size大小的黑框框。
在这里插入图片描述
又有display呀,说明他又显示东西了,仔细一看左上角出现了title字符串
在这里插入图片描述

这一系列东西就是一个图片

在这里插入图片描述
这里需要注意的是你看不到有个图像到另外一个图像上去了,因为没有display。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
ATTENTION:
你对图像帧做的改变只有运行display后才会显示

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《深入浅出强化学习编程实战》是一本以深入浅出的方式介绍强化学习编程实践的教材。强化学习是一种机器学习的方法,其通过与环境进行交互,不断试错并根据反馈进行学习,以最大化获取奖励的策略。 这本书从实际应用的角度出发,为读者提供了丰富的强化学习编程实例,并用简洁明了的语言进行讲解。书中首先对强化学习的基本概念进行了介绍,包括马尔科夫决策过程、值函数、策略梯度等核心理论。接着,作者通过具体的案例,如迷宫问题、扫地机器人等,演示了如何应用强化学习算法解决实际问题。 《深入浅出强化学习编程实战》的编写极富教学性,每个实例都配有详细的代码解释和算法原理分析,使读者能够更好地理解和掌握强化学习编程实现。同时,书中还介绍了一些在实践中常用的强化学习库和工具,如OpenAI Gym、TensorFlow等,让读者能够更加便捷地进行实验和应用。 这本书适合对强化学习感兴趣的初学者阅读,也适合已有一定编程基础的读者进行进一步的学习和实践。通过读完本书,读者可以了解到强化学习的基本概念和常用算法,并能够运用所学知识解决实际问题。 总之,《深入浅出强化学习编程实战》是一本循序渐进、实用性极高的强化学习编程实践指南,帮助读者快速入门和应用强化学习算法。无论是学术研究还是工程实践,都能够从中获得丰富的经验和知识。 ### 回答2: 《深入浅出强化学习编程实战》pdf是一本讲解强化学习编程实践的电子书籍。强化学习是一种机器学习的分支,其主要目标是让智能体通过与环境的交互,最大化累积奖励。这本书以深入浅出的方式,向读者解释了强化学习的基本原理和相关算法。 这本书首先介绍了强化学习的基本概念和背景知识,包括马尔可夫决策过程、值函数和策略等重要概念。然后,书中详细介绍了一些经典的强化学习算法,如Q-Learning和Deep Q-Networks等。通过学习这些算法,读者可以了解如何通过强化学习方法来解决实际问题。 此外,该书也提供了一些实际项目案例,帮助读者将理论知识应用到实际场景中。这些案例涵盖了不同领域,如机器人、游戏和金融等,读者可以通过这些实例了解强化学习在不同领域的应用。 为了更好地帮助读者理解和掌握强化学习编程实践,该书还提供了大量的代码示例和实验练习。读者可以通过编写代码并运行实验来巩固所学的知识,并且可以在实验中探索不同的参数和算法,以实现更好的性能。 总的来说,《深入浅出强化学习编程实战》pdf以通俗易懂的方式介绍了强化学习的基本理论和算法,并通过实际案例和实验帮助读者深入理解和运用强化学习。这本书适合对强化学习编程实践感兴趣的读者阅读,不仅可以学到理论知识,还能够通过实践提升编程和问题解决能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值