大家读完觉的有帮助记得及时关注和点赞!!!

抽象

近地轨道 (LEO) 卫星的指数级增长彻底改变了地球观测 (EO) 任务,解决了气候监测、灾害管理等方面的挑战。然而,多卫星系统中的自主协调仍然是一个根本性的挑战。传统的优化方法难以处理动态 EO 任务的实时决策需求,因此需要使用强化学习 (RL) 和多智能体强化学习 (MARL)。 在本文中,我们通过对单卫星作进行建模并使用 MARL 框架扩展到多卫星星座来研究基于 RL 的自主 EO 任务规划。我们解决了关键挑战,包括能源和数据存储限制、卫星观测的不确定性以及部分可观测性下分散协调的复杂性。通过利用近乎真实的卫星模拟环境,我们评估了最先进的 MARL 算法(包括 PPO、IPPO、MAPPO 和 HAPPO)的训练稳定性和性能。 我们的结果表明,MARL 可以有效地平衡成像和资源管理,同时解决多卫星协调中的非平稳性并奖励相互依赖性。从这项研究中获得的见解为自主卫星作奠定了基础,为改善分散式 EO 任务中的政策学习提供了实用指南。

关键字:

 强化学习 多智能体强化学习卫星系统 地球观测任务。

1介绍

近地轨道 (LEO) 卫星的快速扩展显著增强了地球观测 (EO) 任务,推动了气候监测、灾害响应、农业规划和城市发展的进步。然而,由于空间环境的动态性和不确定性,自主管理多卫星星座仍然是一项根本性挑战[1,2,3,4].与传统的预先计划的任务不同,自主 EO作需要卫星做出实时决策,同时管理资源限制,在部分可观测性下运行,并与其他卫星进行自适应协调[5,6].这些挑战来自几个因素:观测条件的不确定性,例如太阳照射的变化影响能量可用性和成像成功;对电池电量、数据存储和反作用轮的严格资源限制,这需要高效的任务调度;以及多智能体环境中的非平稳性,其中每颗卫星的行动不断改变系统动态,使学习稳定性复杂化[7,8].此外,卫星行动的相互依存使得实现任务目标变得更加复杂,因为运营成功不仅取决于个人决策,还取决于整个星座的协调努力[9,10].传统的优化技术难以解决这些问题,因为它们依赖于预定义的启发式方法,并且对实时运营需求的适应性有限,因此需要更先进的自主决策方法。

强化学习 (RL) 已成为在 EO 任务中实现自主决策的一种很有前途的替代方案,并已应用于单卫星调度,使卫星能够平衡成像、能耗和数据管理[11,12].然而,随着 EO 任务越来越依赖多卫星星座,问题不仅限于单个智能体决策,还延伸到多个卫星之间的分散协调,这需要多智能体强化学习 (MARL)。 MARL 为多卫星任务中的去中心化决策提供了一个框架,其中每颗卫星都作为独立的代理运行[13]. 使用集中式 RL 进行卫星星座的早期研究[14,15]难以实现可扩展性并依赖持续通信,这对于实际任务来说通常是不切实际的。为了缓解这种情况,已经提出了基于 MARL 的框架[16],假设卫星不断交换信息的理想通信条件。然而,在分散执行环境中,这种方法会带来沉重的通信负担,因为每颗卫星通常仅根据其本地观测来运行。

图 1:多卫星集群图像捕获任务场景:集群星座中的 Sat-1 到 Sat-4 共享相同的四个目标机会窗口。Sat-1 作为领先的卫星,可以优先进入地面站并提前捕获 Target-1。其他卫星必须捕获不同的目标,以确保捕获独特的图像。此行为在多代理系统中引入了非平稳性问题。每颗卫星都有自己的电池 (Batt.) 和数据存储 (Mem.) 资源,它们可能在同一时间步长处于不同的级别t.该情景突出了自主 EO 任务中卫星之间协调和有效资源管理的重要性。

