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

物理动力学系统的强化学习:一种替代方法

原文towardsdatascience.com/rl-for-physical-dynamical-systems-an-alternative-approach-8e2269dc1e79?sourcecollection_archive---------1-----------------------#2024-07-28重新引入遗传算法并与神经网络进行比较https://medium.com/retter_42511?sourcepost_page---byline--8e2269dc1e79--------------------------------https://towardsdatascience.com/?sourcepost_page---byline--8e2269dc1e79-------------------------------- Robert Etter·发布于 Towards Data Science ·14 分钟阅读·2024 年 7 月 28 日–https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/03893c77eceb2ecc28ad297ed423a40e.png图片来自 Tra Nguyen 于 Unsplash物理与非线性动力学控制理论通过经典、鲁棒和最优方法支撑了现代文明。精炼、电信、现代制造等各个领域都依赖于它们。控制理论建立在物理方程提供的见解之上例如牛顿定律和麦克斯韦方程。这些方程描述了物理系统中的动态和不同力的相互作用。通过它们我们理解方程如何在不同状态之间转换其中“状态是足够描述系统的所有信息的集合”[1]通常是通过流体动力学中的压力或流体粒子的速度或者在电动力学中的电荷和电流状态来表达。通过推导系统方程我们可以预测状态如何随时间和空间变化并通过微分方程表达这种演化。通过这种理解我们可以采用控制手段即通过特别施加的力将这些系统维持在期望的状态或输出上。通常这种力是根据系统的输出计算的。以车辆巡航控制为例输入是期望的速度输出是实际的速度。系统是发动机。状态估计器观察速度并确定输出与输入速度之间的差异然后应用控制手段如调整燃油流量来减少误差。然而尽管控制理论取得了诸多成就它仍面临着显著的局限性。大多数控制理论是基于线性系统或是输入的比例变化导致输出的比例变化的系统。虽然这些系统可能非常复杂但我们对这些系统有着广泛的理解使我们能够实际控制从深海潜水器、矿山设备到航天器的各种设备。然而正如斯坦尼斯瓦夫·乌拉姆所言“使用‘非线性科学’这样的术语就像是把大部分动物学称为研究非大象动物。”到目前为止我们在控制复杂物理系统方面的进展大多通过找到限制它们线性行为的方法。这可能会在多个方面带来效率损失· 将复杂系统拆解为可单独控制的组件优化子系统而非整个系统· 在较简单但效率较低的操作模式下运行系统或未能充分利用复杂的物理学原理例如主动流动控制以减少飞机的阻力· 严格的操作条件限制一旦超过可能导致不可预测或灾难性的故障高级制造业、改进的空气动力学和复杂的电信系统都将受益于更好的非线性系统控制方法。非线性动力学系统的基本特征是它们对输入的复杂响应。即使在环境或状态发生小幅变化的情况下非线性系统也会剧烈变化。以控制流体流动的纳维-斯托克斯方程为例同一组方程既描述了一个平静、缓慢流动的小溪也描述了一个汹涌的洪流所有洪流中的漩涡和特征都包含在方程的动态变化之中。非线性系统带来了困难与线性系统不同我们通常无法轻松预测系统在从一个状态过渡到下一个状态时的行为。我们所能做到的最好方法是通过一般分析或广泛的仿真。因此在非线性系统中我们面临两个问题系统识别——即理解系统在给定状态下的行为以及系统控制——即系统在响应给定输入时的短期和长期变化以及如何选择输入以获得期望的结果。强化学习与物理学尽管非线性分析和控制不断取得进展但我们在利用这些系统方面仍然受到传统基于方程方法的限制。然而随着计算能力和传感器技术变得更加普及基于数据的方法提供了一种不同的途径。数据可用性的剧增催生了机器学习ML方法而强化学习RL提供了一种新的方法以更有效地应对控制非线性动态系统的挑战。RL 已经在从自动驾驶汽车到战略和计算机游戏的环境中取得了成功它是一个机器学习框架通过“试错”来训练算法或智能体使其“学会如何在不确定性下做出决策以最大化长期收益”[1]。换句话说RL 算法解决了系统识别和控制优化的问题而不是通过操控和分析控制方程来实现而是通过采样环境来预测哪些输入动作会导致期望的结果。RL 算法或智能体根据系统状态应用一套行动策略并随着对系统更多信息的分析而不断完善这一策略。许多强化学习RL算法基于使用神经网络来开发将状态映射到最佳行为的函数。RL 问题可以被构建为状态-行动-奖励三元组。对于给定的状态某个特定的行动会导致一个特定的奖励。神经网络作为通用函数逼近器可以进行调整以准确地逼近整个系统中的状态-行动-奖励三元组函数。为了做到这一点神经网络必须通过探索系统或环境来获取新知识然后通过利用额外获得的数据来精炼其策略。RL 算法通过它们如何应用数学来探索、利用和在两者之间平衡从而实现差异化。然而神经网络也带来了一些挑战· 资源需求。使用神经网络来估算一个能够为每个状态确定奖励和最佳行动的函数可能需要相当长的时间和大量的数据。· 可解释性。通常很难理解神经网络是如何得出其解决方案的这限制了它们在提供真正洞见方面的实用性并且可能使得预测或界定神经网络的行为变得困难。可解释性对于物理系统尤其重要因为它能够使得几百年来数学上开发出的强大分析工具得以应用从而为系统提供额外的洞见。尽管存在一些方法如迁移学习和拓扑分析来应对这些挑战但它们仍然是强化学习广泛应用的障碍。然而另一种替代方法可能在我们专注于物理系统时会有所帮助。回想一下我们讨论的物理系统是通过数学方程来定义的或者可以通过数学方程很好地描述。与其开发一个完全任意的函数我们可以集中精力寻找由常见数学运算符组成的表达式算术运算、代数运算以及超越函数如正弦函数、e^x 等。为此目的的一种方法是使用遗传算法。正如在[2]中所描述的遗传算法可以通过随机生成函数并通过变异和交叉繁殖有前途的候选者来探索函数空间并通过这些方式利用和优化解决方案。因此尽管神经网络在大多数强化学习问题中表现出色但在物理动态系统中出现了一位新的挑战者。接下来我们将更深入地研究遗传算法方法并查看它如何与领先的强化学习算法——软演员评论家SAC进行对比。为此我们将在基于物理的训练场中使用 AWW Sagemaker 实验来评估两者的表现。最后我们将通过评估结果、讨论结论并建议下一步的工作来结束本文。回想一下强化学习RL面临着两个挑战探索环境和利用已发现的信息。探索对于找到最佳策略是必要的考虑到处于任何状态的可能性。如果不进行探索就可能错过全局最优解而仅停留在局部最优且算法可能无法足够泛化从而在所有状态下都能成功。利用已知信息则是为了将当前解决方案优化到最优。然而当算法精细化一个特定的解决方案时它就牺牲了进一步探索系统的能力。Soft Actor CriticSAC是对强大 Actor-Critic 强化学习方法的改进。Actor-Critic 算法家族通过将状态值及其相关奖励的估计与优化特定输入策略分开来处理探索与利用之间的权衡。随着算法收集新信息它会更新每个估计器。Actor-Critic 在实现上有许多细节有兴趣的读者可以参考书籍或在线教程。SAC 通过优先探索那些奖励与估计的评价值差异显著的状态来优化评价器。OpenAI提供了 SAC 的详细描述。对于本实验我们使用了SAC 的 Coax 实现。我查看了几个强化学习库包括 Coach 和 Spinning Up但 Coax 是我找到的少数几个在当前 Python 版本中“开箱即用”的库之一。Coax 库包括广泛的强化学习算法包括 PPO、TD3 和 DDPG并且与 gymnasium 兼容良好。像 SAC 这样的演员-评论员方法通常通过神经网络作为函数近似器来实现。正如我们上次讨论的那样还有一种潜在的方法来探索系统并利用潜在的控制策略。遗传算法通过随机生成可能的解决方案来进行探索并通过变异或组合不同解决方案的元素繁殖来利用有前景的策略。在这种情况下我们将评估遗传算法的遗传编程变体作为函数近似的另一种手段具体来说我们将使用遗传方法随机生成并评估包含常量、状态变量和数学函数的函数树作为潜在的控制器。实现的遗传编程GP算法改编自[2]不同之处在于该文中使用的锦标赛被本实现替换为选择每代的前 64%Nn以下为 33%作为突变的候选并为剩余部分重新播种以便更好地探索解空间。为了在每一代中创建个体树生长函数随机调用算术函数-*/和超越函数例如 e^x, cos (x)来构建分支并将常量或状态变量作为叶子构成树的终端分支。递归调用用于根据波兰表示法[2]通过 LISP 实现我已将其改编为 Python构建表达式设有规则以避免如除以 0 等问题并确保数学一致性使每个分支最终正确地以常量或传感器值作为叶子。概念上一个方程树的形式如下https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/091d4561cf55ad9e6718afa9897fb8fa.png图 1. 示例函数树作者基于[2]提供这导致了一个控制器 b sin (s1) e^(s1*s2/3.23) - 0.12脚本中写作 — sin s1 e^ / * s1 s2 3.23 0.12其中 s 表示状态变量。刚开始可能会让人感到困惑但写出一些例子可以澄清这一方法。在构建完整代数的树后每棵树都会通过环境进行性能评估。然后基于获得的奖励按控制性能对树进行排名。如果未达到期望的性能则保留表现最好的树前 66% 的树通过交叉交换两棵树的元素、剪切与生长替换树的一个元素、收缩用常量替换树元素或重新参数化替换树中的所有常量进行变异参考文献[2]。这使得能够利用最有前景的解决方案。为了继续探索解空间表现较差的解决方案会被随机新树所替代。每一代之后新的代际将是随机新个体与顶级表现解决方案的复制或变异的结合。树会在环境中随机起始位置进行测试。为了防止“幸运”的起始状态影响结果类似于模型过拟合树会在一批不同的随机起始状态下进行测试。遗传编程的超参数包括https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/8f7382b6e0934b6d74ed6e925c3f70f3.png表 1. 遗传编程算法的超参数注释过的代码可以在github上找到。请注意我是一个业余编程者代码可能有些笨拙。希望即使存在不符合 Python 风格或普遍不良的编程实践代码至少足够可读能够理解我的方法。评估方法两种算法在两个不同的 gymnasium 环境中进行了评估。第一个是 gymnasium 基金会提供的简单摆锤环境。倒立摆是一个简单的非线性动力学问题。动作空间是可以施加于摆锤的连续扭矩。观察空间与状态相同是 x、y 坐标和角速度。目标是保持摆锤直立。第二个是相同的 gymnasium 环境但在观察中加入了随机噪声。噪声服从均值为 0方差为 0.1 的正态分布以模拟现实传感器测量值。强化学习开发中最重要的部分之一是设计一个合适的奖励函数。尽管有许多算法可以解决给定的强化学习问题但为这些算法定义一个合适的奖励以便优化是使某个算法在特定问题上成功的关键步骤。我们的奖励需要让我们能够比较两种不同强化学习方法的结果同时确保每种方法都能够朝着其目标前进。在这里对于每个轨迹我们跟踪累积奖励和平均奖励。为了简化这一过程我们让每个环境运行一个固定数量的时间步每个时间步根据代理距离目标状态的远近给予负奖励。Pendulum gym 就是这样工作的——在 200 个时间步后截断并根据钟摆的竖直程度给予负奖励最大奖励为 0并在每个时间步都进行强制执行。我们将使用平均奖励来比较这两种方法。我们的目标是评估每个强化学习RL框架的收敛速度。我们将使用 AWS Sagemaker 实验来实现这一目标它可以自动追踪度量指标如当前奖励和参数如活跃的超参数并按迭代或 CPU 时间跨运行进行记录。尽管这些监控可以通过 Python 工具实现但 Experiments 提供了简化的运行参数和性能跟踪、索引功能以及计算资源的复现。为了设置实验我参考了AWS提供的示例。SAC 和 GP 算法首先在本地 Jupyter 笔记本中进行评估然后上传到 git 仓库。每个算法都有自己的仓库和 Sagemaker 笔记本。运行参数被存储以帮助分类运行并跟踪不同实验设置的性能。我们的运行度量奖励和状态向量是我们希望用来比较两种算法的因变量。Experiments 自动记录 CPU 时间和迭代次数作为自变量。通过这些实验我们可以将冠军算法——像 SAC 这样的成熟且经过充分开发的强化学习算法——与挑战者算法进行比较后者是一种不为人知的方法由一位没有正式强化学习或 Python 培训的业余编码员编写。这个实验将为开发复杂非线性系统控制器的不同方法提供见解。在下一部分我们将回顾并讨论结果及潜在的后续工作。第一个实验是默认的 Pendulum gymnasium在这个实验中算法尝试确定正确的扭矩以保持钟摆倒立。它在固定时间后结束并根据钟摆距离竖直的程度给予负奖励。在 Sagemaker 实验运行之前SAC 和 GP 算法已经在我的本地机器上运行以验证收敛性。在 Experiments 中运行可以更好地追踪可比较的计算时间。以下是计算时间与每次迭代平均奖励的结果https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/2df0567b0b40db3641e835c194b25f03.png作者提供https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/d1d598103d8a6bbf64d158fd729d2f97.png作者提供我们看到尽管 GP 算法相对不够成熟但它在计算需求上远低于 SAC 算法。通过本地运行至完成SAC 似乎需要大约 40 万次迭代才能收敛耗时数小时。本地实例化被编程为在整个训练过程中记录 SAC 的进展有趣的是SAC 似乎先学会了如何让摆锤移动到顶端然后学会了如何保持摆锤静止最终将这两者结合起来这可以解释奖励的下降期即 SAC 学习保持摆锤稳定的阶段。通过 GP我们看到奖励以单调递增的方式逐步提升。这是因为最优的函数树始终被保留所以最好的奖励保持稳定直到计算出更好的控制器。第二个实验是将高斯噪声0, 0.1添加到状态测量中。我们看到的结果与无噪声的情况相似只是收敛时间较长。结果如下所示同样GP 优于 SAC。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/37c65ede7ac73ece0b7c6e9512a4e9b1.png作者提供https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/aba7ad80a4209ba235a59b35166022d7.png作者提供在这两种情况下我们看到 GP 比 SAC 表现得更快如前面的例子所示SAC 确实在本地收敛只是我不想为计算时间支付 AWS 费用。然而正如大家无疑已经注意到的这只是一个非常基础的比较既涉及机器学习也涉及物理系统。例如超参数调优可能会导致不同的结果。尽管如此这对于该候选算法来说是一个有前景的开始表明它值得进一步研究。从长远来看我认为 GP 可能比基于神经网络的方法如 SAC提供几个优势· 可解释性。尽管 GP 找到的方程可能很复杂但它是透明的。熟练者可以简化方程帮助提供对已确定解的物理理解这对于确定适用区域和增加控制信任度非常有帮助。尽管可解释性是一个活跃的研究领域但神经网络依然面临这一挑战。· 信息化机器学习Informed ML。遗传规划GP使得将系统分析的见解更容易应用。例如如果已知系统具有正弦波行为GP 算法可以调整以尝试更多的正弦解。或者如果已知一个类似或简化系统的解那么可以将该解预先植入算法中。· 稳定性。通过简单的保障措施如数学有效性和限制绝对值的增加GP 方法将保持稳定。只要每一代保留最优解解决方案就会收敛尽管收敛的时间界限无法保证。常见的强化学习中的神经网络方法并没有这样的保证。· 发展机会。遗传编程相对不成熟。这里使用的 SAC 实现是多种应用实现中的一种而神经网络已经受益于大量努力以提高性能。遗传编程没有享受这种优化我的实现是围绕函数构建的而非效率。尽管如此它在与 SAC 对比时表现良好来自更专业开发者的进一步改进可能会带来显著的效率提升。· 并行性和模块化。与神经网络相比单独的遗传编程方程较为简单计算成本来自于在环境中多次运行而不是环境运行和神经网络的反向传播。将不同的遗传编程方程树分配到不同的处理器上可以大大提高计算速度。然而神经网络方法因其众多优势被广泛使用· 范围。神经网络是通用函数逼近器遗传编程仅限于在函数树中定义的项。因此基于神经网络的方法能够涵盖更广泛和复杂的情况。我不愿意尝试用遗传编程来玩《星际争霸》或驾驶汽车。· 跟踪。遗传编程是随机搜索的精细版本正如实验中所见导致了改进的停滞。· 成熟度。由于大量不同神经网络算法的研究工作现有的经过优化的神经网络模型更容易应用于问题并具有较高的计算效率。从机器学习的角度来看我们仅仅触及了这些算法的表面。需要考虑的一些后续工作包括· 超参数调优。· 控制器简化例如惩罚遗传编程中控制输入项数的奖励。· 控制器效率例如从奖励中扣除控制输入的大小。· 如上所述遗传编程的监控与算法改进。从物理学角度来看本实验作为进入更真实场景的起点。更复杂的场景可能会显示出神经网络方法赶上或超过遗传编程GP。可能的后续工作包括· 更复杂的动力学例如范德波尔方程或更高维度。· 有限可观察性而非完全状态可观察性。· 偏微分方程系统以及优化控制器位置和输入。[1] E. Bilgin, 《掌握强化学习与 Python使用强化学习技术和最佳实践构建下一代自学习模型》2020Packit 出版社[2] T Duriez, S. Brunton, B. Noack, 《机器学习控制——驯服非线性动力学与湍流》2017Spring 国际出版公司

