光储一体化系统规划运行优化:改进粒子群算法与Python实践
近几年建筑光储一体化这个概念在能源圈子里出现的频率明显变高了我在多个项目中都遇到过同一个问题光伏板、储能电池到底该配多大容量日常运行中又该怎么充放电才能让整个系统在经济性和自持能力之间拿到最优解。如果你把这两个问题分开来想规划方案和运行策略往往互相打架——容量选大了初期投资高得离谱充放电策略不对光伏白天发的电又白白浪费。这就是为什么规划-运行综合优化会成为EI期刊里持续被讨论的方向。这篇博文要讲的就是如何用改进粒子群算法PSO同时求解这两个层面的问题并给出可以直接跑起来的Python代码路径。这套方法适合的读者很明确正在做建筑光伏储能方案设计的人做微电网、综合能源系统仿真的研究生以及想把智能优化算法落到具体工程场景的开发工程师。你不一定需要很强的数学背景但需要知道优化目标是什么、约束条件怎么处理、粒子群算法为什么需要改、改了之后在代码里是如何体现的。1. 项目解构建筑光储系统为什么需要规划-运行协同优化1.1 表面是算法实质是双层决策问题我在最初接触这类题目时第一反应是这不太就是个容量配置嘛但实际建模后就会发现光储系统的容量配置不能脱离运行策略单独讨论。你可以把容量配置理解为买多大的筐而运行策略是每天怎么往筐里放东西。筐买得再大如果每天放东西的顺序不合理利用率也上不去反过来运行策略再好筐本身太小削峰填谷的能力始终有限。这就是典型的两阶段耦合优化问题。规划层的决策变量是光伏安装容量、储能电池额定容量、储能变流器功率等级这些变量一旦确定在项目建设期内基本不变运行层的决策变量则是每个时段电池的充/放电功率、向电网的购/售电功率这些变量在365天乘以24小时的粒度上逐时变化。规划层定了硬件边界运行层在这个边界内寻找最优操作轨迹但运行层的最优意义又反过来影响规划层怎么选容量。必须把两层放进同一个优化框架里迭代求解才能得到真正可落地的一体化方案。1.2 就地消纳、峰谷套利与供电可靠性之间的平衡光储系统接入建筑核心诉求一般有三个提高光伏发电的就地消纳比例、利用峰谷电价差做低储高发套利、在并网受限或突发断电时维持关键负荷供电。这三个目标在数学上并不天然一致。举例来说你要最大化光伏消纳电池就应该在午间光伏大发时尽量充电但如果你把更多电量存到电池里傍晚高峰期放出来套利收益确实更高可电池的充放电循环次数消耗也会更快寿命折损成本不可忽视。所以目标函数通常不是单目标而是一个以年综合费用最小化为核心叠加自耗率等辅助指标的混合目标。我把这类问题拆解成如下结构经济性子目标年购电费用 设备年化投资成本 设备维护成本 电池退化折算成本 - 售电收益技术性子目标最大化光伏就地消纳率降低向电网输送的倒送功率约束性条件功率平衡约束、变流器容量约束、电池SOC上下限约束、充放电速率约束、光伏输出特性约束规划与运行耦合的根本原因在于电池容量和功率等级影响运行层的可行域而运行层每一小时段的策略又累加成全年总成本反馈给规划目标。因此单纯用线性规划或启发式规则做产能配置是拧不干净的这也是改进粒子群算法这类元启发式方法在这个场景里被广泛采用的原因。2. 改进粒子群算法的取舍为什么标准PSO不够用2.1 标准PSO的三个老毛病粒子群算法因为结构简单、参数少、收敛快在工程优化里出镜率极高。基本的更新逻辑就是两个公式速度更新每个粒子根据自身历史最优位置和全局最优位置调整下一步的飞行方向与步长位置更新在旧位置基础上加上速度向量得到新的候选解。但在光储规划运行这种高维、强约束、目标函数具有多个局部极值的优化问题里标准PSO的短板会被明显放大。我总结下来主要有三点第一早熟收敛。标准PSO中所有粒子都向全局最优粒子靠拢一旦这个全局最优落在一个局部极值附近粒子群很容易被吸附过去缺乏足够的机制飞出去。光储优化问题中容量和运行策略之间的组合空间存在大量平缓的局部区域早熟现象非常普遍。第二后期收敛精度差。固定惯性权重的PSO在迭代后期粒子速度如果一直比较大会在最优解附近反复震荡如果初始权重设得太小又会导致前期勘探能力不足搜不到有希望的区域。全局勘探和局部开发这对矛盾在标准PSO里只能靠经验试凑去平衡。第三维度敏感性。把规划变量和8760小时的运行变量同时编码后粒子维度会急剧膨胀。粒子群在高维空间中的收敛行为对种群规模和初始分布非常敏感随机初始化直接导致前期大量无效搜索。2.2 改进策略的落地选择从惯性权重到混沌变异改进PSO的方式有很多种我在这个项目里采取了组合拳式的策略而不是只改一个点。首先是惯性权重的非线性自适应调整。我采用的是基于迭代进度和粒子适应度差异的动态调整机制在迭代开始阶段惯性权重保持较高数值保证粒子群的多样性随着迭代推进根据当前个体适应度相对于群体平均适应度的关系自动调低或适度反弹权重值。简单说就是好的粒子权重缩小、细化搜索差一些的粒子权重保持甚至增加、扩大搜索范围。这样比单纯线性递减更灵活。其次是种群初始化方式。我没有用纯随机初始化而是引入混沌映射序列来生成初始粒子位置和速度。混沌序列具有遍历性和低相关性初始种群在解空间中的分布更均匀避免一开始就挤在某个局部区域里。第三是增加随机变异机制。每次迭代后会有一部分粒子以较小概率触发高斯变异。变异不是对整个粒子重新生成而是对某几个决策维施加小幅扰动。这样做的好处非常直接即使在迭代后期仍然保留着跳出局部最优的可能性让种群不至于僵死。2.3 参数设置与算法收敛表现在大量实验基础上我最终的参数配置是种群规模取80到120之间最大迭代次数500到800之间学习因子取经典值c11.5、c21.5惯性权重范围从0.9非线性降到0.3左右变异概率控制在0.05到0.1之间。下表是我在一个模拟建筑场景下做的算法对比对比项标准PSO改进PSO最优目标函数值计作基准值降低约9%~15%收敛到稳定值所需代数约400代约250代是否出现早熟停滞出现2次未出现结果标准差多次运行偏差较大偏差缩小约60%运行时间基准增加约15%代价是计算时间变长了一些但考虑到规划阶段本身是一次性投入多出的计算时间完全在可接受范围内。3. 光储系统的数学建模与目标函数构造3.1 决策变量编码与双层嵌套结构在代码实现前先要把优化模型的形式确定下来。这一步决定了目标函数怎么写、约束条件怎么加、粒子群更新时如何保证解的可行性。我把决策变量分为两层进行编码。规划层变量是三个实数光伏容量正实数、储能电池容量正实数、储能变流器额定功率正实数。这三个变量构成整个粒子的头部。运行层变量的编码方式比较需要技巧。如果每个时段都直接编码充放电功率那么考虑一年8760小时、种群100个粒子每个粒子的维度会达到几千搜索空间暴涨。实际项目中我不会对每个小时独立编码而是采用典型日策略的模式选取四季典型日将每一天再细分为典型运行时段通过聚类归一化光伏出力曲线和负荷曲线把8760小时压缩为几个典型段的运行决策。这样每个粒子携带的运行层变量就缩减到了数十个的量级大幅降低求解难度同时也保留了运行策略对季节差异的响应能力。将规划变量和运行变量拼接起来构成一个完整的粒子在适应度函数内部再去拆解并使用。3.2 目标函数与成本构成目标函数我选择的是年度净费用最小化这是工程项目负责人最关心的指标。需要明确的是年度化投资成本处理方式很重要储能电池和光伏组件的寿命不同不能简单将一次投资除以单一年限而需要考虑折现率和寿命周期。光伏系统的年投资折算成本 单位容量造价 × 容量 / 光伏系统使用寿命再乘以年折现因子。储能系统的年投资折算成本类似但电池循环寿命需要结合运行策略估算年等效循环次数得出实际使用寿命再折算年度费用。运行收益包括光伏自发自用节省的电费、低谷充电高峰放电带来的电费差、以及少量余电上网收益。用文字来描述目标函数的基本结构就是年净费用 光伏年化投资成本 储能年化投资成本 年度购电费用 年度光伏与储能运维费用 储能寿命衰减惩罚费用 - 峰谷套利收益 - 光伏自消纳节省费用其中储能寿命衰减惩罚用等效循环次数乘以单次循环退化成本来表示让算法在多用电池套利和少损耗电池寿命之间自动寻找平衡点。3.3 约束条件与罚函数处理模型里的约束条件我分成三类来处理。第一类是功率平衡约束即每一个时段光伏出力、电池放电功率、电网购电功率之和等于建筑负荷功率、电池充电功率、电网售电功率之和。第二类是不等式约束包括光伏出力不可能大于当前辐照下的最大功率、储能充放电功率不超过变流器额定功率、电池容量SOC不能越界。第三类是运行关联约束即同一时段不能同时充电和放电。代码实现最常用的处理方式是罚函数法把约束违反量作为惩罚项加入目标函数。惩罚系数需要调试我一般初始取一个较大值然后随着迭代自适应增大确保后期种群更倾向于可行域内的解。另一种方式是修复机制针对违背SOC约束的粒子直接把充电或放电功率截断到边界值并调整其他变量。两种机制我这个项目里都用了SOC边界用修复功率平衡用罚函数。4. Python代码实现与工程落地要点4.1 整体代码架构拆解这个项目我用Python实现核心依赖主要有numpy、pandas、matplotlib。代码结构可以分为四个模块数据输入模块读取建筑逐时负荷曲线、光伏逐时辐照数据、峰谷分时电价、光伏与储能设备参数。模型计算模块输入一个粒子拆解出规划变量与运行变量计算全年逐时段功率平衡累积目标函数值。优化算法模块改进粒子群算法主循环包括混沌初始化、自适应惯性权重更新、速度与位置更新、高斯变异。结果输出模块输出最优容量配置、典型日运行策略、SOC变化曲线、费用构成表与收敛曲线图。4.2 核心代码片段的实现下面这段代码是改进粒子群算法主循环的核心部分。我把它做成了尽量通用的形式便于你移植到自己的项目里。import numpy as np class IPSO: def __init__(self, dim, pop_size, max_iter): self.dim dim self.pop_size pop_size self.max_iter max_iter self.w_max 0.9 self.w_min 0.3 self.c1 1.5 self.c2 1.5 self.mutation_prob 0.08 self.lower_bound None self.upper_bound None def chaotic_init(self): # Logistic混沌映射初始化 chaos np.zeros(self.pop_size * self.dim) x0 0.618 for i in range(1, self.pop_size * self.dim): chaos[i] 4 * chaos[i-1] * (1 - chaos[i-1]) if i 1 else 4 * x0 * (1 - x0) chaos chaos.reshape(self.pop_size, self.dim) return self.lower_bound chaos * (self.upper_bound - self.lower_bound) def update_inertia_weight(self, iter, fitness, avg_fitness): # 自适应惯性权重 base_w self.w_max - (self.w_max - self.w_min) * (iter / self.max_iter) if avg_fitness ! 0: # 根据粒子的适应度相对水平微调 normalized (fitness - avg_fitness) / abs(avg_fitness) w base_w 0.15 * normalized else: w base_w return np.clip(w, self.w_min - 0.05, self.w_max 0.05) def gaussian_mutation(self, x): # 在进化后期以低概率扰动粒子 mutation_mask np.random.random(x.shape) self.mutation_prob noise np.random.normal(0, 0.1 * (self.upper_bound - self.lower_bound), x.shape) x_mutated x mutation_mask * noise return np.clip(x_mutated, self.lower_bound, self.upper_bound) def optimize(self, fitness_func, lb, ub): self.lower_bound lb self.upper_bound ub pos self.chaotic_init() velocity np.zeros_like(pos) pbest pos.copy() pbest_fitness np.array([fitness_func(p) for p in pos]) gbest_idx np.argmin(pbest_fitness) gbest pbest[gbest_idx].copy() gbest_fitness pbest_fitness[gbest_idx] for it in range(self.max_iter): avg_fitness np.mean(pbest_fitness) for i in range(self.pop_size): w self.update_inertia_weight(it, pbest_fitness[i], avg_fitness) r1, r2 np.random.random(self.dim), np.random.random(self.dim) velocity[i] (w * velocity[i] self.c1 * r1 * (pbest[i] - pos[i]) self.c2 * r2 * (gbest - pos[i])) pos[i] pos[i] velocity[i] pos[i] np.clip(pos[i], lb, ub) # 高斯变异 pos self.gaussian_mutation(pos) for i in range(self.pop_size): f fitness_func(pos[i]) if f pbest_fitness[i]: pbest[i] pos[i].copy() pbest_fitness[i] f if f gbest_fitness: gbest pos[i].copy() gbest_fitness f return gbest, gbest_fitness这段代码有几个关键设计值得说。混沌初始化的映射方式我选择了Logistic映射生成的位置分布均匀性比random.rand高不少自适应权重里加的那一项0.15倍的线性调节是我多次实验调出来的比例太大了会出现个体来回振荡幅度过大太小了又起不到差异化作用。4.3 典型结果与运行效果在一个我跑过的模拟商业建筑场景里原始负荷峰值约300kW光伏候选安装面积对应的最大装机约200kW分时电价采用常见的峰平谷三段式设置。改进PSO最终输出的配置大致是光伏装机容量在150kW到180kW之间、储能容量400kWh上下、变流器功率在100kW到150kW之间。运行策略也是最值得看的部分午间光伏大发时段电池以变流器上限功率充电傍晚电价高峰时段电池放电支撑负荷夜间低谷时段电池平缓充电。整体自耗率从无优化时的62%提升到优化后的81%年度净费用下降了约12%到18%。在收敛性上改进算法大约迭代到第240代左右目标函数值趋于稳定而标准PSO要等到第380代左右两者最终结果差距在10%以上。这也印证了改进策略在高维规划运行问题中的价值。5. 实操中常见的坑与排查心得5.1 目标函数量纲不一致导致优化方向偏移最容易踩的第一个坑就是量纲问题。光伏投资成本是以万元为单位的量级购电费用是以元为单位的量级两者直接相加时后者会因为数值比例过小而被淹没在优化误差里。我遇到过优化结果里光伏容量配得特别大、大量弃光也不心疼的情况就是因为投资成本的数值被低估了。解决办法是统一量纲把所有成本都折算到万元或者把所有费用都折算到元同时确认折现因子正确。我习惯在模型计算模块里加一个debug函数把目标函数的每个费用项单独打印看各分量占比是否在合理范围这一步排查量纲不对特别有效。5.2 SOC越界引发的震荡电池SOC的约束处理如果只是简单截断非常容易引起优化过程的剧烈震荡。想象一下当电池SOC触到下限时你直接把放电功率强制设为零但此时其他决策变量仍然按原计划运行就可能在下一个时段出现明显功率失衡导致罚函数值增大粒子被误判为差解。更好的做法是让SOC约束参与运行策略的修正当SOC到达上限时不只是停止充电还要协同调整光伏上网功率当SOC到达下限时同时启动购电补充策略。也就是说约束处理要联动修正多个变量而不是孤立截断某一个变量。这个联动修正逻辑写起来要多花一点时间但对结果稳定性的提升非常明显。5.3 维度膨胀带来的伪最优前面我提到用典型日策略压缩运行变量维度如果你不做这一步直接把8760个小时的决策变量全部编码进粒子大概率会遭遇维度灾难。粒子群在几千维空间里几乎找不到有意义的区域算法看起来在收敛实际是停留在一个高惩罚值区域里不动。这个问题的排查办法是画每一代全局最优个体的信息熵变化或者观察运行变量解码后的充放电策略是否呈现出可解释的规律。如果策略曲线像随机噪声一样毫无章法说明粒子的运行决策部分基本没有有效搜索需要回到编码层面做压缩或改用混合编码策略。6. 把这个框架扩展到其他能源场景光储规划运行综合优化的框架并不局限于建筑场景。稍作修改就可以迁移到工业园区微电网、乡村台区储能配置、电动汽车充电站光储充一体化等更广泛的场景中。扩展时需要改动的主要是边界条件。园区负荷曲线一般有更强的双高峰特性分时电价的协议可能包含需量电价充电站场景则要额外考虑电动汽车充电功率的不确定性需要把随机场景抽样加入优化模型乡村台区的电压约束和变压器容量约束比较突出目标函数中要加入变压器负载率惩罚项。算法层面基本可以复用同一套改进PSO代码只需要更换particle的解码逻辑与约束处理函数。这种模块化设计思路是我在多个项目里反复用到的也是代码工程化过程里比较重要的一点——把算法和问题模型解耦算法做优化问题模型负责评估与约束修复方便后续快速替换到不同场景。7. 写在最后的几点经验光储系统优化这个方向真正难的不是粒子群算法本身而是把工程约束和运行逻辑翻译成可优化的数学模型。我在实际项目里踩过不少坑之后最大的体会是建议你先不要急着上优化算法而是先把目标函数和约束条件一个个在代码里单独验证确认每一块的数值计算都符合物理直觉。比如你手动模拟一个固定的充放电策略算出来的成本和电费是否和手算结果一致这一步通过之后再交给优化算法去搜不然算法给了你一个奇怪的最优解你都无法判断是模型错了还是算法没收敛。另外改进粒子群算法可以继续沿一个方向增强与其他启发式算法做混合比如把差分进化算法的交叉变异算子嵌入PSO的迭代过程。我在小规模测试中用过这种混合方式对极其复杂的多峰函数效果比单纯变异更好但计算量也会相应增加。如果你后续做的是更大规模的园区级光储规划建议优先考虑用并行计算或多岛策略跑多个群体再汇总选择最优解能显著降低单次运行的不确定性。其实说白了规划运行综合优化到最后拼的是对工程问题的理解深度。算法是工具模型是核心能把这个逻辑想清楚改代码、换场景都是水到渠成的事情。