为了应对这些沟通和协调挑战,已经开发了各种 MARL 学习框架,包括完全集中 (CTCE)、完全分散 (DTDE) 和集中培训分散执行 (CTDE)[17].CTCE 依赖于持续的信息交换,因此对于通信受限的大规模 EO 任务来说是不切实际的。DTDE 消除了通信依赖性,但限制了协调能力,因为每颗卫星都做出独立的决策。CTDE 通过集中训练和分散执行来提供平衡,允许卫星在训练期间学习协调策略,同时根据当地观测自主运行。最近的进展,例如多代理近端策略优化 (MAPPO)[18]和异质性药物近端策略优化 (HAPPO)[19,20]遵循此范式,在实际约束下促进有效的多卫星协调。

这项工作对使用 RL 的自主 EO 任务进行了全面研究,并在三个不同的学习框架中开发了 MARL。 我们的贡献包括:1) 一种结构化的 EO 任务规划建模方法,将具有 RL 的单卫星扩展到使用 MARL 的多卫星协调(见图 1)。这种方法的灵感来自实际的空间系统应用,并结合了卫星特定的作因素,例如不同的状态转换概率(例如,日食条件)、动作执行延迟、不确定性和非平稳性。2) 深入研究单卫星场景中的 RL 和多卫星 EO 任务中的 MARL 的学习稳定性和优化挑战。该研究确定了在这些环境中导致学习过程不稳定的关键因素,例如环境动力学和代理交互。3) 对用于自主 EO 任务的最新 RL 和 MARL 算法进行全面性能评估,将用于单卫星任务的 RL 框架(例如 PPO)与 MARL 框架(例如,完全集中式 PPO、独立 PPO (IPPO))进行比较[21]、MAPPO 和 HAPPO) 进行多卫星协调。该分析强调了这些方法在解决可扩展性、协调性和适应性挑战方面的优势和局限性。该代码已公开提供11https://anonymous.4open.science/r/Multi-Sat-MARL-2025,其中包含我们实验场景的演示视频。

本文的其余部分结构如下:第二部分介绍了问题陈述,从单卫星场景到多卫星场景。第 III 节描述了用于解决问题的算法。第四部分详细介绍了我们的实验评估和结果。最后,第五节总结了本文并讨论了未来的方向。

2问题陈述

本节讨论了自主多卫星地球观测任务问题的正式模型。卫星的目标是在其轨道上捕获尽可能多的独特图像(参见图 1 中的详细插图)。以前关于单星 EO 任务的工作在著名的强化学习框架中将问题表述为顺序决策任务,即部分可观察马尔可夫决策过程 (POMDP)[15,22].在此基础上,我们将多卫星 EO 任务正式定义为去中心化 POMDP (Dec-POMDP) 模型,该模型从单代理 MDP 框架扩展而来。

单个 EO 卫星充当代理,根据其当前状态以离散的时间步长做出决策。模拟定义了四种可能的作:1) 捕获我-第 -个图像目标,其中卫星必须将其光学成像传感器对准选定的目标 -我在地球上并将其存储在机载内存中;2) 下行链路,即卫星在可以访问地面站时传输收集的 EO 图像数据;3) 充电,包括将卫星重新定向到太阳,以最大限度地吸收太阳能为其电池充电;4) 去饱和,确保反作用轮 (RW),即姿态控制的主要执行器,在安全的工作范围内运行。

为了将自主卫星决策过程正式表示为 POMDP,我们将问题定义为元组:𝒢=⟨𝒮,一个,𝒪,𝒯,r,𝒵,γ⟩,哪里𝒮表示一组有限的状态,这些状态定义了卫星在太空中的真实基本条件,该条件是不可完全观测的。一个是一组有限的可用作,包括捕获、下行链路、充电和去饱和。𝒪是代理可以接收的有限观测值集,例如电池电量、数据存储可用性、反作用轮速度、目标机会窗口、地面站访问窗口、日食状态和时间。 转移概率函数𝒯⁢(st,一个t,st+1)=P⁢(st+1|st,一个t)定义转换到 state 的概率st+1从st执行作后一个t.奖励函数r确定在给定状态下执行作的即时奖励。此 EO 任务的奖励函数定义为:

哪里ρj∈[0,1]表示基于 Target 的优先级的奖励-j.这个奖励函数是给代理者的重要反馈,表明代理者的策略表现。负奖励设置为比成功捕获目标大 100 倍,以防止代理程序进入失败条件。最终,如果捕获许多目标会导致卫星出现故障模式,那么它的价值就会降低。如果卫星发生故障,则会触发故障条件,表示为:

观测概率函数𝒵⁢(ot,st+1,一个t)=P⁢(ot|st+1,一个t)定义观测的概率ot假设系统处于st+1采取行动后一个t.最后,折扣因子γ∈[0,1]确定未来奖励的重要性。

2.1单卫星问题

约束和限制:在我们的研究中,这颗卫星有两个有限的资源被认为是限制因素:电池电量 (bt∈[Bm⁢我⁢n,Bm⁢一个⁢x]) 和数据存储容量 (dt∈[Dm⁢我⁢n,Dm⁢一个⁢x]) 在任何时间步 (t).在每个时间步,卫星都会消耗电力,表示为cb,我存储数据,表示为cd,我.为了最大限度地利用电池充电,卫星必须调整其对太阳的姿态,这可能会与其目标成像方向发生冲突。 另一个约束来自姿态控制,特别是反作用轮 (RW) 的速度,表示为Ω^∈[−Ωm⁢一个⁢x,Ωm⁢一个⁢x].这些轮子用作沿三个轴 (x,y,z).为防止超过最大速度阈值,卫星必须定期对车轮进行去饱和。有限的资源约束在数学上表示为:∑t=0∞cb,t≤bt,Bm⁢我⁢n≤bt≤Bm⁢一个⁢x和∑t=0∞cd,t≤dt,Dm⁢我⁢n≤dt≤Dm⁢一个⁢x.这些约束在奖励函数中作为失败(方程 2)合并到模型中,导致惩罚或负奖励。其他一些约束因素,如通信波特率,对系统性能有相关影响,但它不是导致卫星故障情况的主要因素。

不确定性和随机性:由于噪声、干扰和不可预测的变化,现实世界的系统本身就涉及不确定性。在 EO 卫星任务中,这种不确定性与资源可用性密切相关,资源可用性影响观测概率函数和行动必要性。 初始电池电量会影响学习稳定性,因为只能在无阴影区域充电。同样,有限的初始数据存储要求策略平衡成像和下行链路,以维护内存以供将来捕获。因此,初始资源可用性直接影响观测质量和行动可行性,在 POMDP 公式中起着关键作用。POMDP 元组定义 (𝒢) 本身就捕获了这些不确定性,因为卫星在运行期间缺乏完整的状态可观测性。

2.2多卫星问题

多卫星协调:合作 MARL 中,代理共享一个全局目标并优化一个共同的奖励函数(方程 1)。这项工作采用了去中心化部分可观察马尔可夫决策过程 (Dec-POMDP) 框架,非常适合多卫星 EO 任务,其中每个代理都根据本地观测采取行动[23]. Dec-POMDP 由元组定义:𝒟=⟨S,{一个我}我=1N,T,r,{O我}我=1N,O,N,γ⟩,哪里S表示环境状态集,每个代理我具有作空间一个我,形成关节动作空间一个=一个1×⋯×一个N为N代理。状态转换函数T:S×一个×S→[0,1]描述从 state 转换的概率s自s′鉴于联合行动一个=(一个1,…,一个N).全局奖励函数r:S×一个→ℝ根据联合作提供反馈。每个代理我具有观察空间O我,联合观察空间为O=O1×⋯×ON.观察功能O:S×一个×O→[0,1]定义代理接收观察的概率o我给定状态s和联合行动一个.代理数为N和γ∈[0,1]是 Discount Factor,它控制未来奖励的重要性。由于 Dec-POMDP 在分散执行下运行,因此每颗卫星仅根据其部分观测做出决策,同时仍为共同目标做出贡献。 这种分散但合作的性质为协调卫星之间的图像捕获带来了挑战,因为它们必须在没有直接通信的情况下推断他人的行动。

