基于A2C与超启发式的航天器星载自主任务规划算法-笔记

news2024/11/15 17:41:41


1. Actor-Critic 模块

  • 主要文件AC.py, PolicyNet.py, ValueNet.py
  • 作用:该模块实现了 A2C(Advantage Actor-Critic)强化学习算法。其中,ActorCritic 类是核心,它同时管理策略网络(Actor)和价值网络(Critic)。
  • 逻辑
    • 策略网络(PolicyNet) 负责根据当前状态预测采取不同动作的概率。
    • 价值网络(ValueNet) 负责评估当前状态的价值,帮助强化学习决策。
    • AC.py 文件负责整合这两个网络,通过与环境交互不断更新策略和价值网络。
  • 核心功能
    • take_action 方法:根据当前状态选择最优动作。
    • update 方法:基于获得的经验(状态、动作、奖励等)来更新 Actor 和 Critic 的参数。
  • 输出:模型的动作选择以及不断优化的策略和价值评估。

2. 环境交互模块(env 文件夹)

  • 主要文件step.py
  • 作用:定义强化学习环境的 step 函数,环境与算法通过该函数进行交互。
  • 逻辑
    • 根据动作选择优化算法(PSO、GWO、SCA 等),并根据算法的结果更新环境状态。
    • 每次迭代都会计算奖励,并更新状态。
    • done 标志 表示任务是否完成,通常在达到特定条件时标记任务完成。
  • 核心功能
    • 动作对应不同的优化算法,每个动作都会触发相应的算法执行并返回新的状态、奖励等信息。
    • 奖励的计算基于适应度函数,优化解的适应度越好,奖励越高。

3. 优化算法模块(Algorithm 文件夹)

  • 主要文件PSO.py, GWO.py, SCA.py, FA.py, TSA.py, WDO.py
  • 作用:实现不同的启发式优化算法,这些算法被 A2C 算法选择作为动作的一部分,用于优化问题的解。
  • 逻辑
    • 各种优化算法模拟不同的自然现象或生物行为,如粒子群、灰狼、风驱动等,帮助在解空间中寻找最优解。
    • 每个优化算法都通过特定的规则调整群体个体的位置或参数,以逼近全局最优解。
  • 核心功能
    • 通过各自算法(如 PSO 的粒子位置更新,GWO 的狼群追猎等)来不断优化解,找到适应度最高的解。
    • 最终返回优化后的最优解和适应度。

4. 训练模块(train.py)

  • 作用:训练整个模型,结合 A2C 强化学习和优化算法,持续迭代以找到最优解。
  • 逻辑
    • 初始化时使用多个优化算法生成初始解,通过并行运行这些算法来加速训练过程。
    • A2C 算法通过策略网络选择动作(即使用哪种优化算法),然后通过 step 函数执行动作。
    • 每次迭代更新策略网络和价值网络的参数,并记录训练过程中的奖励和适应度值。
  • 核心功能
    • 多进程并行优化算法,提升计算效率。
    • 通过 SummaryWriter 记录日志,便于后续的可视化分析。

5. 工具类模块(utils 文件夹)

  • 主要文件massCalculation.py, move.py, calculate_total_distance.py, 等
  • 作用:存放各种辅助工具函数,如个体位置更新、距离计算、数据处理等。
  • 逻辑
    • 工具类函数被算法和主逻辑调用,提供底层支持。
    • 例如:calculate_total_distance.py 计算旅行商问题(TSP)中的路径总距离,move.py 更新个体的位置和速度。
  • 核心功能
    • 提供优化算法的基础计算工具,如距离计算、位置更新等。

6. 测试模块(test 文件夹)

  • 主要文件test1.py, test2ac.py, study.py
  • 作用:测试不同算法的性能,并结合 A2C 算法进行验证。
  • 逻辑
    • 通过调用不同优化算法解决旅行商问题(TSP)等优化问题,评估算法的性能。
    • 结合 A2C 算法的测试,评估强化学习与优化算法的结合效果。
  • 核心功能
    • 输出测试结果,如最优路径、适应度值,并可视化结果。