相关文章:

物理动力学系统的强化学习:一种替代方法

原文:towardsdatascience.com/rl-for-physical-dynamical-systems-an-alternative-approach-8e2269dc1e79?sourcecollection_archive---------1-----------------------#2024-07-28 重新引入遗传算法并与神经网络进行比较 https://medium.com/retter_42511?sourc…...

全志Tiger-ISP调试工具安装与使用全攻略

1. 全志Tiger-ISP调试工具入门指南 第一次接触全志Tiger-ISP调试工具时,我也是一头雾水。这个工具主要用于图像信号处理器(ISP)的调试和优化,是开发智能摄像头、行车记录仪等视觉设备的必备利器。简单来说,它能让你像调色师一样精细调整图像的…...

智慧树自动学习助手:三分钟实现高效网课学习的完整指南

智慧树自动学习助手:三分钟实现高效网课学习的完整指南 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台冗长的网课视频而烦恼吗&#xff1…...

如何通过Winhance实现Windows系统全方位优化?从入门到精通的完整指南

如何通过Winhance实现Windows系统全方位优化?从入门到精通的完整指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/…...

惠普tank 2606,开机报错 ER-08 ,加了碳粉还是报错ER08,黄灯闪烁成像鼓接近寿命期限,别被维修店坑了,这个软件专门维修这个错误,软件运行一下2分钟搞好。