非平稳性:在多卫星设置中出现非平稳性是因为,随着座席在培训期间更新其策略,环境会不断发展。 当一个代理更新其策略时,它会为其他代理更改环境,从而导致状态和作的分布发生变化。这违反了大多数强化学习算法中的平稳性假设,导致训练不稳定。另一个挑战是奖励相互依存性,即卫星的奖励受其他卫星的行为影响。例如,基于唯一图像捕获的全局奖励取决于联合动作向量一个=(一个1,一个2,…,一个N).随着卫星调整其政策,奖励格局会发生变化,从而增加政策学习的复杂性。

3方法

为了解决自主 EO 任务的 POMDP 和 Dec-POMDP,选择了无模型方法,因为它具有直接学习策略的灵活性,特别是当系统模型复杂且高度动态时。因此,RL 最初是为处理单星 EO 任务而量身定制的,然后扩展到具有多卫星星座的 MARL。

3.1强化学习

单卫星具有板载处理器,以执行最佳自主策略。在这里,卫星被定义为在执行 EO 任务期间解决卫星决策的代理。RL 用于学习最佳策略 (π∗),它将状态映射到作π⁢(一个t|st)并随着时间的推移最大限度地提高预期的累积奖励或回报[24].返回时间步t表示Rt表示为折扣奖励的总和Rt=∑我=0∞γ我⁢rt+我+1.为了衡量在特定策略下观察的好坏,将 State-Value 函数定义为从方程 1 获得的预期累积奖励:Vπ⁢(s)=𝔼π⁢[Rt|St=s]和一个 Action-Value 函数:Qπ⁢(s,一个)=𝔼π⁢[Rt|St=s,一个t=一个].

近端策略优化:在各种 RL 方法中,我们的工作重点是政策方法,即近端政策优化 (PPO)[25].该算法是一种广泛使用的强化学习 (RL) 算法,特别适用于解决高维问题。它属于具有 Actor-critic 网络架构的策略优化方法家族,其目标是直接优化策略,而不是学习价值函数。PPO 旨在改进政策πθ⁢(一个|s),参数化为θ,以最大化预期的累积奖励:J⁢(θ)=𝔼τ∼πθ⁢[∑t=0∞γt⁢rt].而不是直接优化J⁢(θ),PPO 使用代理目标函数来限制策略更新并稳定训练阶段:

哪里rt⁢(θ)=πθ⁢(一个|s)πθo⁢l⁢d⁢(一个|s)是新旧策略之间的概率比。一个^t是估计的优势函数,通常使用广义优势估计 (GAE) 计算。和ε是控制裁剪范围的超参数。“clip” 项确保rt⁢(θ)不会与 1 相差太大,从而避免过大的策略更新。这样可以稳定训练并防止性能崩溃,这更适合于具有不确定性和随机性的真实卫星模拟。 PPO 还包括一个 value 函数 loss,以改进策略的状态 value 预测:L价值⁢(θ)=𝔼t⁢[(Vθ⁢(st)−Vt目标)2].然后,为了鼓励探索,添加了一个熵奖励项:L熵⁢(θ)=𝔼t⁢[−πθ⁢(一个t|st)⁢日志⁡πθ⁢(一个t|st)].PPO 的总损失函数是替代目标、值函数损失和熵奖励的组合:L总⁢(θ)=LPPO (PPO)⁢(θ)−c1⁢L价值⁢(θ)+c2⁢L熵⁢(θ)哪里c1和c2是用于平衡不同项的贡献的系数。

3.2多智能体强化学习

