基于Q-Learning算法的机器人路径规划

本文介绍了如何使用Q-Learning算法进行机器人路径规划。作者提供了MATLAB和Python的简化代码示例,便于初学者理解和实践。通过创建随机迷宫并训练Q值表,实现了从初始状态到目标状态的导航,遇到障碍物时会受到负奖励。
摘要由CSDN通过智能技术生成

最近一直在研究强化学习中的Q学习算法,鉴于网上的代码对于新手来说太过于复杂,我在MATLAB以及Python下都写了相对容易的代码,以便于新手理解与学习。

python代码:

'''
1,环境:先从简单的6x6的方格环境做起,起始位置为右下角,终止位置为右上角,
其中选中两处为障碍物,其余的位置为平地,环境的选择为坐标系(0,0)->(5,5).
2,选择的动作为‘上下左右’,步长为单位一.
3,策略:Q-Learning算法.
'''
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

'''变量初始化'''
################################################################################################
gamma = 0.8#衰减率
learning_rate = 0.1#学习效率
actions = 4#四个动作选择方式
epsilon = 0.9#explora = 0.1
x_matrix = [ 0 , 0 , -1 , 1 ]#对应上下左右
y_matrix = [ 1 , -1 , 0 , 0 ]
ac_matrix = [ -5 , 5 , -1 , 1 ]#就可以换号了

'''建立一个零矩阵,环境矩阵,其中有障碍物'''
################################################################################################
maze =np.zeros(25)
maze[7]=1
maze[16]=1
#print(maze)
'''这三个表的应用规律相同'''
ac_rol = [0,1,2,3]
#定义Q值表
q_table = pd.DataFrame(np.zeros(100).reshape(25,4),index=np.arange(25),columns=ac_rol)
##print(q_table)
r_step = []
'''#Q值表边界条件的设定'''
q_t_r = 0
while q_t_r < 5:
    q_table.loc[q_t_r,0] = float('-inf')
    q_t_r += 1
q_t_r = 0
while q_t_r < 5:
    q_table.loc[5*q_t_r,2] = float('-inf')
    q_t_r += 1
q_t_r = 0
while q_t_r < 5:
    q_table.loc[5*(q_t_r)+4,3] = float('-inf')
    q_t_r += 1
q_t_r = 0
while q_t_r <5:
    q_table.loc[20+q_t_r,1] = float('-inf')
    q_t_r += 1
#print(q_table.loc[2,3])
#q_table.iloc[2,3] = 2#更改矩阵中的某个数值
##print(q_table)
trace = []#机器人的轨迹
'''开始进行打的循环迭代'''
###############################################################################################
for episode in range(1000):
    #在这之前要拥有一个大循环,需要遍历1000次
    x = 4
    y = 0
    initial_s = 24
    terminal_s = 0
    s = initial_s
    step = 1
    while s != 0:
        if np.random.uniform() < epsilon:  # 输出0-1的随机数
            # choose best action
            state_action 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值