下载地址:链接:https://pan.baidu.com/s/1J7PN4m4fbIzku9DqBFg_nw?pwd0000 提取码:0000 备用下载:下载 惠普tank 2606系列,tank1005系列,打印机提示错误代码 er-08 ,加了粉还是报错er08,提示没粉,闪黄灯…...

如何用MouseClick鼠标连点器实现高效自动化点击:从游戏到办公的全场景指南

如何用MouseClick鼠标连点器实现高效自动化点击:从游戏到办公的全场景指南 【免费下载链接】MouseClick 🖱️ MouseClick 🖱️ 是一款功能强大的鼠标连点器和管理工具,采用 QT Widget 开发 ,具备跨平台兼容性 。软件界…...

【微信小程序更新机制全解析】原理、实践与最佳实践

前言 微信小程序的更新机制,是连接开发者版本迭代与用户体验的核心桥梁。它设计的核心逻辑是**“自动无感更新为主,手动强制更新为辅”,在保证小程序快速启动、稳定可用**的前提下,尽可能让用户使用最新版本;同时为开…...

Cursor AI模型切换指南:从ChatGPT换到Gemini,这几步千万别做错

Cursor AI模型切换指南:从ChatGPT换到Gemini,这几步千万别做错 在当今快速迭代的AI开发领域,多模型协作已成为提升生产力的关键策略。作为一款深度整合AI能力的智能编辑器,Cursor允许开发者在不同AI模型间灵活切换,但…...

Figma全中文界面解决方案:从安装到精通的实战指南

Figma全中文界面解决方案:从安装到精通的实战指南 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 作为一名中文设计师,你是否曾因Figma全英文界面而在操作时频繁…...

【实战篇】Nginx核心配置与性能优化全攻略

1. Nginx基础配置快速上手 第一次接触Nginx时,我被它简洁的配置文件结构惊艳到了。相比其他Web服务器动辄几百行的配置,Nginx的配置文件就像一份精心设计的菜谱,每个指令都恰到好处。先带大家看看最基本的配置结构: # 全局块 user…...

干农活总腰疼?农民朋友别再硬扛腰突

经常弯腰种地、扛重物、干农活,很多农民朋友常年腰疼,总觉得累点正常,咬牙硬扛。 殊不知慢慢发展成腰间盘突出,坐骨神经疼、腿麻无力,后期连农活都干不了。乱贴偏方、盲目正骨,还容易加重病情。我院 30 多年…...

Using Vulkan -- Pipeline Dynamic State

概述创建图形VkPipeline对象时,设置状态的逻辑流程如下:// 以视口状态为例 VkViewport viewport {0.0, 0.0, 32.0, 32.0, 0.0, 1.0};// 设置状态值 VkPipelineViewportStateCreateInfo viewportStateCreateInfo; viewportStateCreateInfo.pViewports &…...

