当前位置: 首页 > news >正文

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


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、迭代训练

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

相关文章:

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

1. Actor-Critic 模块 主要文件:AC.py, PolicyNet.py, ValueNet.py作用:该模块实现了 A2C(Advantage Actor-Critic)强化学习算法。其中,ActorCritic 类是核心,它同时管理策略网络(Actor&#x…...

[机器学习]决策树

1 决策树简介 2 信息熵 3 ID3决策树 3.1 决策树构建流程 3.2 决策树案例 4 C4.5决策树 5 CART决策树(分类&回归) 6 泰坦尼克号生存预测案例 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.tree import …...

CentOS7更换阿里云yum更新源

目前CentOS内置的更新安装源经常报错无法更新,或者速度不够理想,这个时候更换国内的镜像源就是一个不错的选择。 备份内置更新源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载阿里云repo源(需要系统…...

算法参数对拥塞控制的影响

来看看参数对公平收敛的影响。仅假象一下就知道应该是个加权公平,但事实如何,还是要具体看一下。 首先看 aimd,标准的 reno 算法是每 round 之后 cwnd 加 1,但如果有些流加 1,有些流加 2,会如何&#xff1…...

Go websocket

Go 中的 gorilla/websocket 是一个常用且高效的 WebSocket 实现库,可以帮助你轻松地在 Web 应用中实现实时通信。学习 gorilla/websocket 的基本用法包括建立 WebSocket 连接、发送和接收消息、处理错误、以及在实际场景中的使用。以下是关于 gorilla/websocket 的学…...

C# 委托与事件 观察者模式

委托与事件是一种观察者模式。 什么是委托与事件 在c#中,委托类似于代理,也跟其它语言的函数指针、回调函数等相似,但委托是类型安全和可靠的。声明自定义委托时,加上delegate关键字,委托定义类似于接口。 事件是特殊…...

K8S - 用service account 登陆kubectl

刚安装好k8s时 我就可以用kubectl 在master server里管理k8s的资源。 这时我们是感觉不到 k8s的用户和权限管理存在的, 但是其实用户的配置都在kubeclt 的配置文件中 /etc/kubernetes/admin.conf 中 我们可以用下命令来查看当前正在用的帐号 rootk8s-master:~/.d…...

Redis 持久化机制详解

引言 Redis 是一款基于内存的高性能键值存储系统,为了在数据丢失时能快速恢复,Redis 提供了多种持久化机制。这些持久化机制可以将内存中的数据存储到磁盘上,确保即使系统重启或宕机后也能恢复数据。Redis 支持两种主要的持久化方式&#xf…...

小阿轩yx-案例:Zabbix监控kubernetes云原生环境

小阿轩yx-案例:Zabbix监控kubernetes云原生环境 前言 传统监控的本质 就是收集、分析和使用信息来观察一段时间内监控对象的运行进度,并且进行相应的决策管理的过程,监控侧重于观察特定指标。 随着云原生时代的到来 我们对监控的功能提出…...

量化交易的个人见解

程序化交易在国内兴起有些年数了,个人以为,程序化交易与量化投资的关系,在于两者侧重点有差别。程序化交易侧重于下单的动作是机器自动执行的,量化投资则侧重于投资分析的过程是通过一个量化模型来实现的,所以量化投资…...

Java集合(一)

目录 Java集合(一) 集合介绍 单列集合分类 Collection接口 创建Collection实现类对象 常用方法 迭代器 基本使用 迭代器的执行过程 迭代器底层原理 集合中的并发修改异常及原因分析 List接口 ArrayList类 介绍 常用方法 遍历集合 Array…...

车载软件架构 --- SOA设计与应用(下)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...

网络原理 IP协议与以太网协议

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 目录 1.网络层 IP协议 1.IP协议格式 2.地址管理 2.1 IP地址 2.2 解决IP地址不够用的问题 2.3NAT网络地址转换 2.4网段划分 3.路由选择…...

k8s的安装

k8s的安装 1.创建主机,设置ip,hostname,关闭firewalld,selinux,NetworkManager 编号主机名称ip1k8s-master192.168.118.662k8s-node01192.168.118.773k8s-node02192.168.118.88 2.设置主机之间的ssh免密 [rootk8s-master ~]# ssh-keygen [rootk8s-ma…...

Qt中样式表常用的属性名称定义

Qt中,用好样式表,不但可以做出意想不到的酷炫效果,有时候也能减轻开发量,可能由于你不了解某些样式使用,想破脑袋通过代码实现的效果,反倒不如别人用样式,一两句样式脚本就搞定。 Qt中&#xff…...

React源码学习(一):如何学习React源码

本系列源码学习,是基于 v16.13.1,v17.x与v16.x区别并不太大! 一、如何正确的学习React源码? 找到Github,转到React仓库,fork / clone源码:React 查看Readme,在Documentation中有Cont…...

云计算服务的底层,虚拟化技术的实现原理

虚拟化技术: 一、 从cpu说起, intel和amd等cpu制造商 为了提高其cpu对 虚拟化程序的运算速度, 给cpu硬件里面 增加了指令集 VMLAUNCH, VMRESUME, VMEXIT, VMXOFF 这些指令集称为硬件辅助虚拟化技术的指令集。 ---------------------…...

大数据Flink(一百一十六):Flink SQL的时间属性

文章目录 Flink SQL的时间属性 一、Flink 三种时间属性简介 二、Flink 三种时间属性的应用场景 三、​​​​​​​SQL 指定时间属性的两种方式 四、​​​​​​​​​​​​​​SQL 处理时间DDL定义 五、​​​​​​​​​​​​​​SQL 事件时间DDL定义 Flink SQL的时…...

Ansible自动化部署kubernetes集群

机器环境介绍 1.1. 机器信息介绍 IP hostname application CPU Memory 192.168.204.129 k8s-master01 etcd,kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,kube-proxy,containerd 2C 4G 192.168.204.130 k8s-w…...

网络通信流程

目录 ♫IP地址 ♫子网掩码 ♫MAC地址 ♫相关设备 ♫ARP寻址 ♫网络通信流程 ♫IP地址 我们已经知道 IP 地址由网络号主机号组成,根据 IP 地址的不同可以有5钟划分网络号和主机号的方案: 其中,各类地址的表示范围是: 分类范围适用…...

数据结构一:绪论

(一)数据结构的基本概念 1.相关名词 【1】数据 1.信息的载体,描述客观事物 2.能被输入到计算机中 3.能被计算机程序识别和处理的符号的集合。 【2】数据元素 1.数据的一个“个体” 2.数据的基本单位 3.有时候也被称为元素、结点、顶点…...

使用OpenFeign在不同微服务之间传递用户信息时失败

文章目录 起因原因解决方法: 起因 从pay-service中实现下单时,会调用到user-service中的扣减余额。 因此这里需要在不同微服务之间传递用户信息。 但是user-service中始终从始至终拿不到user的信息。 原因 在pay-service中,不仅要Enable O…...

js中【Worker】相关知识点详细解读

什么是 JavaScript 中的 Worker? JavaScript 中的 Worker 是一个可以在后台线程中运行代码的 API,这样可以避免主线程(通常是 UI 线程)被阻塞。使用 Worker 时,JavaScript 可以在多线程环境中工作,解决了单…...

使用Apify加载Twitter消息以进行微调的完整指南

# 使用Apify加载Twitter消息以进行微调的完整指南## 引言在自然语言处理领域,微调模型以适应特定任务是提升模型性能的常见方法。本文将介绍如何使用Apify从Twitter导出聊天信息,以便进一步进行微调。## 主要内容### 使用Apify导出推文首先,我…...

【C++算法】滑动窗口

长度最小的子数组 题目链接: 209. 长度最小的子数组 - 力扣(LeetCode)https://leetcode.cn/problems/minimum-size-subarray-sum/description/ 算法原理 代码步骤: 设置left0,right0设置sum0,len0遍历l…...

(c++)猜数字(含根据当前时间生成伪随机数代码)

#include<iostream> #include<ctime>/*用srand((unsigned int)time(NULL));要包含这个头文件&#xff0c;如果没有这两个&#xff0c;rand()函数会一直生成42这个伪随机数。*/using namespace std;int main() {srand((unsigned int)time(NULL));//种子&#xff0c;…...

优化批处理流程:自定义BatchProcessorUtils的设计与应用

优化批处理流程&#xff1a;自定义BatchProcessorUtils的设计与应用 | 原创作者/编辑&#xff1a;凯哥Java | 分类&#xff1a;个人小工具类 在我们开发过程中&#xff0c;处理大量的数据集是一项常见的任务。特别是在数据库操作、文件处理或者…...

Framebuffer应用编程

目录 前言 LCD操作原理 涉及的 API 函数 open函数 ioctl 函数 mmap 函数 Framebuffer程序分析 源码 1.打开设备 2.获取LCD参数 3.映射Framebuffer 4.描点函数 5.随便画几个点 上机实验 前言 本文介绍LCD的操作原理和涉及到的API函数&#xff0c;分析Framebuffer…...

MongoDB根据字段内容长度查询语句

db.getCollection("qlzx_penalties_business_raw").find({$expr: {$lt: [{ $strLenCP: "$punish_name" }, 5]},"punish_name_type" : "机构", "source_data" : /中国/,})解释&#xff1a; 1-"source_data" : /中…...

Android中的单例模式

在Android开发中&#xff0c;单例模式&#xff08;Singleton Pattern&#xff09;是一种常用的设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。单例模式在需要控制资源访问、管理共享资源或配置信息的场景下特别有用。在Androi…...