基于强化学习的走迷宫案例,利用Blender可视化

本文介绍如何利用Q-Learning算法和Blender进行走迷宫的强化学习案例。通过Blender创建迷宫模型,使用其API进行物体创建、移动和插帧,实现实时观察机器人学习过程。在遇到Blender内置Python库不全和无法在界面中查看运行情况的问题时,作者提供了解决方案。
摘要由CSDN通过智能技术生成

一些链接

Github地址:https://github.com/yuhhhhh/Maze_blender

莫烦强化学习:https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/

Blender官方api:https://docs.blender.org/api/2.90/info_quickstart.html

问题介绍

走迷宫是一个很简单的游戏,在一些简单的场景我们可以很轻松的找到终点,对于复杂的场景,花的时间可能会长一点,最近开始学习强化学习,走迷宫是强化学习入门的一个简单案例,本次尝试利用强化学习来训练一个机器人找到走迷宫的最短路径,强化学习部分的代码主要来自于莫烦的走迷宫案例,当然关于q-learning也是在莫烦的网站上学习的。初衷是为了验证blender是否可以进行仿真,也就是我们强化学习的过程是否可以在blender上实时观察到,在网上可以搜到的利用blender仿真的案例相当少,虽然官网给了丰富的api,这也许和blender在国内本来就不火有关,查阅了相关接口确实可以在blender中建立一个迷宫模型,接下来就开始吧,Let’s go!

Q-Learning

走迷宫用到的是Q-Learning算法,关于Q-Learning的讲解网上有相当多的资料可以查询,本文主要说一下我自己的见解,大家参考就行,机器人在每一个状态可以选择4个动作,即up,down,left,right四个动作,假如我们在状态s1,采取动作a1,这样机器人的状态就会发生变化,变为s2。而根据采取的动作a1不同,下一个状态s2就是不一样的,在迷宫中,状态主要对应着机器人的坐标,而在每一个坐标主要有3种状态,即:撞到墙壁,走到终点,正常行走三种状态,每一种状态我们设定一个reward,即奖励值,因为Q-Learning主要通过不断更新来得到最优的q值表,也就是我们在状态s1时选取动作不是完全随机的,会根据q值表选择q值最大的动作,即利益最大化。每个动作执行后我们更新q值表,这样不断反复的更新,q值表就能实现最优,设定的奖励值不是固定的,可以根据具体效果进行更改,比如我选择的奖励值如下:

状态 奖励值
撞到墙壁 -10
走到终点 50
正常行走 -0.1

接下来说说设置奖励值的思路,走到终点肯定是我们首要考虑的,所以它应该是一个正的奖励值,且这个值应该很大,因为由于q-learning的特性,我们到终点的这一段路对应状态的q值都会相应增大,撞到墙壁肯定是我们不希望的所以设定为负的,正常行走为什么也设置为负的,因为我们的目的是最短的路径,走的步数多了自然是我们不想看到的。

Blender库API

本次主要使用的blender的创建物体、移动物体、插帧的api。

首先我们导入blender的库

import bpy

创建迷宫

在blender中创建一个迷宫,可以先想好大体的迷宫路线,根据自己想好的迷宫图,转换为对应的矩阵,本文使用的迷宫矩阵

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值