微电网调度这个课题我前前后后做了快一年从最开始只会用加权法把多目标压成单目标到后来完整实现了基于改进多目标灰狼优化算法的风、光、荷、储微网日前优化调度方案中间踩的坑比想象中多得多。这套代码把V2G技术也接进去了让电动汽车从单纯的“充电负荷”变成了可调度资源整体调度效果比标准灰狼算法有了明显提升。这篇文章把整个项目的建模思路、算法改进细节、Matlab代码实现流程、还有调试过程中踩过的坑完整记录下来给正在做微电网优化方向的师弟师妹以及搞智能算法应用的工程师朋友们做个参考。内容会从零讲起涉及V2G模型怎么搭、多目标函数怎么描述、改进灰狼每一步改在哪儿、代码怎么组织你照着往下走就能复现。1. 整体设计思路与关键技术选择1.1 为什么非要多目标不可先聊一个很多人最初都会困惑的问题微电网调度为什么不直接做个单目标优化把经济性、环保性这些统统折算成钱那不是更简单吗答案很现实折算不下来。碳排放成本、用户侧满意度、联络线功率波动这些指标有的能按碳交易价格折算成钱但有的没法量化。比如峰谷差过大导致变压器寿命缩短、EV用户参与V2G后的心理补偿、可再生能源弃用带来的社会价值损失这些折进去多少都是拍脑袋。而且不同单位的目标函数量纲差异极大直接加权求和等于让权重系数决定一切调参调得怀疑人生结果还不一定符合实际调度需求。多目标优化就不一样了。它不强行把多个目标揉成一个而是求一组Pareto最优解集。比如“运行成本最低”和“碳排放最少”这两个目标在某些时段天然冲突多用风电光伏虽然环保但储能损耗和弃风弃光成本可能升高晚上低价时段多买电省钱但碳排放不一定最划算。多目标算法一次跑出来一条Pareto前沿决策者可以根据具体情况——比如今天是环保压力大还是成本压力大——在解集里挑合适的方案这个弹性和可解释性是单目标加权完全比不了的。1.2 V2G在调度模型中扮演什么角色V2GVehicle to Grid说白了就是让电动汽车不只是单向地从电网充电而是能在特定时段把车载电池里的电反向送回到微网里。大规模接入的时候一群EV就相当于一个分布式储能集群而且它有个独特优势电动汽车的充电行为本身就高度可控用户接入电网的时间段、需要的出行电量、可接受的充放电功率这些信息在日前调度时都是可以预测和申报的。在微网模型里我把EV群处理成一个聚合的虚拟储能单元。它和传统蓄电池储能的区别在于EV不仅要满足微网调度需求还得保证第二天用户出行的电量需求也就是“最低电量约束”必须卡死。这个约束处理不好算法就算运行成本再低用户早上开车发现没电了那也是废方案。所以V2G加入后整个调度问题的可行域实际上是被压缩了的算法的寻优难度比普通风光储微网更高这也是这个课题值得研究的核心原因之一。1.3 算法选型为什么是灰狼又为什么要改进做多目标优化的算法工具箱里其实选项不少NSGA-II、MOPSO、MOEA/D都有人用。我选灰狼优化算法核心原因是它的机制简单、参数少。相比遗传算法那套选择、交叉、变异操作灰狼算法的位置更新公式非常直观——个体跟随种群中的优势个体移动代码实现起来很简洁而且收敛速度在多个基准测试函数上表现相当不错。但标准灰狼算法直接搬到多目标场景有几个致命短板它的迭代机制极度依赖群体中的三个领导者alpha、beta、delta在多目标问题里谁来当领导者多个目标之间互相冲突的时候怎么定义“最优个体”标准灰狼的群体很容易向单一方向收缩导致种群多样性快速丧失Pareto前沿会挤成一堆覆盖不到边界解。收敛因子是线性衰减的前期探索和后期开发之间的平衡往往不够理想。所以我做了针对性改进混沌映射初始化让种群初始分布更均匀、非线性收敛因子平衡探索与开发、引入外部档案库配合非支配排序来选取领导者、再叠加一个变异算子防止种群早熟。这些改进背后的逻辑后面会一章一章讲透。2. 微电网系统建模与多目标函数描述2.1 风、光、储、EV各单元怎么建模建模是整个调度问题的地基。模型太粗糙结果没有参考价值太精细求解时间又撑不住。我做的是日前调度时间尺度按1小时划分跑24个时段所以大部分单元采用相对简化的静态或准动态模型。风电出力模型风机出力主要由风速决定工程上常用分段功率曲线来描述。实际做的时候如果手头有历史风速预测数据用功率曲线查表或者拟合出P-v关系式就行。没有风速数据的话直接用预测出力序列也可以代码里预留了数据读取接口你换自己的数据源就行。光伏出力模型光伏出力主要受太阳辐照度影响因为只做日前调度没必要去精细模拟光生伏打过程直接按预测辐照度换算成有功出力最实用。注意光伏出力只在白天时段非零夜间出力为零这是硬约束建模时直接用曲线数据表达就好。储能蓄电池模型储能这里的关键是荷电状态SOC的递推方程它决定了储能单元在全天时间序列上的累计状态变化这是微网调度的“记忆”部分[ SOC(t1) SOC(t) \frac{\eta_{ch} P_{ch}(t) \Delta t}{E_{ess}} - \frac{P_{dis}(t) \Delta t}{E_{ess} \eta_{dis}} ]充电效率和放电效率不一样大概在0.9到0.95之间。这个不对称很关键——储能每“搬运”一度电实际消耗不止一度如果优化模型忽略这个损耗最后的成本计算会偏低。EV集群模型把大量电动汽车聚合成一个虚拟储能集群减轻计算压力。每个时段EV集群的可调功率取决于接入电网的车辆数量、平均可用容量、充电桩功率上限[ P_{EV}(t) \sum_i P_{EV,i}(t) ]但要注意向量的两个端约束调度周期结束时集群SOC不能低于用户出行保障值这通常设置为初始SOC的80%以上或者按“次日出行电量需求”反推每个时段的充放电功率有上下限不能无限从EV“抽电”。常规负荷直接给定24小时预测负荷曲线作为已知输入。整个系统的功率平衡约束靠叠加各单元出力来实现。2.2 多目标函数怎么设计才合理这个课题我总共设了三个目标每个目标都有明确物理含义互相之间存在利益冲突目标1综合运行成本最小[ C_{total} \sum_{t1}^{24} \left( C_{buy}(t) P_{buy}(t) - C_{sell}(t) P_{sell}(t) C_{ess}(t) C_{ev}(t) \right) ]其中购电成本按分时电价计算售电收入是微网卖给大电网的电费。储能和EV的成本主要是充放电过程带来的电池寿命损耗我做成了和功率大小相关的一次函数或二次函数。这里容易忽略的是EV参与V2G需要给用户补贴否则用户没动力把电池借给电网用这部分补偿成本也得计入。目标2碳排放最小[ E_{CO2} \sum_{t1}^{24} P_{buy}(t) \cdot e_{grid} ]把联络线购电量和电网侧碳排放因子相乘。微网本地风电光伏是零碳的所以想减少碳排放核心策略就是减少从大电网购电多用本地清洁能源。这个目标跟“购电成本”目标在分时电价低谷时段会有冲突——低谷电价便宜但火电占比高的时段多买电省钱但碳排放高这个矛盾正是多目标优化要处理的典型场景。目标3负荷曲线标准差最小平抑联络线功率波动[ J \frac{1}{T} \sum_{t1}^{T} \left( P_{net}(t) - \frac{1}{T} \sum_{\tau1}^{T} P_{net}(\tau) \right)^2 ]( P_{net}(t) ) 是微网与大电网的交换功率。这个目标用来平抑联络线功率波动减少对大电网的冲击。储能和EV的充放电策略在这里很关键——它们像缓冲水池一样负荷高峰出力、低谷充电削峰填谷的效果就是让外网交换功率曲线更平缓。2.3 约束条件全清单与处理方法约束类型数学描述物理含义处理方法功率平衡( P_{wind}P_{pv}P_{ess}P_{ev}P_{buy}P_{load}P_{sell} )任意时刻系统供需平衡等式约束用松弛变量处理把不平衡量加进罚函数储能SOC范围( SOC_{min} \le SOC(t) \le SOC_{max} )储能不过充不过放越界直接截断并施加罚项储能充放电功率( 0 \le P_{ch}(t) \le P_{ch}^{max} )功率限制边界截断EV电量保障( SOC_{ev}(24) \ge SOC_{ev}^{req} )用户次日出行保障调度期终态约束罚函数处理EV充放电功率( -P_{ev}^{dis,max} \le P_{ev}(t) \le P_{ev}^{ch,max} )充电桩物理限制边界截断联络线功率(P_{buy}(t)\le P_{line}^{max} )弃风弃光( 0 \le P_{wind}(t) \le P_{wind}^{pre}(t) )实际出力不超过预测值边界截断约束处理的核心原则能截断就截断截断不了就罚函数。比如SOC越界直接把它拉回边界值然后给目标函数加一个很大的惩罚量让算法知道这个解是不可行的。千万不要把等式约束简单扔进去不管功率不平衡的解在物理上完全没有意义后续画图、分析都会是错的。3. 改进多目标灰狼优化算法逐层拆解3.1 标准灰狼优化算法的核心机制回顾标准灰狼优化算法模拟灰狼的等级制度和狩猎行为。狼群分四个等级alpha是最优解beta和delta是次优解omega是其余个体。每个个体按以下公式更新位置[ D |C \cdot X_p(t) - X(t)| ] [ X(t1) X_p(t) - A \cdot D ]( A ) 是收敛因子( C ) 是随机权重向量。灰狼群体同时参考alpha、beta、delta三个领导者的位置来更新自己取三者的平均或加权值[ X(t1) \frac{X_1 X_2 X_3}{3} ]这个机制的优点是不用记录每个个体的历史最优位置群体天然有协作性收敛速度快。但缺点是一旦三个领导者本身分布在同一个局部区域整个种群就会被“拽”进局部最优多样性很难保证这对多目标问题是个大问题。3.2 改进点一Tent混沌映射初始化种群标准灰狼算法一般用伪随机数生成初始种群这有个隐患初始解分布可能过于集中或存在大量重叠种群多样性一开始就低。微网调度问题有24个时段的风光预测数据决策变量多初始种群覆盖能力直接影响最终Pareto前沿的完整性所以我在初始化阶段引入了Tent混沌映射。Tent映射的数学形式是[ x_{n1} \begin{cases} x_n / 0.7 x_n 0.7 \ 10(1 - x_n)/3 x_n \ge 0.7 \end{cases} ]产生的序列具有遍历性和随机性能在解空间里铺得更均匀。具体做法是先对每个个体的每一维生成一个Tent混沌数再映射到决策变量的取值范围。实测下来同样种群规模和迭代次数下混沌初始化的Pareto前沿不仅能覆盖到更多边界解前沿分布的均匀性也明显比随机初始化好。3.3 改进点二非线性收敛因子标准灰狼算法的收敛因子 ( a ) 是随迭代次数线性从2衰减到0的这导致整个搜索过程“探索-开发”节奏固定前期转开发太快后期想探索也没了动力。改进方法就是把它变成非线性衰减[ a(t) 2 - 2\left(\frac{t}{T_{max}}\right)^k ]( k ) 取1.2到1.5之间时前期衰减变慢更好地保留探索能力后期快速下降让算法集中精力精修最优区域。这个改进不影响算法复杂度就是改一行公式但收敛精度提升很明显。尤其是风光出力波动大的时段决策变量之间的耦合性强前期探索充分了后期开发才有好基础。3.4 改进点三外部档案库与领导者选择机制这是整套改进里最重要的一环。多目标问题里没有绝对最优解只有非支配解所以不能像单目标那样直接选一个alpha出来。我的做法是引入一个外部档案库容量固定为50个非支配解每次迭代后把当前种群里的非支配解加入档案再用非支配排序和拥挤距离对档案进行修剪让档案里始终保持分布均匀的最优解集。领导者怎么选从外部档案里按拥挤距离排序距离最大的解也就是Pareto前沿上最“孤单”的边界解优先作为alpha、beta、delta的来源。这样做的逻辑很直接拥挤距离大的区域说明算法探索得还不够充分让群体优先向这些区域靠拢能促使解集逐步铺满整个Pareto前沿。局部贪心和全局探索的博弈就靠这个机制完成了。外部档案的操作函数是代码调试中的重灾区后面在常见问题章节我会专门讲怎么排查档案更新逻辑的bug。3.5 改进点四融合差分变异算子为了让算法在迭代后期还能跳出局部最优我在位置更新之后增加了一个变异环节随机选取一部分个体变异概率取0.1用差分进化中的变异策略扰动[ X_{mut} X_{r1} F \cdot (X_{r2} - X_{r3}) ]( r1 )、( r2 )、( r3 ) 是随机三个不同个体缩放因子 ( F ) 取0.5。变异后的个体如果支配原个体就替换否则以一定概率接受。这相当于给算法加了一层“保险丝”——即使三个领导者全被局部最优困住变异算子也有机会生成跳出局部最优的个体。代价是增加了一点计算量但在24时段、多约束的微网调度场景里这个成本完全可控。3.6 算法总流程与伪代码整个改进算法的流程可以概括为初始化Tent混沌生成种群初始化外部档案评估计算每个个体的多目标适应度更新档案合并种群与档案非支配排序拥挤距离修剪选领导者从档案中选拥挤距离最大的三个解作为alpha、beta、delta位置更新按灰狼公式更新全体个体变异操作对部分个体执行差分变异越界处理与约束修复检查终止条件达到最大迭代次数则输出档案集3.7 算法流程伪代码1. 输入数据风电/光伏预测、负荷、分时电价、碳排因子、储能参数、EV参数 2. 设置算法参数种群规模N50最大迭代Tmax200档案容量M50变异率pm0.1 3. 用Tent混沌映射生成初始种群X 4. 计算每个个体的三个目标函数值 5. 将初始种群中的非支配解存入外部档案 6. for t 1, 2, ..., Tmax 6.1 计算非线性收敛因子a公式见3.3 6.2 按拥挤距离从档案中选择alpha、beta、delta个体 6.3 for i 1, 2, ..., N 更新第i个灰狼个体的位置公式见3.1 end 6.4 对随机挑选的pm*N个个体执行差分变异公式见3.5 6.5 对越界个体做边界截断并用罚函数处理约束冲突 6.6 评估新种群合并到外部档案用非支配排序拥挤距离修剪档案 7. 输出外部档案中的Pareto最优解集这套流程在Matlab里实现的时候有个小技巧把整个调度模型的目标函数封装成一个函数输入变量是每个灰狼个体的位置向量输出是三个目标函数值的一维数组。这样算法框架和具体调度模型就彻底解耦了——想换目标函数改表达式想换投资决策变量改编码方式都不影响优化算法本身。4. Matlab代码架构与实现实操4.1 整体文件结构与数据准备良好的代码组织能让调试效率翻倍。我的工程分成五个模块每个模块一个脚本或函数文件project/ ├── main.m 主程序参数设置、算法调用、结果绘图 ├── data/ 原始数据目录 │ ├── wind_pred.xlsx 风电预测出力 │ ├── pv_pred.xlsx 光伏预测出力 │ ├── load_pred.xlsx 负荷预测 │ └── price_emission.xlsx 分时电价、碳排放因子 ├── objective.m 目标函数计算三个目标 ├── constraints.m 约束处理和罚函数计算 ├── IMOGWO.m 改进多目标灰狼算法主函数 └── archive_update.m 外部档案更新非支配排序拥挤距离这里给新手提个醒Matlab读Excel文件的时候路径千万别用相对路径直接写文件名建议用fullfile(data, wind_pred.xlsx)或者干脆把数据文件放到当前代码目录下。我之前因为路径问题反复调用失败检查花了一个多小时才发现是文件名大小写和系统默认路径的问题。另外Matlab版本建议用2021b以上版本太老的话部分内置函数比如readtable的格式处理会有差异如果打开代码文件中文注释显示乱码切成UTF-8编码重新加载就好。4.2 决策变量编码与种群表示调度问题里决策变量是全天24小时各柔性资源的出力计划。我的编码方式是[ X [P_{ess}(1...24), P_{ev}(1...24), P_{buy}(1...24)] ]也就是72维向量。风电和光伏的出力在日前调度里当成可调度但有限制的变量——理论上可以弃风弃光但弃了就要承受惩罚成本或者碳排放增加所以它们不作为独立决策变量而是根据功率平衡约束由其他变量推导确定。这种方式的好处是决策变量数量少搜索空间小。当然你也可以把风和光也作为决策变量给变量加上“不超过预测值”的上界实测下来效果差不多只是计算量会大一些。种群在Matlab里我建议用三维数组存储X_pop(N, dim, T)N是种群规模dim是决策变量数T是时段数。这样索引清晰后续向量化计算更高效。如果只用二维数组每行的排列顺序容易搞错调试的时候头都大。4.3 objective.m 目标函数实现细节目标函数文件是整个项目的核心。这里给一个简化的框架function [f_cost, f_co2, f_fluct] objective(x, data) % x: 个体向量72维 % 解码决策变量 P_ess x(1:24); P_ev x(25:48); P_buy x(49:72); P_sell max(-P_buy, 0); % 当购电为负时视为售电 % 计算各单元成本 C_buy data.price .* max(P_buy, 0) - data.price_sell .* max(P_sell, 0); C_ess 0.2 * abs(P_ess); % 储能损耗成本系数 C_ev 0.3 * abs(P_ev); % EV参与V2G补贴成本 f_cost sum(C_buy C_ess C_ev); % 碳排放目标 f_co2 sum(max(P_buy, 0) .* data.emission_factor); % 联络线功率波动目标 P_net P_buy - P_sell; f_fluct var(P_net); % 用方差或者标准差 end三个目标函数在量纲上差异很大成本动辄几千块碳排放几百千克负荷方差可能是几万。这会给档案更新里的拥挤距离计算带来问题——量大数级的那个目标会主导距离计算。所以我做了一步归一化处理在拥挤距离计算前把所有目标值先min-max缩放到0到1区间。这个细节特别重要不做的话Pareto前沿会在某个方向上特别稀疏看起来就像是少了一个目标。4.4 IMOGWO.m 函数内部实现要点算法主函数里的关键环节是外部档案更新。非支配排序标准做法是采用快速非支配排序——每个个体比较支配关系一层一层淘汰时间复杂度 ( O(MN^2) )M是目标数N是种群规模。档案容量保持在50个左右每代要把新解和档案合并后再筛选等于每代要做一次非支配排序。这个计算成本不高24时段调度模型整体跑一轮大概两三分钟都在可接受范围。实现时有个细节容易被忽视Matlab默认的sortrows排序在多目标指标上是按行整体排序的这跟我们想要的“按单个目标排序后求相邻距离”不完全一样。拥挤距离的正确计算方式是对每个目标分别排序然后对每个个体求它在各个目标上与前后邻居的距离之和。我封装了一个crowding_distance.m函数单目标排序、找索引、算距离一步到位保证和标准NSGA-II的距离定义完全一致。4.5 参数设置实操经验经过大量调参实验我推荐一组可以“抄作业”的参数参数推荐值说明种群规模N50太小容易早熟太大影响计算速度最大迭代次数200调度周期24时段200代足够收敛外部档案容量50与种群规模一致前沿点数足够决策用变异概率0.1过大会破坏已收敛的解差分变异缩放因子F0.5稳定区间的中间值收敛因子指数k1.3前期探索后期开发均衡4.6 结果绘图与可视化呈现最终结果展示一般需要两张图一张是Pareto前沿散点图三个目标两两组合或者用三维散点图展示另一张是选定方案下各单元全天24小时的出力堆叠图。运行结束后从外部档案里挑一个典型方案我会挑成本目标最小的或三个目标均衡的画出每个时段的储能出力、EV充放电功率、联络线交换功率以及与负荷、风光预测曲线的对比图。Pareto前沿绘制用scatter3或者plot3就行。如果两个目标展示就用scatter加颜色映射。从三维散点图上看改进算法得到的解集能呈现出一条清晰的三维曲面带标准灰狼版本往往会缩成一堆点或者只覆盖其中一角对比效果一目了然。这个图我强烈建议保留报告和答辩的时候最有说服力。5. 常见问题排查与避坑技巧5.1 算法不收敛或者结果波动极大典型症状连续跑两次优化得到的Pareto前沿差异很大或者迭代到100代以后目标函数值还在剧烈波动。大概率是收敛因子设计有问题——线性衰减的收敛因子到了后期衰减过快群体失去了精细搜索的能力。排查步骤把收敛因子曲线画出来看看你设计的非线性函数在实际迭代中前中后期的变化节奏。检查变异概率——0.1的变异概率如果还是在后期大规模扰动说明变异算子没有随迭代次数逐渐减弱。可以在变异概率上加一个衰减系数让它随迭代进程缩到0.01以下。5.2 外部档案Pareto前沿分布不均匀症状散点图上一侧密集、一侧稀疏边界解几乎找不到。第一个要查的是拥挤距离计算是否正确尤其是归一化步骤有没有做。如果没归一化量纲大的目标会把距离值撑得很大算法会偏向优化那个方向。第二个常见原因是档案更新时候选解太少。如果每代产生的非支配解数量很多但你用的是贪心式“只保留拥挤距离最大的M个”会直接把边界解丢掉。建议先用非支配排序选出真正的非支配层如果这一层的解数量小于档案容量再把存档里和Pareto前沿最近的解补齐而不是直接按拥挤距离一刀切。5.3 优化后功率不平衡或者SOC越界这是调度问题最常翻车的地方。如果结果图里某一时刻各单元出力之和明显不等于该时刻负荷大小说明等式约束没有处理好。功率平衡约束在prioritized处理时不能被忽略我的做法是在每个个体评估之前先做一个“功率修正”步骤——计算出不平衡量把差额分配给储能或EV如果它们在界内或者分配给联络线购电变量保证等式约束一定满足。这比单纯加大罚函数系数更可靠。SOC越界通常是因为罚函数系数设低了。罚项系数设为目标函数量级的100倍起步是比较稳的比如成本目标大概是几千元量级SOC越界罚项就设1e5。记住罚项必须够“狠”否则算法很容易钻空子输出违反约束的解。5.4 代码整体运行太慢如果每一代评估目标函数的时候都是一层层循环速度会很折磨人。微网调度的目标函数计算里有大量按时段重复的运算应该用向量化操作一步到位。比如sum(C_buy C_ess C_ev)直接对整个数组求和而不是for循环24次。另外一个加速点是种群评估矩阵化把整个种群的数据组织成一张大矩阵一次调用目标函数计算所有个体的适应度比每个个体单独调函数快一个数量级。实测5000次目标函数调用场景下向量化改造后整体耗时缩短了约80%。5.5 结果对比看不出改进效果做改进算法研究总绕不开对比实验。要把改进效果展示清楚建议从三个维度做对比收敛性对比画种群三个目标的平均值随迭代次数的收敛曲线两条曲线差距一目了然。Pareto前沿覆盖对比用“超体积指标HV”或者“间距指标SP”量化比较数值说话。计算效率对比记录相同迭代次数下两种算法的耗时差异。我自己做对比实验时发现一个容易出错的地方标准的灰狼算法或者对比算法比如NSGA-II的具体参数没有调到同类水平就被拿来跟改进算法比这样说服力不足。建议两个算法都用同样的种群规模和迭代次数而且每个算法跑至少10次取平均值再画误差棒图。5.6 新手最容易忽略的Matlab细节坑这个项目我在代码实现过程中积累了不少血泪教训这里集中列一下变量名污染Matlab脚本模式下所有变量默认全局可见跑多次优化之间一定要清理工作区否则上次运行的残留变量会被新运行占用。Excel数据导入格式读进来的数据可能有缺失值或不是数值类型用ismissing检查一遍table2array转换一下。中文注释导致乱码用Matlab 2023版打开旧文件发现中文注释乱码大概率是文件编码问题用“主页-预设-编辑器-文件保存”改成UTF-8后重新保存即可。随机数种子每次跑结果不同基本正常但做对比实验时必须用rng(固定值)设置随机种子保证结果可复现。绘图中文显示如果图例里的中文全显示成方框用set(gca, FontName, 宋体)改一下字体问题就没了。6. 写在最后的一些个人体会这套改进多目标灰狼算法加入V2G的微网调度代码我在实际项目中先后跑了不下500次实验最大的体会就是多目标优化的“工程味”比想象中重得多——数学公式推导固然重要但代码实现里的细节比如归一化、档案更新策略、约束修复顺序任何一个环节出错都直接反映在最终结果上。风、光、荷、储加V2G每个单元都不复杂但把它们耦合在一起就成了一个典型的带约束高维优化问题这时候算法的改进空间就体现出来了。改进灰狼的每一处改动都不是拍脑袋加的混沌初始化解决分布问题、非线性收敛因子解决搜索节奏、外部档案加差分变异解决多样性和早熟都有明确的针对性这也是算法改进研究最核心的思路——先找痛点再对症下药。后续想做扩展的话这个框架可以比较自然地加入碳交易机制、需求侧响应或者多微网协调调度有兴趣的话可以从这些方向接着往下做。