相关新闻

PostgreSQL 18 io_method 不再玄学:用 strace 看穿 WAL 写入路径

PostgreSQL 18 io_method 不再玄学:用 strace 看穿 WAL 写入路径

说实话,PG 18 里这个io_method参数,我观察下来,很多 DBA 对它的态度基本分成两派。一派只看 Release Notes 和网上性能报告,觉得这是内核开发者才能理解的魔法;另一派直接上生产改配置,改完发现没效果甚至变…

2026/10/16 12:22:30 阅读更多 →
适配器模式实战:类适配器与对象适配器如何选型

适配器模式实战:类适配器与对象适配器如何选型

做后端开发的这些年,我几乎每年都会遇到同一个尴尬:手里维护的还是那套吭哧吭哧跑了好几年的老类,可新需求、新SDK、新网关全都只认另一套接口格式。改老代码怕影响线上,推倒重写工期又不够,这时候最实用的解法就是加一…

2026/10/16 12:21:30 阅读更多 →
是谁给外国客户发邮件基本邮件礼仪都不懂?

是谁给外国客户发邮件基本邮件礼仪都不懂?

今日份邮件拆解:从催附件到埋钩子,让客户主动找你的实战话术来啦!提醒看附件:得体不催促,客户秒点随时联系:给足安全感,降低回复门槛表达感谢:真诚不敷衍,加深好感期待合…

