ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

NSDBO多目标蜣螂优化算法在微电网优化调度中的应用

NSDBO多目标蜣螂优化算法在微电网优化调度中的应用 1. 从微电网调度的真实困境说起为什么我盯上了NSDBO做微电网规划或者运行调度的人几乎都绕不开这样一个场景风电场和光伏电站的出力忽高忽低柴油机想省油就得少发储能电池既要平抑波动又要控制循环寿命负荷侧还有峰谷电价在牵制购电策略。这时候你面对的不是一个“最优解”而是一组互相打架的目标——运行成本要降碳排放要少电压质量要保证功率波动还得控制。把这几个指标塞进同一个优化模型里传统的办法是给每个目标加一个权重把它们合成一个单目标函数然后扔给求解器去算。但问题马上来了权重凭什么这么定不同决策者对经济和环保的偏好完全不同权重一变最优解就跟着跑前面的计算基本等于白做。所以这几年做微电网多目标优化调度的人几乎清一色转向了多目标进化算法。这类算法的好处是一次运行能返回一整个Pareto前沿把“成本最低方案”到“排放最少方案”的中间所有折中方案都摆在你面前让调度人员根据实际情况选。早几年大家习惯用NSGA-II、MOPSO、多目标粒子群这类经典算法效果不能说差但收敛速度和前沿分布均匀性在这些复杂的微电网模型里还是有点吃力。尤其是微电网模型涉及非线性约束、混合整数变量、时序耦合的储能SOC约束传统算法很容易陷入局部前沿或者跑出来的解分布一头稀一头密。我关注蜣螂优化算法DBO是从2022年底开始的当时这个算法刚提出不久单目标版的收敛速度确实惊艳在CEC测试函数上的表现能压过不少老牌算法。后来看到有人把NSGA-II的非支配排序机制融合进去提出了多目标版本的NSDBONon-dominated Sorting Dung Beetle Optimizer也就是“多目标蜣螂优化算法NSDBO”。这个概念瞬间击中了我微电网调度需要收敛性强的算法去处理高维决策空间和大量约束又需要良好分布性的Pareto前沿来支撑调度决策NSDBO的底层思路恰好同时照顾这两点。于是我在一个实际微电网示范项目的仿真平台上完整复现并验证了这套方法项目标题所说的“微电网多目标优化调度的利器”确实不是噱头。这篇博文我打算把这个算法从原理到建模再到工程落地的整套心得一次讲透。如果你正在做微电网的能量管理、容量规划或者日前调度或者你只是在研究新型进化算法在电力系统里的应用这篇文章应该能帮你省下大量查资料、调代码、填坑的时间。2. 多目标蜣螂优化算法NSDBO的核心机制与设计逻辑2.1 蜣螂优化算法DBO的四种生存行为怎么变成了寻优策略要理解NSDBO得先理解它的母体DBO。DBO算法的灵感来自蜣螂的日常行为它把种群分成四类个体每类个体负责一种搜索策略这四类个体在整个迭代过程中分工协作形成了独特的全局探索和局部开发节奏。第一类是滚球蜣螂。它们在没有障碍物的情况下靠太阳或风向来导航沿着某个方向滚动粪球。放到优化问题里这对应的是“有方向性的全局搜索”——个体沿着一个指定方向持续移动寻找更优区域。当遇到障碍物时蜣螂会通过“跳舞”重新确定方向这在算法里体现为一个随机的方向修正机制防止种群陷入单一搜索路径。第二类是繁殖蜣螂它们会选择安全的地方产卵并随着迭代的推进产卵区域边界会动态收缩。这对应的是“局部精细开发”相当于在已经找到的优质区域附近做小范围搜索把解的质量进一步提高。第三类是觅食蜣螂它们会在当前最优觅食区域的附近搜索食物走的也是局部搜索的路线但与繁殖蜣螂的策略略有区别它的搜索边界变化相对更灵活。第四类是偷窃蜣螂它们会从别的蜣螂那里抢粪球在最优个体附近争夺资源这个行为在算法中表现为在最优点附近进行干扰和微调帮助算法跳出局部最优。这四类个体按一定比例分配种群每轮迭代各自按不同的位置更新公式移动再统一评估适应度。这个设计巧妙的地方在于滚球蜣螂保证了大范围的探索能力繁殖和觅食蜣螂负责在优质解周围深挖偷窃蜣螂则持续提供“扰动”避免算法过早收敛。很多对比实验都证明DBO在单目标问题上的收敛速度和寻优精度能把PSO粒子群、GWO灰狼算法这些算法甩开一截。2.2 NSDA非支配排序机制如何让单目标算法长出多目标的翅膀单目标DBO再快也只能输出一个最优解解决不了微电网调度这类多目标问题。所以NSDBO的思路很直接把NSGA-II那套经典的非支配排序和拥挤度距离机制移植到DBO的种群进化流程里。具体流程大致是这样每一轮迭代开始时DBO的四类个体各自完成位置更新生成新的子代种群。此时算法不急着淘汰个体而是把父代种群和子代种群合并组成一个规模为原本两倍的临时种群。对这个临时种群做非支配排序——先找出所有不被任何其它个体支配的解划为第一前沿去掉第一前沿后剩下的个体中再找不被支配的划为第二前沿以此类推。排序完成后再计算每个个体的拥挤度距离也就是看这个个体在目标空间里和邻居的疏密程度。拥挤度越大说明这个解附近越空旷保留它就能让Pareto前沿分布得更均匀。有了这些信息选择机制就非常清晰了按前沿等级从低到高依次填充下一代种群等级相同的个体优先保留拥挤度大的。这个机制确保了两件事第一Pareto前沿等级低的个体即更接近真实最优前沿的解永远有优先存活的权利保证了收敛性第二同等级里拥挤度大的个体优先存活保证了整个前端的分布广度。这就是NSDBO能在多目标问题上保持竞争力的底层原因——它的优化主体是一个收敛性极强的DBO引擎而它的种群管理机制借鉴了NSGA-II多年验证过的多目标选择理论两者结合兼顾了速度和分布性。2.3 我理解中的NSDBO相比NSGA-II和MOPSO的三个结构性优势很多人会问既然NSGA-II本身就有非支配排序直接拿NSGA-II做微电网调度不就行了为什么还要绕一圈用NSDBO这个问题我在实验中体会很深。第一个优势在收敛速度。NSGA-II的进化算子是模拟二进制交叉SBX和多项式变异这两个算子本质上是在现有解附近做基因重组和微小扰动搜索步长受参数控制面对高维决策变量时容易出现收敛缓慢的问题。而DBO的滚球蜣螂和偷窃蜣螂更新公式带有明确的“朝最优解靠近”的趋势全局搜索的导向性更强这意味着在同样的迭代次数下NSDBO往往能更早逼近真实前沿。第二个优势在种群的多样性维持。MOPSO多目标粒子群有个老毛病粒子群全体向全局最优靠拢容易造成种群多样性快速丢失最终Pareto前沿挤在窄窄的一段。NSDBO的四类个体天然存在行为分工不是所有个体都一股脑冲向最优解繁殖和觅食蜣螂的边界收缩机制也能在后期保留一定的探索能力前沿分布通常比MOPSO更完整。第三个优势是参数敏感性相对更低。NSGA-II的交叉概率、变异概率、分布指数都依赖经验设置参数不当性能掉得很快。DBO系列算法的主要调节参数集中在种群分配比例和个别系数上整体调参压力小很多。对于工程人员来说这意味着拿到算法后不需要花几周去调参默认参数通常就能得到一个可用的结果。3. 微电网优化调度模型的数学表达与约束处理3.1 决策变量调度指令最终落在哪些设备上聊算法之前必须先把优化模型本身讲清楚。因为不管你用什么算法最终要做的都是求解一个带约束的多目标优化问题。微电网优化调度的决策变量一般围绕这几个设备展开柴油发电机的有功出力、风力发电机的实际并网功率、光伏系统的实际输出功率、储能电池的充放电功率、微电网与上级电网之间的交互功率以及一些可控负荷的调节量。在日前调度场景下这些变量通常按每个调度时段常见的是1小时一个时段一天24个时段展开。也就是说如果你考虑5台可控分布式电源加储能加联络线决策变量的维度大致在24乘以7到10这个量级也就是168到240维。这个维度对进化算法来说不算特别高但考虑到每个变量之间还有时序耦合约束优化难度并不低。调度指令落地的时候还有一个现实约束风电和光伏的出力虽然有预测值但实际运行中往往存在误差。所以在建模里它们常常被处理成“在预测值基础上可一定范围调节”的变量或者直接当作固定参数代入只优化可控设备的出力。我比较推荐后者作为第一步实现优先把可控设备层面的调度逻辑打通再逐步引入不确定性。3.2 目标函数成本、碳排放和功率波动怎么同时最小化微电网多目标优化调度的目标函数可以根据项目需求增减但有三类目标是最常出现的几乎所有做这个方向的研究都会涉及。第一类目标是经济性目标。它包含多个子项柴油发电机的燃料成本和启动成本、各分布式电源的运行维护成本、向主网购电的电费扣掉售电收入、储能设备的充放电折旧损耗成本。综合起来可以写成一个总运行成本最小化的表达式单位通常是元或万元。燃料成本与出力之间通常呈二次函数关系这给目标函数引入了非线性运维成本一般简化成与出力的一次项成正比购售电成本采用分时电价体系峰谷时段差异明显。第二类目标是环境性目标。最常见的形式是碳排放量最小化把柴油机发电、向主网购电对应的碳排放因子分别乘以各自的电量汇总成全天的碳排放总量。部分研究会进一步细分SO2、NOx等污染物但核心思路一致。值得说明的是在目前双碳目标的大背景下环境目标往往不是纯粹的约束而是真正参与优化的目标它和经济目标之间天然存在冲突——多用风电光伏当然环保但储能的投资运维成本和系统调节成本会上升这就是一个典型的多目标权衡问题。第三类目标是技术性目标。常用的是微电网与主网联络线功率波动最小化或者系统电压偏差最小化也可以是最小化弃风弃光量。联络线功率波动太大会给上级电网带来冲击调度中心往往不喜欢弃风弃光最小化则关系到新能源消纳率考核。这类技术性目标直接反映了微电网运行的物理质量是学术研究和工程实践都会关注的维度。这三类目标放在一起构成了一个典型的三目标优化问题。用户可以根据自己的实际需要选两个或三个目标如果只选两个最常见的组合是“成本最小化”加“碳排放最小化”。3.3 约束条件功率平衡、储能SOC和爬坡率一个都不能少约束条件才是微电网调度模型的真正难点。功率平衡约束是硬约束中的硬约束任意时刻所有电源出力加储能放电功率加购电功率必须等于负荷功率加储能充电功率加售电功率。这个等式约束在进化算法里不太容易直接满足处理办法通常是把它转成罚函数项放到目标函数后面一起优化或者用启发式修复策略——在生成调度方案后检测不平衡量通过调节储能的充放电功率把差值补平。储能约束是另一个容易踩坑的地方。储能电池的SOC荷电状态是时序耦合变量上一时段的充放电状态会直接影响下一时段的可用容量。具体来说SOC的变化量等于充放电功率乘以时间步长再除以电池容量同时还要考虑充放电效率。SOC必须保持在上下限之间通常建议20%到90%而不是0%到100%为了延长电池寿命充放电功率也必须在额定的最大充放电功率以内。最重要的是一个完整的调度周期结束后SOC通常要求恢复到初始值附近这样才能保证第二天可以继续按同样策略运行。柴油发电机的约束包含出力上下限和爬坡约束。出力上下限好理解就是技术出力范围爬坡约束是相邻两个时段之间的出力变化不能太大因为柴油机的机械特性决定了它没法瞬间加大或减小出力。联络线的约束则是交互功率不能超过变压器容量和线路载流能力。此外还有旋转备用约束要求系统留有足够的备用容量以应对负荷预测误差和新能源出力的不确定性这通常表现为一个不等式约束放在模型里会让可行域进一步收窄。4. 从算法公式到可运行代码NSDBO实现微电网调度的关键细节4.1 编码方案与种群初始化先把解空间搭起来我实现NSDBO做微电网调度时决策变量编码采用的是实数编码直接把每个时段每台设备的出力功率值按顺序拼接成一个一维数组。举个例子假设有2台柴油机、1台储能、联络线购售电3个可控变量时段数取24那么每个个体就是长度为72的一维实数向量。前24位是柴油机1的逐时出力中间24位是柴油机2的逐时出力然后是储能逐时充放电功率正值为充电负值为放电或者相反取决于建模习惯最后24位是联络线功率。种群初始化要做两件事一是保证每个变量的初值落在各自允许范围内这块用均匀随机采样就行二是尽量生成一批初始就满足部分约束的个体特别是有功平衡约束。我常用的技巧是随机生成大部分可控变量的初值然后让其中一台柴油机充当“平衡节点”它的出力直接根据功率平衡方程反算出来。如果反算结果落在允许范围内这个个体就已经满足等式约束如果越限就重新生成。这样做初始种群的可行率会大幅提升算法迭代初期的搜索效率完全不一样。4.2 约束处理策略罚函数怎么设才不会让结果纸面好看实际不可用约束处理是进化算法做微电网调度最核心的工程问题。很多新手第一次跑通算法看着Pareto前沿和最优成本数据很高兴结果把调度方案拉出来一检查储能SOC越界、功率平衡对不上、爬坡约束违反整个方案根本没法下发执行。这类问题几乎都是因为约束处理太软。我的做法是构建一个综合惩罚项加到每个目标函数值上。具体来说把所有不等式约束的违反量归一化后加权求和再乘上一个足够大的惩罚系数得到惩罚项。这个惩罚系数的设定需要经验和实验设小了约束形同虚设设大了会严重挤压目标函数的梯度信息导致算法在可行域边缘很难移动。我建议先跑一组预实验用几个不同的惩罚系数各跑一遍观察约束违反率的下降曲线和Pareto前沿的分布变化一般来说系数在1e3到1e6这个量级能兼顾两边。更精细的做法是采用自适应罚函数迭代早期惩罚系数放小一点让算法充分探索迭代后期再逐步加大把解拉回可行域但实现复杂度上升不少第一次做不推荐。还有一个细节容易被忽略目标函数值之间的量级差异。如果经济成本是几万块钱碳排放是几千公斤电压偏差是零点几非支配排序的时候量级大的目标天然会主导支配关系量级小的目标几乎没有存在感。所以在计算目标函数之后必须做归一化处理把每个目标都线性映射到0到1之间算法才能公平地对多个目标排序。4.3 NSDBO主循环的六个步骤每一步在做什么为什么按这个顺序NSDBO求解微电网调度问题的主循环我整理成六个步骤每一步都有它存在的理由。第一步是初始化。生成种群计算每个个体的目标函数值做归一化初始化外部归档集Pareto最优解集合。第二步是蜣螂行为更新。按设定比例把当前种群划成滚球、繁殖、觅食、偷窃四类各类按对应公式更新位置生成子代。第三步是边界处理。新生成的位置如果越界采用反射边界策略——把越界的部分按对称方式折返回可行域内比直接把值拉回边界的随机反射效果更好能保持种群的多样性。第四步是合并选择。把父代和子代合并做非支配排序和拥挤度计算按精英保留策略选出下一代。第五步是归档集更新。把当前所有非支配解加入外部归档集移除被支配解如果归档集超出设定容量就按拥挤度删掉密集区域的解。第六步是终止条件判断。达到最大迭代次数或满足收敛阈值就结束否则回到第二步。这里特别提醒一点外部归档集的维护一定要和种群更新分开做。归档集的容量我通常设成100到200个解它会保留整个搜索过程中发现的所有优秀解而不仅仅是最新一代的种群。如果不做归档集你会发现有时候算法最后一轮种群的前沿反而不如中间某一代的完整丢失了最好结果。多数开源代码会把归档集和当前种群混在一起写论文的同学要注意这个区分。4.4 实验中的关键参数配置参考以我在典型微电网测试系统上的实验为例整套参数配置如下表可以当起点参考。参数名称配置值备注种群规模200不要低于100蜣螂分四类每类人数太少搜索能力不够最大迭代次数500简单算例300即可复杂算例800以上滚球蜣螂比例0.3主要探索力量不宜少于0.2繁殖蜣螂比例0.2局部开发主力觅食蜣螂比例0.3局部搜索偷窃蜣螂比例0.2扰动跳出局部最优外部归档集容量150太小会丢解太大会拖慢非支配排序交叉概率无该实现中不使用传统交叉算子惩罚系数1e4需根据目标函数量级调整需要说明的是这些参数它们在不同场景间的迁移性并不差我在多个微电网拓扑上都得到过稳定可用的结果但你在自己项目里还是应该花时间做一轮简单的敏感性测试。5. 实测案例一个含风光柴储的微电网系统跑完是什么效果5.1 测试系统配置与场景设置为了验证NSDBO的实际效果我搭建了一个典型的并网型微电网测试系统包含一台200kW柴油发电机、额定容量300kWh的储能电池最大充放电功率100kW、100kW光伏电站、80kW风电机组以及一个峰值负荷180kW的小型工业园区负荷曲线。联络线与主网连接交换功率上限150kW。电价采用峰平谷三段式峰时1.2元/kWh、平时0.75元/kWh、谷时0.4元/kWh。柴油发电机燃料成本系数取典型值碳排放系数按柴油燃烧的实际排放量折算。调度周期为24小时时段间隔1小时。多目标优化设置为三目标总运行成本最小、碳排放最小、联络线功率波动最小。为了让实验更有说服力我选了三个对比算法NSGA-II、MOPSO和原始单目标DBO的加权版本跑同样的问题模型。每个算法独立运行30次取统计结果避免单次随机性干扰判断。5.2 评价指标与对比结果多目标优化算法的性能评价不能只看谁算出来的成本低必须看整套Pareto前沿的质量。我选用了三个常用指标IGD反向世代距离衡量算法得到的Pareto前沿与真实前沿之间的收敛性差距数值越小越好HV超体积指标衡量前沿解集在目标空间占有的体积数值越大越好Spread衡量前沿解的分布均匀性数值越小越好。算法IGD均值HV均值Spread均值平均运行时间NSDBO0.0230.8710.142186sNSGA-II0.0470.8030.195152sMOPSO0.0560.7610.231134s加权DBO0.0280.8520.178165s从结果可以看出NSDBO在IGD和HV上明显优于NSGA-II和MOPSO说明它找到的前沿更接近真实前沿、覆盖范围也更大。Spread指标同样占优说明解的分布更均匀调度人员在做决策时不会面临“中间方案全是空白”的尴尬。对比加权DBO时更有意思加权版也算得上快和准但它一次只能给一个解NSDBO跑一次直接给了150个备选方案而且多目标搜索过程中非支配排序机制带来的种群多样性让最终前沿质量反而超过了单目标加权版本这是我在实验前没完全预期到的。另外注意到NSDBO的运行时间比NSGA-II和MOPSO长一些主要开销来自蜣螂的位置更新公式里三角函数和指数运算相对复杂。但在实际调度场景中日前调度的计算时间窗口通常在小时级别186秒完全在工程可接受范围内。5.3 调度方案解读从Pareto前沿到实际运行策略算法给了Pareto前沿最终的“解”怎么选其实是决策问题。我拿一次典型的冬季典型日结果做了分析。选择成本最低的方案时系统会倾向于多向主网购电只要分时电价允许、储能更多地在谷时充电峰时放电、柴油机尽量压低出力。这个方案的全天运行成本非常漂亮但碳排放明显偏多而且联络线功率波动很大——峰时从主网拉满150kW谷时几乎为零。选择碳排放最低的方案时系统会大幅提高柴油机出力来减少购电这里假设电网碳排放因子高于柴油机这在一些以火电为主的区域是成立的或者最大化利用光伏和风电。这个方案的排放量确实低但运行成本上升明显。选择联络线波动最小的方案时系统会让储能频繁吞吐削峰填谷使得微电网与主网的交互功率曲线变得很平缓。代价是储能电池的充放电循环次数增加寿命损耗加大经济成本随之升高。这三个解反映出的权衡关系非常直观。实际操作中我一般建议决策者从Pareto前沿上找出几个候选方案配合模糊隶属度函数做TOPSIS排序或者直接人工结合运营考核指标选点。因为NSDBO给出的全过程折中解连续性很好中间方案并不是简单地在三个极端方案之间线性插值而是每个时段的调度策略都有精细调整这才是多目标算法的真正价值。6. 我把所有踩过的坑整理了一遍NSDBO做调度的五个高频翻车点6.1 种群按角色划分比例失衡搜索行为塌方第一次跑NSDBO的时候我直接照搬单目标DBO论文里的角色比例——滚球蜣螂占0.5其余三类各占约0.17。结果在微电网问题上跑出来很糟糕前期收敛飞快但跑不到100代就停滞了Pareto前沿挤在一个角落。后来逐类分析才发现滚球蜣螂比例太高导致整个种群过度偏向全局探索繁殖和觅食蜣螂太少局部开发能力严重不足找得到好区域但没法精细打磨解的质量。调整到滚球0.3、觅食0.3、繁殖0.2、偷窃0.2之后情况明显改善。我建议你拿到代码后别急着跑正式实验先做一轮角色比例的敏感性分析画出各代种群的平均拥挤度变化曲线看搜索行为是否健康。6.2 等式约束惩罚系数拍脑袋结果“看起来很美”前面提到惩罚系数的设坑这里我讲一个具体翻车经历。有一次我把功率平衡约束的惩罚系数设成了100结果跑出来的“最优”调度方案中大部分时段的功率不平衡量达到几十kW。这就相当于系统里有将近一半的功率凭空消失或出现——在物理上完全不可行算法输出的成本数据再低也毫无意义。后来我把惩罚系数调到1e4并对目标值做min-max归一化约束违反量才真正被压制到10的负6次方量级。这个过程中我还意识到一个问题归一化的顺序很重要。要先归一化目标函数再算惩罚项并加进去因为惩罚项的数值量级必须和归一化后的目标值匹配否则两者的权重关系完全失衡。6.3 外部归档集容量无限膨胀排序耗时爆炸NSDBO的非支配排序本身已经有不小的计算开销如果外部归档集不加限制地往里塞解每轮迭代要跑一次全量非支配排序归档集规模增长到几千个解之后单轮迭代时间直接翻倍整个实验从两小时拉长到半天。解决办法是给归档集设一个容量上限达到容量后按拥挤度从大到小排序删掉最密集区域的解。这里有个细节千万别简单地按目标函数值随机删除必须按拥挤度删除否则会把边缘解删掉Pareto前沿的两端就缺了口。6.4 边界处理不当搜索方向被扭曲滚球蜣螂的位置更新公式里有正切函数和风向扰动因子导致部分个体在迭代过程中会产生大幅跳跃直接越过变量边界。我的处理方式经历了三个阶段。第一阶段用截断法越界的直接拉回边界值结果大量个体堆死在边界上种群多样性急剧下降。第二阶段用随机重置法越界就在允许范围里随机重新生成多样性保住了但收敛性变差。第三阶段采用反射法越界部分按镜像弹回——比如变量上限是100新值跑到120反射后变成80相当于把越界的信息“弹”回了可行域内。这个策略在收敛性和多样性之间平衡最好最终固定用它。6.5 一次运行就下结论被随机性骗了进化算法本质上是随机算法同一次实验换一个随机种子结果可能差异不小。尤其微电网模型本身非线性强、约束多算法的方差会更大。我见过有人只跑一次就写出“NSDBO优于NSGA-II”的结论换一个随机种子之后数据完全翻盘非常尴尬。我的习惯是每个算法独立运行至少20到30次取均值和标准差再做Wilcoxon秩和检验来确定显著性差异。这个过程虽然费时间但结论经得起同行评审也经得起项目验收。你自己做工程选型的时候至少要跑5次以上看稳定性前3次的平均值不可信。7. 最后分享一点个人体会从我最初接触单目标DBO到把NSDBO落地到微电网调度场景整个过程最大的感受是一个好用的智能优化算法不仅要看它在标准测试函数上的理论性能更要看它在真实工程约束下的鲁棒性。NSDBO恰好在这两点上都经受住了我这边项目的考验——收敛快、分布好、参数不娇气。特别是对微电网这种决策变量维度高、约束条件多的多目标问题它确实比NSGA-II和MOPSO更省心。如果你打算在自己的项目里尝试NSDBO我的建议是不要直接用开源代码一把梭。先花一个下午把本文第二部分的核心机制完全看懂再用一个简单的二目标测试问题把流程跑通最后才把微电网的目标函数和约束怼进去。这个分阶段推进的策略可以帮你快速定位是模型问题还是算法问题避免浪费大量时间在错误的方向上。对于想进一步扩展的同学可以考虑在NSDBO中引入自适应参数控制、混合差分进化策略或者把微电网里的不确定性因素新能源出力预测误差、负荷随机波动纳入鲁棒优化框架这些都是很有价值的方向。但那些都是后话了先把基本框架跑扎实微电网多目标优化调度这扇门就算真正打开了。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进