有效的多卫星星座管理需要协同控制,以优化全球性能并增强 EO 任务。MARL 将 RL 扩展到多智能体设置,允许智能体同时学习和交互[26].自主决策可以在单个资源(处理卫星或地面站)中执行,也可以通过机载处理进行分发。集中培训 分散执行 (CTDE) 学习范式:该框架在训练期间利用集中信息和在执行期间实现分散决策之间取得了平衡。此外,它还支持可扩展性功能和实际适用性。每个代理我∈𝒩学习策略π我⁢(一个我|o我)哪里o我是 agent- 的局部观测值我.培训使用集中的评论家Qθ⁢(o,一个)根据全球观测评估联合行动𝒐:Qθ⁢(s,一个)=𝔼⁢[∑t=0∞γt⁢r⁢(st,一个t)∣s0=s,一个0=一个].在执行过程中,每个代理的策略仍然以去中心化的方式进行:π我⁢(一个我|o我).在我们的工作中,选择了 CTDE 中的两个最新技术,与完全集中式和分散式算法进行比较:

1) 多代理 PPO (MAPPO) 是专为多代理系统设计的 PPO 的扩展[18].它结合了集中的批评者和分散的策略,以提高 MARL 任务的性能。MAPPO 使用所有代理共享的单一集中式批评器,允许对全局状态进行评估以稳定学习并减轻非平稳性:V我集中⁢(s)≈𝔼⁢[∑t=0∞γt⁢r我,t∣s0=s]哪里s表示全局状态,γ是折扣系数,而rt是时间步的奖励t.MAPPO 中策略优化的损失函数由下式给出:

哪里:rt⁢(θ我)=πθ我⁢(一个t∣ot)πθ我老⁢(一个t∣ot)是概率比,一个^t是全局优势函数,而ε是裁剪参数。

2) 异构代理 PPO (HAPPO) 通过考虑具有不同状态作空间或角色的异构代理以及顺序更新方案来扩展 MAPPO[20].它使用个人优势职能和分散的政策,同时保持集中的批评者。 在 HAPPO 中,集中价值函数是特定于代理的,用于处理异构代理:V我集中⁢(s)≈𝔼⁢[∑t=0∞γt⁢r我,t∣s0=s]哪里我表示代理索引,r我,t是特定于 agent 的奖励我.并且,HAPPO 的损失函数表示为:

哪里r我,t⁢(θ我)=πθ我⁢(一个我,t∣o我,t)πθ我老⁢(一个我,t∣o我,t)和一个^我,t是 agent 的优势功能我.

MAPPO 和 HAPPO 在 CTDE 范式中都有效运行。它在集中式批评者中具有主要区别,其中 MAPPO 使用单一的全局批评者进行共享评估,而 HAPPO 则纳入特定于代理的批评者,以便在异构系统中具有更大的灵活性。它共享相同的分散执行设置,其中每个代理仅根据本地观察执行其策略,使这些算法适用于全局状态信息在执行期间不可用的真实场景。

4实验结果

我们的实验评估了 EO 任务的性能,以从 2 倍轨道内全球 2,000 个均匀分布的目标中捕获尽可能多的独特图像。我们的实验包括两部分:(1) 将单药 RL 应用于单颗卫星以评估 RL 的有效性,以及 (2) 通过扩展到四颗卫星星座来引入 MARL。BSK-RL 中的可调卫星参数列在补充文件中。在多卫星实验中,我们评估了 Walker-delta 和 Cluster 轨道类型。

4.1单卫星 RL

在我们的实验中,为了证明有限资源可用性问题,电池和数据存储容量被定义为:B=(50,400)Wh、电池和D=(5,500)GB 的数据存储。发射器波特率定义为B⁢d⁢r=(0.5,4.3)Mbps 和捕获的图像大小我⁢m⁢g=(S⁢m⁢一个⁢l⁢l⁢(S),L⁢一个⁢r⁢g⁢e⁢(L)).结果在补充文件图 1 中提供。左侧,通常,资源容量较高,对 PPO 学习性能的挑战较小。有限的数据存储资源对学习性能的降低比其他资源更大。有限的电池资源会导致学习性能多次显著下降,因为它会触发失败惩罚。