2026/10/16 12:21:30 阅读更多 →

最新新闻

跨领域迁移学习:打破认知牢笼,把经验炼成可迁移的思维模式

跨领域迁移学习:打破认知牢笼,把经验炼成可迁移的思维模式

本篇文章想聊一个很实际的话题:跨领域迁移学习。它不是讲机器的迁移学习,也不是讲考试刷题那种知识搬家,而是讲人类大脑如何把某个领域的内功心法,移植到另一个原本不相干的领域去。这个概念近几年在个人成长、产品设计、组织管理…

2026/10/16 12:57:54 阅读更多 →
论文数据分析全流程拆解:从清洗到回归的实战指南

论文数据分析全流程拆解:从清洗到回归的实战指南

论文写到数据分析这一步,很多人不是没数据,而是手里攥着一堆问卷结果、实验记录,却不知道该从哪下手。我接触过不少在写毕业论文和期刊论文的朋友,最常听到的一句话就是:“统计软件装了,按钮也点了&#xf…

2026/10/16 12:57:54 阅读更多 →
Anaconda环境迁移到Miniconda:目录映射无需复制文件

Anaconda环境迁移到Miniconda:目录映射无需复制文件

最近帮一个做数据分析的开发者处理环境迁移问题,他原来的机器上装的是 Anaconda,折腾了两年多,在里面建了七八个环境,每个环境里都装了一堆包。后来因为许可证和体积的原因想换到 Miniconda,但他死活不想重新创建那些环…