GitHub OCaml项目:C++后端突破与代码编译新变革

【导语:GitHub的OCaml项目迎来重要升级,开发者stedolan提交补丁为ocamlc添加新的C后端,改进运行时和FFI使用的非增量C代码,这一突破将为代码编译带来新的可能。】OCaml新添C后端:代码编译新途径开发者stedolan希望将2次…...

MegSpot专业视觉分析工具:从基础操作到高级应用全指南

MegSpot专业视觉分析工具:从基础操作到高级应用全指南 【免费下载链接】MegSpot MegSpot是一款高效、专业、跨平台的图片&视频对比应用 项目地址: https://gitcode.com/gh_mirrors/me/MegSpot 在数字媒体创作与分析领域,如何高效对比图片细节…...

洪城寻缘角

洪城寻缘角 南昌人的免费寻缘平台 不必再奔波相亲角,不必被收费套路困扰 洪城寻缘角,全功能永久免费 无需注册即可登记,一键发布个人资料 支持多条件精准筛选,快速匹配同频有缘人 覆盖南昌全城单身,真实、高效、安心…...

Android BSP 开发修改轨迹

一、 Android BSP 整体开发修改轨迹图Android BSP 软件架构 │ ├── 【第1层:Bootloader 引导层】 │ ├── 1.1 一级引导程序(Primary Bootloader) │ │ ├── ROM Code(芯片固化) │ │ └── SPL /…...