7. 日志与模型存储模块(log 和 runs 文件夹)

  • 作用:存储训练过程中的日志、模型参数、训练检查点等。
  • 逻辑
    • log 文件夹 记录了训练过程中的损失值、适应度值等信息,帮助监控模型训练效果。
    • runs 文件夹 存储模型检查点,允许训练中断后恢复模型,也用于 TensorBoard 可视化。


  • 1、初始阶段

    • 当模型初始开始训练时,策略网络还没有经验,它可能会根据初始化的策略随机选择某个动作(即选择某个优化算法)执行。例如,可能随机选择 PSO 或 GWO。
  • 2、执行动作(优化算法)

    • 一旦策略网络选择了某个优化算法作为动作,系统就会执行该算法。这时,优化算法会在解空间中寻找解并返回其适应度值。
    • 比如,如果选择了 PSO,则会调用 PSO.py 中的粒子群算法来优化问题。
  • 3、环境反馈

    • 每次执行一个优化算法后,系统会通过 环境交互模块(step.py) 得到当前状态的反馈,也就是通过适应度函数获得一个奖励值,并返回更新后的状态。
  • 4、策略更新

    • 策略网络(Actor) 根据每次选择动作的反馈信息(奖励和状态),不断学习和调整自己的参数,逐渐倾向于选择带来更高奖励的动作。
    • 同时,价值网络(Critic) 也会通过评估当前状态的价值,帮助策略网络更好地做出决策。
  • 5、迭代训练

    • 随着训练的不断进行,策略网络会越来越倾向于选择那些带来高奖励的优化算法。这并不是执行所有算法后再对比选择,而是通过逐步学习策略,越来越准确地预测哪个动作(优化算法)最适合当前状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2138227.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

misc合集(1)

[Week3] 这是一个压缩包 有密码,提示QmFzZUNURj8/Pz8/P0ZUQ2VzYUI base64解密是BaseCTF??????FTCesaB 猜测这应该是⼀个轴对称的密码 python ⽣成了密码字典,再通过 ARCHPR 进⾏字典爆破 lowercase abcdefghijklmnopqrstuvwxyz uppercase l…

Vue生命周期;Vue路由配置;vue网络请求;vue跨域处理

一&#xff0c;Vue生命周期 <template><div > <h1 click"changeText">{{ info }}</h1></div> </template><script> export default {name: HelloWorld,data(){return{info:"介绍组件生命周期"}},methods:{chang…

Android源码导入Android Studio

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 前言 需要先把 Android 源码编译一遍 然后执行下面指令就可以导入android源码了 关于 Android 源码编译可以参考这篇文章【LineageOS源码下载和编译&#xf…

GitLab CI_CD 从入门到实战笔记

第1章 认识GitLab CI/CD 1.3 GitLab CI/CD的几个基本概念 GitLab CI/CD由以下两部分构成。 &#xff08;1&#xff09;运行流水线的环境。它是由GitLab Runner提供的&#xff0c;这是一个由GitLab开发的开源软件包&#xff0c;要搭建GitLab CI/CD就必须安装它&#xff0c;因…

搜索二叉树BSTree的原理及实现

目录 一、简介 二、功能的实现 节点的实现 这里为什么模板参数采用的是K而不是T呢&#xff1f; 树体的实现 非递归版本 Insert函数 Find函数 Erase函数 递归版本 中序遍历 FindR InsertR EraseR 构造函数 析构函数 拷贝构造 赋值重载 一、简介 BSTree&#x…

Python 数学建模——Prophet 时间序列预测

文章目录 前言原理使用方法&#xff08;初级&#xff09;代码实例Prophet 高级应用add_seasonality 添加自定义周期性add_regressor 添加外生变量交叉检验 前言 Prophet 是 Facebook 团队开发的一个时间序列分析工具&#xff0c;相比传统的 ARMA 时间序列分析&#xff0c;能够综…

nodejs 007:错误npm error Error: EPERM: operation not permitted, symlink