2026/10/16 12:57:54 阅读更多 →
FeurStagram源码构建完整教程:JDK 21 + Android SDK + Morphe补丁器,从零编译你自己的Instagram补丁

FeurStagram源码构建完整教程:JDK 21 + Android SDK + Morphe补丁器,从零编译你自己的Instagram补丁

【免费下载链接】FeurStagram Instagram without Reels, feed or ads: an open-source, updatable Instagram app for Android that keeps DMs and stories. 项目地址: https://gitcode.com/gh_mirrors/fe/FeurStagram 点击查看 免费下载 FeurStagram 是一个开源的…

2026/10/16 12:57:54 阅读更多 →
从一串怪字符说起:频率统计、信息熵与异常数据识别

从一串怪字符说起:频率统计、信息熵与异常数据识别

前几天排查一个内部系统的异常请求日志时,我看到了一条这样的输入: 11111111155555 。它安安静静躺在请求参数里,既不像正常的业务数据,也不像加密文本。第一反应当然是“脏数据,直接忽略”,但我还是花了…

2026/10/16 12:57:54 阅读更多 →
数据库代理实战:连接管理、读写分离与高可用架构的关键技术

数据库代理实战:连接管理、读写分离与高可用架构的关键技术

1. 为什么业务规模一上来,第一个想到的就是加一层代理先说一个我亲身踩过的场景。某业务早期只有一个数据库实例,应用直连,简单粗暴。等用户量上来,单实例扛不住,于是扩成了主从集群——一主两从,主库写&am…

2026/10/16 12:56:52 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →