【深度强化学习】神经网络、爬山法优化控制倒立摆问题实战(附源码)

简介: 【深度强化学习】神经网络、爬山法优化控制倒立摆问题实战(附源码)

需要源码请点赞关注收藏后评论区留言私信~~~

直接优化策略

直接优化策略强化学习算法中,根据采用的是确定性策略还是随机性策略,又分为确定性策略搜索和随机性策略搜索两类。随机性策略搜索算法有策略梯度法和TRPO等,确定性策略搜索算法有DDPG等。

策略可以看作是从状态空间S到动作空间A的映射:S→A

直接优化策略的方法可采用与值函数逼近相似的思路,即先确定逼近策略的结构,再优化结构的参数。

下面分别用神经元和神经网络作为逼近策略的结构,来控制倒立摆实验中小车的运动,分别通过爬山法和梯度下降法来优化他们的系数

启发式算法直接优化策略控制倒立摆

用随机的连接系数和阈值的神经元来参数化策略

结果如下

爬山法优化神经元的连接系数和阈值

爬山法的思路是在当前位置试探周边,并一直向最好的方向前进,但是容易陷入局部最优点

用神经网络来参数化策略

该神经网络只有一个隐层,该隐层的神经元个数为10,采用ReLU激活函数,输出层采用Sigmoid激活函数

训练结果如下

虽然效果较好,实际上这种从大量尝试得到的轨迹中筛选出少量优质样本的做法,在现实应用中并不容易实现

部分代码如下

delta = 0.01 # 爬山法中试探的步长
top_rewards = 0
top_paras = None
for _ in range(100): # 多次爬山,选取最好的结果
    score = 0
    paras = np.random.rand(5)  # 随机产生神经元的连接系数和阈值
    most_rewards = rewards_by_paras(env, paras)
    for i in range(200):
        best_paras = paras
        cur_rewards = most_rewards
        rewards = rewards_by_paras(env, paras + [ delta, 0, 0, 0, 0 ])
        if rewards > most_rewards:
            most_rewards = rewards
            best_paras = paras + [ delta, 0, 0, 0, 0 ]
        rewards = rewards_by_paras(env, paras + [ -delta, 0, 0, 0, 0 ])
        if rewards > most_rewards:
            most_rewards = rewards
            best_paras = paras + [ -delta, 0, 0, 0, 0 ]
        rewards = rewards_by_paras(env, paras + [ 0, delta, 0, 0, 0 ])
        if rewards > most_rewards:
            most_rewards = rewards
            best_paras = paras + [ 0, delta, 0, 0, 0 ]
        rewards = rewards_by_paras(env, paras + [ 0, -delta, 0, 0, 0 ])
        if rewards > most_rewards:
            most_rewards = rewards
            best_paras = paras + [ 0, -delta, 0, 0, 0 ]
        rewards = rewards_by_paras(env, paras + [ 0, 0, delta, 0, 0 ])
        if rewards > most_rewards:
            most_rewards = rewards
            best_paras = paras + [ 0, 0, delta, 0, 0 ]
        rewards = rewards_by_paras(env, paras + [ 0, 0, -delta, 0, 0 ])
        if rewards > most_rewards:
            most_rewards = rewards
            best_paras = paras + [ 0, 0, -delta, 0, 0 ]
        rewards = rewards_by_paras(env, paras + [ 0, 0, 0, delta, 0 ])
        if rewards > most_rewards:
            most_rewards = rewards
            best_paras = paras + [ 0, 0, 0, delta, 0 ]
        rewards = rewards_by_paras(env, paras + [ 0, 0, 0, -delta, 0 ])
        if rewards > most_rewards:
            most_rewards = rewards
            best_paras = paras + [ 0, 0, 0, -delta, 0 ]
        rewards = rewards_by_paras(env, paras + [ 0, 0, 0, 0, delta ])
        if rewards > most_rewards:
            most_rewards = rewards
            best_paras = paras + [ 0, 0, 0, 0, delta ]
        rewards = rewards_by_paras(env, paras + [ 0, 0, 0, 0, -delta ])
        if rewards > most_rewards:
            most_rewards = rewards
            best_paras = paras + [ 0, 0, 0, 0, -delta ]
        if (cur_rewards == most_rewards) or (most_rewards >= 200): # 到了山顶,或者已经达到要求
            break
        else:
            paras = best_paras
    #print(most_rewards, paras)
    if most_rewards > top_rewards:
        top_rewards = most_rewards
        top_paras = paras
print(top_rewards, top_paras)

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
4天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
116 80
|
12天前
|
机器学习/深度学习 算法 PyTorch
基于图神经网络的大语言模型检索增强生成框架研究:面向知识图谱推理的优化与扩展
本文探讨了图神经网络(GNN)与大型语言模型(LLM)结合在知识图谱问答中的应用。研究首先基于G-Retriever构建了探索性模型,然后深入分析了GNN-RAG架构,通过敏感性研究和架构改进,显著提升了模型的推理能力和答案质量。实验结果表明,改进后的模型在多个评估指标上取得了显著提升,特别是在精确率和召回率方面。最后,文章提出了反思机制和教师网络的概念,进一步增强了模型的推理能力。
39 4
基于图神经网络的大语言模型检索增强生成框架研究:面向知识图谱推理的优化与扩展
|
10天前
|
域名解析 缓存 网络协议
优化Lua-cURL:减少网络请求延迟的实用方法
优化Lua-cURL:减少网络请求延迟的实用方法
|
9天前
|
数据采集 监控 安全
公司网络监控软件:Zig 语言底层优化保障系统高性能运行
在数字化时代,Zig 语言凭借出色的底层控制能力和高性能特性,为公司网络监控软件的优化提供了有力支持。从数据采集、连接管理到数据分析,Zig 语言确保系统高效稳定运行,精准处理海量网络数据,保障企业信息安全与业务连续性。
32 4
|
24天前
|
存储 安全 网络安全
网络安全的盾与剑:漏洞防御与加密技术的实战应用
在数字化浪潮中,网络安全成为保护信息资产的重中之重。本文将深入探讨网络安全的两个关键领域——安全漏洞的防御策略和加密技术的应用,通过具体案例分析常见的安全威胁,并提供实用的防护措施。同时,我们将展示如何利用Python编程语言实现简单的加密算法,增强读者的安全意识和技术能力。文章旨在为非专业读者提供一扇了解网络安全复杂世界的窗口,以及为专业人士提供可立即投入使用的技术参考。
|
27天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
67 7
|
26天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-GRU网络的数据分类识别算法matlab仿真
本项目展示了使用MATLAB2022a实现的贝叶斯优化、CNN和GRU算法优化效果。优化前后对比显著,完整代码附带中文注释及操作视频。贝叶斯优化适用于黑盒函数,CNN用于时间序列特征提取,GRU改进了RNN的长序列处理能力。
|
1月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
58 8
|
15天前
|
Go 数据安全/隐私保护 UED
优化Go语言中的网络连接:设置代理超时参数
优化Go语言中的网络连接:设置代理超时参数
|
1月前
|
负载均衡 网络协议 算法
OSPF 中的负载均衡:优化网络流量分布
OSPF 中的负载均衡:优化网络流量分布
56 0

热门文章

最新文章