完整错误信息 npm error Error: EPERM: operation not permitted, symlink npm warn cleanup Failed to remove some directories [ npm warn cleanup [ npm warn cleanup C:\\Users\\kingchuxing\\Documents\\IPFS\\orbit-db-set-master\\node_modules\\ipfs-cli, npm…

岭回归:带示例的分步介绍

由 AI 生成&#xff1a;DNA、基因组、摘要、岭回归 一、说明 岭回归是一种在独立变量高度相关的情况下估计多元回归模型系数的方法。 [ 1 ]它已用于计量经济学、化学和工程学等许多领域。[ 2 ]也称为Tikhonov 正则化&#xff0c;以Andrey Tikhonov命名&#xff0c;是一种解决不…

Lombok:Java开发者的代码简化神器【后端 17】

Lombok&#xff1a;Java开发者的代码简化神器 在Java开发中&#xff0c;我们经常需要编写大量的样板代码&#xff0c;如getter、setter、equals、hashCode、toString等方法。这些代码虽然基础且必要&#xff0c;但往往占据了大量开发时间&#xff0c;且容易在属性变更时引发错误…

【Linux取经之路】编译器gcc/g++的使用 调试器gdb的使用

目录 背景知识 编译器gcc/g的安装 编译器gcc/g的使用 调试器gdb的使用 cgdb 条件断点 背景知识 子曰&#xff1a;“温故而知新”。在谈gcc/g的使用之前&#xff0c;我们先来复习编译的4个阶段&#xff0c;也算是为下面的内容做一些铺垫&#xff0c;请看思维导图。 编译…

动态规划算法:05.路径问题_不同路径_C++

题目链接&#xff1a;LCR 098. 不同路径 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/2AoeFn/description/ 一、题目解析 题目&#xff1a; 解析&#xff1a; 由题我们可知&#xff0c;在一个网格中&#xff0c;机器人需要从左上角出发&#xff0c;…

热点数据更新优化

热点数据更新优化 热点数据更新带来的问题问题的方向判断用户线程被打挂据库cpu被打挂&#xff08;优先考虑&#xff0c;80%可能性&#xff09;redis被打挂 临时解决方案解决方案流量控制热点隔离数据分批次提交数据合并后更新重写MySQL的执行层 热点数据更新带来的问题 问题的…

ERP进销存管理系统的业务全流程 Axure高保真原型源文件分享

这是一套ERP进销存管理系统的业务全流程Axure高保真原型设计文档。 原型预览地址&#xff1a;https://ppndif.axshare.com 产品意义&#xff1a; 提高工作效率&#xff1a; 电子记账替代手工记账&#xff0c;减少工作负担和人为错误。 实时查看库存情况&#xff0c;减少盘点时…

嵌入式AI---如何用C++实现YOLO的NMS(非极大值抑制)算法

文章目录 前言一、为什么需要NMS算法&#xff1f;二、什么是NMS算法&#xff1f;三、如何使用C编写一个NMS算法1、预测框定义2、滤除无效框 总结 前言 YOLO系列的目标检测算法在边缘部署方面展现出了强大的性能和广泛的应用潜力。大部分业务场景是利用PyTorch在服务器端完成检…

细说STM32单片机通用定时器使用输出比较功能生成PWM波的方法

目录 一、本实例测试的目的 二、硬件和CubeMX项目配置 1、硬件开发板 2、项目配置 &#xff08;1&#xff09;定时器TIM2_CH1 &#xff08;2&#xff09;时钟和Debug 三、使用比较功能生成PWM 1、启动定时器 2、TIM2_CH1通道GPIO初始化 3、下载与测试 一、本实例测试…

一,掌心里的智慧:我的 TinyML 学习之旅

从云端到掌心&#xff1a;TinyML 的故事 想象一下&#xff0c;有一天你起床&#xff0c;伸手去关闭窗边的小闹钟&#xff0c;却发现这个小家伙已经提前预判到你的醒来时间——因为它能够“听到”你昨晚的呼吸变化&#xff0c;分析出你什么时候会醒。这个场景可能听起来像科幻小…

OrionX vGPU 研发测试场景下最佳实践之Jupyter模式

在上周的文章中&#xff0c;我们讲述了OrionX vGPU研发测试场景下最佳实践之SSH模式&#xff0c;今天&#xff0c;让我们走进 Jupyter模式下的最佳实践。 • Jupyter模式&#xff1a;Jupyter是最近几年算法人员使用比较多的一种工具&#xff0c;很多企业已经将其改造集成开发工…

[C++] 剖析多态的原理及实现

文章目录 多态的概念及定义编译时多态&#xff08;静态多态&#xff09;运行时多态&#xff08;动态多态&#xff09;动态多态的原理示例&#xff1a;运行时多态 两种多态的区别 多态的实现基本条件虚函数虚函数的重写与覆盖虚函数重写的其他问题协变析构函数的重写 C11 中的 o…

【数据结构】8——图3,十字链表,邻接多重表

数据结构8——图3&#xff0c;十字链表&#xff0c;邻接多重表 文章目录 数据结构8——图3&#xff0c;十字链表&#xff0c;邻接多重表前言一、十字链表结构例子 复杂例子 二、邻接多重表&#xff08;Adjacency Multilist&#xff09;例子 前言 除了之前的邻接矩阵和邻接表 …

Kubernetes部署及示例

目录 一、实验环境 二、部署 1、添加解析 2、安装docker&#xff0c;确保登录成功 3、所有禁用swap和本地解析 4、 安装K8S部署工具 5、集群初始化 6、安装flannel网络插件 7、节点扩容 三、kubernetes 中的资源 1、资源管理介绍 2、资源管理方式 &#xff08;…