此外,我们还评估了 PPO 在各种不确定性和随机性挑战来源下的性能(参见补充文件图 1)。随机性引入了学习波动,具有以下设置:姿态干扰(正态分布,比例10−4对于偏航、俯仰、滚动),初始反作用轮 (RW) 速度均匀在 -3000,3000 Rpm,电池电量为 40-80%,数据存储为 20-80%。 随机 RW 速度会显著降低机动精度。初始数据存储的变化会带来决策挑战并破坏学习的稳定性。相比之下,电池电量随机性的影响很小,姿态干扰只会影响图像捕获而不会受到惩罚。当 RW 速度和数据存储都是高度随机的时,最大的挑战出现了,这严重阻碍了策略趋同。

4.2多卫星 MARL

我们的实验重点是合作卫星观察共享目标并补偿彼此的限制,例如有限的能量或存储。然后,MARL 算法,包括集中式 PPO、IPPO(去中心化)、MAPPO 和 HAPPO,在有限资源挑战、不确定性和随机性下的性能。通过比较算法性能,研究了在动态、资源受限的卫星任务中增强自主协作决策的有效方法的确定。

图 2:集群和 Walker-Delta 轨道下的多卫星学习性能:使用默认和有限资源进行评估,包括电池 (B)、数据存储 (D)、波特率 (B⁢d⁢r)、拍摄的图像大小 (我⁢m⁢g)和随机性的存在。

图 3:不同卫星和算法的目标捕获动作频率:在不同的数据存储容量 (D),其中 Sat-1 到 Sat-4 具有 (5, 10, 250, 500) GB。

有限的资源容量:本研究中使用的资源规范与 Section 4.1 中的定义相同。多卫星在有限资源下的学习表现如图 2 所示。2、左侧起第二列。集中式 PPO 算法的性能很容易陷入次优状态,因为它存在非平稳性问题。此外,IPPO 的成绩具有竞争力,但略低于 MAPPO 和 HAPPO 的表现。而且,HAPPO 在大资源容量下实现时具有更好的性能。多卫星存在有限资源挑战的行为与单卫星非常相似。

不确定性和随机初始化:不确定性和随机性下的实验结果(参见图 3 中左第三列)。2) 揭示了集中式方法由于对环境变化(例如反应轮速度初始化和数据存储随机性)的敏感性而表现不佳。其他算法 IPPO、MAPPO 和 HAPPO 表现出类似的行为和更稳定的性能,有效地适应了波动的条件。这些算法在处理不确定性方面表现出弹性,在挑战中保持一致的性能,突出了在动态、资源受限的环境中分散训练的优势。

Walker-delta 和 Cluster Constellation:在不同的星座设置中,Walker-delta 被认为不太复杂,因为它具有较低的协作属性,与集群相比会产生较弱的非卫星性问题。 开始时,Walker-delta 的训练阶段(图 D)。2 最右侧的列),集中式 PPO 具有更高的奖励,并且继续略微增加,并且在 20k 步长时仍低于其他算法的性能。但是,IPPO 和 HAPPO 在此设置中具有相似的学习性能。

多种卫星资源中的多星协调:在多卫星协调中,分析跨卫星的捕获动作以评估 MARL 算法的协作能力(见图 D)。3). 为了鼓励合作,我们分配了不同的数据存储容量:Sat-1 到 Sat-4 分别为 5 GB、10 GB、250 GB 和 500 GB。存储有限的卫星往往捕获的目标较少,而那些具有更多资源容量的卫星可以补偿它们。我们的结果表明,该政策具有协调行为来捕获不同的目标,突出了 MARL 的有效性。集中式 PPO 依赖于单一策略策略,并且它对任何卫星都有类似的策略,导致相似的行动特征和低协调性。IPPO 独立学习多个策略,并为 Sat-3 和 Sat-4 提供更多捕获,但它们覆盖相同的 Target-1。MAPPO 策略具有最佳的协调特性,不同的卫星关注点不同目标。HAPPO 具有协调特性,因为不同的卫星具有不同的目标偏好,并且覆盖的资源容量卫星较少。但是,Sat-4 在 Target-1 和 Target-4 上具有重复,两者具有相似的作频率。

5结论