5步打造高效工作流:Super Productivity开源工具新手实战指南

5步打造高效工作流:Super Productivity开源工具新手实战指南 【免费下载链接】super-productivity Super Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitL…...

AFE模拟器设计实战:基于ADI系列芯片的ISOSPI菊花链通信仿真

1. ISOSPI菊花链通信的基础原理 在汽车和储能BMS系统中,电池管理芯片(AFE)之间的可靠通信至关重要。ADI公司的ADBMS系列和LTC系列芯片广泛采用ISOSPI(隔离SPI)菊花链拓扑结构,这种设计既能保证通信速率,又能实现高压隔离。我刚开始接触这个技…...

保姆级教程:用Python+Socket实现西门子CNC产量数据自动采集(附避坑指南)

PythonSocket实现西门子CNC产量数据自动化采集实战指南 在工业4.0时代,生产数据的实时采集与分析已成为智能制造的核心环节。对于使用西门子数控系统(如828D、840DSL等)的制造企业而言,如何绕过复杂的授权流程,通过编程…...

glTF Pipeline完全攻略:高效3D模型优化解决方案

glTF Pipeline完全攻略:高效3D模型优化解决方案 【免费下载链接】gltf-pipeline Content pipeline tools for optimizing glTF assets. :globe_with_meridians: 项目地址: https://gitcode.com/gh_mirrors/gl/gltf-pipeline 3D模型加载缓慢、文件体积过大&am…...