本研究在自主 EO 任务的现实环境中实现了 RL 及其对 MARL 算法的扩展。通过在各种不确定性下进行的广泛实验,例如:反作用轮初始化、数据存储和姿态扰动,它证明了 CTDE-MARL 在应对动态和资源受限的地球观测任务挑战方面的有效性和适应性。此外,结果突出了 MARL 框架中 MAPPO 在增强协作和保持卫星作通信效率方面的潜力。未来,这项工作可以进一步扩展以探索更复杂的场景,例如具有不同传感器能力的异构卫星星座和更大规模的多集群轨道系统。此外,将特定领域的知识整合到 MARL 训练中并开发方法以进一步缓解非平稳性问题将是提高实际部署可行性的关键方向。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flutter 短视频相关插件选型

​插件名称​​核心优势​​缺点​​短视频场景适用性​​推荐指数​​video_player​ (官方基础库)• 官方维护,跨平台兼容性最佳(iOS/Android/macOS) • 轻量级,无额外依赖,启动速度快 • 支持本地/网络视频、基础播…

QTableView为例:Qt模型视图委托(MVD)(Model-View-Delegate)

文章目录 1. QT中的MVD模式2. View3. Model4. Delegate5. 以TableView为例 1. QT中的MVD模式 模型视图委托(MVD)是Qt中特有的设计模式,类似MVC设计模式,将MVC设计模式中的Controller当做MVD中的Delegate,两者的概念基…

uni-app总结3-项目新建运行调试

一、新建项目 通过HbuilderX新建 在点击工具栏里的文件 -> 新建 -> 项目(快捷键CtrlN,MacOS上是CMD N): 左测Tab选择uni-app类型,输入工程名,选择模板,Vue版本选择3,其他不…

LeetCode 每日一题打卡|若谷的刷题日记 4day--移动零

移动零 题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,1…

简历模板3——数据挖掘工程师5年经验

姓名 / Your Name 数据挖掘工程师 | 5年经验 | 推荐/画像/反欺诈 📞 138-XXXX-XXXX | ✉️ your.emailexample.com | 🌐 github.com/yourname | 📍 北京 🎯 个人简介 / Summary 5年大厂数据挖掘工程经验,硕士学历&am…

Vue添加图片作为水印

直接上代码 把图片作为水印 <div class"info-warp"><div class"image-container"><img src"https://img.shetu66.com/2023/06/28/1687920981963810.png" /><div class"watermark-layer"><imgv-for"…

Conda 常用命令大全:从入门到高效使用

Conda 常用命令大全&#xff1a;从入门到高效使用 Conda 是 Python 生态中最流行的环境管理工具之一&#xff0c;它不仅可以管理 Python 包&#xff0c;还能创建隔离的虚拟环境&#xff0c;适用于数据分析、机器学习、科学计算等场景。本文将介绍 Conda 的常用命令&#xff0c…

【系统更新】TDuckX2.7升级!DSL逻辑、自定义Webhook、AI考试来袭

No.1 支持自定义 DSL 公式 逻辑规则支持自定义 DSL&#xff0c;通过公式表达式构建复杂逻辑条件&#xff0c;能够支持选项、矩阵、自增表单中的内容控制&#xff0c;可以满足多变业务场景&#xff0c;极大提升了逻辑配置的灵活性。 No.2 扩展值新增“名称字段” 在批量生成扩…

安卓9.0系统修改定制化____深入解析安卓 9.0 各手机分区:功能、作用与差异 基础篇二

在安卓 9.0 系统中,手机内部存储被划分为多个不同的分区,每个分区都承担着独特且重要的职责。深入了解这些分区,对于我们理解安卓系统运行机制、进行系统优化,甚至是刷机等操作都有着极大的帮助。尤其是rom定制与修改方面。 通过博文了解💝💝💝 1💝💝💝-----了…

自动驾驶技术路线之争:视觉派、激光雷达派与融合派,谁将引领未来?

自动驾驶的赛道上&#xff0c;科技巨头、传统车企和初创公司纷纷亮出“看家本领”。但你是否注意到&#xff0c;不同玩家的“眼睛”和“大脑”配置大相径庭&#xff1f;特斯拉CEO马斯克曾称“激光雷达是徒劳的拐杖”&#xff0c;而国内华为、小鹏等企业则坚定拥抱激光雷达。这背…

Spring Cloud Alibaba 中间件

Spring Cloud Alibaba 中间件 &#x1f517; Spring官方介绍 [⚠️Spring官方对Spring Cloud Alibaba的更新不及时] &#x1f517; Spring Cloud Alibaba官网 &#x1f4dd; 代码记录 Nacos&#xff08;服务注册与发现&#xff09; Nacos(Dynamic Naming and Configuration…

uniapp+vue中 多次触发onLoad/created

控制台log输出为何频频失踪?   wxss代码为何频频失效?   wxml布局为何乱作一团?   究竟是道德的沦丧?还是人性的缺失?   让我们一起来 走 跑进科学 前言 uniapp中开发网页h5&#xff0c;莫名其妙每次请求接口都会执行两次&#xff0c;仔细排查发现是onLoadonShow…

[论文阅读] 人工智能+软件工程 | 软件工程中非代码工作的LLM能力评估

软件工程中非代码工作的LLM能力评估 论文信息 misc{2506.10833v1,title{Evaluating Large Language Models on Non-Code Software Engineering Tasks},author{Fabian C. Pea and Steffen Herbold},year{2025},eprint{2506.10833},archivePrefix{arXiv},primaryClass{cs.SE} }…

Data URI Scheme 详解:将数据嵌入 URL 的技术方案

一、Data URI Scheme 是什么&#xff1f; Data URI 是一种特殊的URL格式&#xff0c;允许将数据&#xff08;如图像、文本、音频等&#xff09;直接嵌入到URL中&#xff0c;而无需引用外部资源。它由RFC 2397标准定义&#xff0c;常用于前端开发中减少HTTP请求次数&#xff0c…

基于Redis方案的分布式锁的Java实现

前期&#xff0c; 我们介绍了什么是分布式锁及分布式锁应用场景&#xff0c; 今天我们基于Redis方案来实现分布式锁的应用。 1. 基于Redis分布式锁方案介绍 基于Redis实现的分布式锁是分布式系统中控制资源访问的常用方案&#xff0c;利用Redis的原子操作和高性能特性实现跨进…

Kafka源码P2-生产者缓冲区

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 有很多很多不足的地方&#xff0c;欢迎评论交流&#xff0c;感谢您的阅读和评论&#x1f604;。 目录 1 引言2 缓冲区2.1 消息在Partition内有序2.2 批…

力扣网C语言编程题:三数之和

一. 简介 本文记录力扣网上的逻辑编程题&#xff0c;涉及数组方面的&#xff0c;这里记录一下 C语言实现和Python实现。 二. 力扣网C语言编程题&#xff1a;三数之和 题目&#xff1a;三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nu…

2.2 Windows MSYS2编译FFmpeg 4.4.1

一、安装编译工具 # 更换pacman源 sed -i "s#mirror.msys2.org/#mirrors.ustc.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist* pacman -Sy# 安装依赖 pacman -S --needed base-devel mingw-w64-x86_64-toolchain pacman -S mingw-w64-x86_64-nasm mingw-w64-x86_64-ya…

驱动开发,队列,环形缓冲区:以GD32 CAN 消息处理为例

对环形缓冲区进行进一步的优化和功能扩展&#xff0c;以应对更复杂的实际应用场景&#xff0c;特别是针对 CAN 总线消息处理的场景。 一、优化点 1&#xff1a;动态配置环形缓冲区大小在原始实现中&#xff0c;我们固定了缓冲区大小为 RINGBUFF_LEN 64。这种方式虽然简单&am…

SQL基础知识,MySQL学习(长期更新)

1、基本操作&#xff0c;增删查改 INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...); DELETE FROM 表名 WHERE 条件 SELECT * FROM 表名 WHERE 条件 UPDATE 表名 SET 字段1 值, 字段2 值, ... WHERE 条件; SELECT * INTO 新表 FROM 旧表 WHERE… INSERT INTO 语…