3个跨设备方案:Playnite游戏库的移动化管理创新方法

3个跨设备方案:Playnite游戏库的移动化管理创新方法 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址: https…...

Python 3.13.7(发布于 2025 年 8 月 14 日)在 Windows 平台上的官方下载选项列表

Python 3.13.7(发布于 2025 年 8 月 14 日)在 Windows 平台上的官方下载选项列表,包含多种架构(x64、x86/32-bit、ARM64)和两种分发形式: Windows installer:标准图形化安装程序(含…...

免费开源的质谱分析革新工具:从数据到发现的完整路径

免费开源的质谱分析革新工具:从数据到发现的完整路径 【免费下载链接】OpenMS The codebase of the OpenMS project 项目地址: https://gitcode.com/gh_mirrors/op/OpenMS OpenMS作为一款免费开源的质谱数据分析平台,为科研人员提供了从原始质谱数…...

5分钟搭建原神私服:KCN-GenshinServer终极指南

5分钟搭建原神私服:KCN-GenshinServer终极指南 【免费下载链接】KCN-GenshinServer 基于GC制作的原神一键GUI多功能服务端。 项目地址: https://gitcode.com/gh_mirrors/kc/KCN-GenshinServer 还在为复杂的命令行配置而头疼吗?想要轻松拥有自己的…...

GIMP Resynthesizer完整教程:掌握纹理合成与图像修复的核心技术

GIMP Resynthesizer完整教程:掌握纹理合成与图像修复的核心技术 【免费下载链接】resynthesizer Suite of gimp plugins for texture synthesis 项目地址: https://gitcode.com/gh_mirrors/re/resynthesizer 当你面对一张需要修复的老照片,或者需…...

低成本自动化方案:OpenClaw+自部署千问3.5-27B替代ChatGPT API调用

低成本自动化方案:OpenClaw自部署千问3.5-27B替代ChatGPT API调用 1. 为什么选择本地模型OpenClaw组合 去年我用ChatGPT API开发自动化脚本时,发现一个致命问题:当任务需要连续调用多个API时(比如先搜索资料再整理成报告&#x…...

前端CSS样式详细笔记

文章目录一、CSS基础概念1. 什么是CSS2. CSS三大核心特性3. CSS基本语法结构二、CSS引入方式三、CSS选择器详解1. 基础选择器2. 组合选择器3. 属性选择器4. 伪类与伪元素四、选择器优先级规则1. 优先级计算方法2. 优先级实战示例3. 优先级注意事项五、CSS盒模型1. 盒模型组成2.…...

Python使用DrissionPage实现自动化处理的简单入门指南

在Python自动化领域,Selenium和Requests是两个常用工具,但各有局限。DrissionPage巧妙结合了两者优势,既能用浏览器自动化处理动态页面,又能通过HTTP请求提升效率。本文将带你从零开始,用10分钟掌握DrissionPage的核心…...

像素剧本圣殿企业应用:中小型内容工作室剧本量产工作流搭建

像素剧本圣殿企业应用:中小型内容工作室剧本量产工作流搭建 1. 剧本创作新范式 在内容创作行业,剧本开发一直是耗时费力的核心环节。传统编剧流程中,一个完整剧本从构思到成稿往往需要数周甚至数月时间,这对于资源有限的中小型工…...

Python包管理工具之uv的使用详细指南

uv 是一个新兴的 Python 包管理工具,它旨在提供比 pip 和 poetry 更快、更现代的依赖管理体验。uv 由 Charles Murphy 开发,基于 Rust 构建,具有极高的性能和兼容性,支持标准的 requirements.txt 文件以及 pyproject.toml 中的依赖…...