ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

微电网多目标优化调度:NSDBO非支配排序蜣螂算法的Matlab实现

微电网多目标优化调度:NSDBO非支配排序蜣螂算法的Matlab实现 园区微电网的调度员每天早上一睁眼就要回答类似的问题明天燃气轮机什么时候开储能是充电还是放电和主网之间到底是买电还是卖电。如果只看经济账让微型燃气轮机使劲发就行但排放指标立刻就难看如果只看环保账把负荷全交给主网和风光成本又压不住。这个“省钱”和“减排”互相打架的场景正是微电网多目标优化调度要处理的典型问题。本文要展开的 NSDBO基于非支配排序的蜣螂优化算法Non-dominated Sorting Dung Beetle Optimizer是解决这类问题的一种思路蜣螂优化算法负责全局搜索非支配排序负责在搜索过程中判断“哪些解值得保留”两者合在一起一次运行就能输出一串互不支配的调度方案。后面我会结合自己在 Matlab 下的实现和调参经验把问题建模、算法改造、代码结构以及那些特别容易踩的坑逐一讲清楚。如果你正准备做微电网经济调度方向的研究或者想在一个实际多目标问题里换用新算法这篇的内容应该能直接帮你节省不少试错时间。写得尽量不绕弯能抄作业的地方我给步骤。1. 微电网调度为什么需要“多目标”而不是“加权求和”1.1 先想清楚微电网里到底什么可以被调度业内聊微电网调度通常面对的是含风电、光伏、储能、微型燃气轮机以及主网联络线的系统。风电和光伏属于不可控或弱可控电源在日前调度里一般直接采用预测出力微型燃气轮机响应快、可控性强是真正可以“指哪打哪”的电源储能则充当能量搬运工把低谷时段的富余电挪到高峰时段放出去主网联络线提供一个外部的缓冲。这个结构决定了决策空间的形态。你的每一个决策变量都对应着某个时段里某台设备的出力水平比如第 t 小时微燃机的有功出力、储能的充电功率或放电功率、和第 t 小时从主网购电或售电的功率。整天的运行成本、排放水平都是这几十个变量共同作用的结果。风光优先消纳几乎是所有调度模型的默认前提因为风电光伏的边际成本接近零运行阶段也不直接产生污染排放。真正需要较劲的是燃气轮机和主网购电这两类“补充能源”怎么分配以及储能什么时候充、什么时候放。一旦把时间轴拉长到 24 小时各时段的决策之间还会互相影响因为储能的电量是跨时段累积的燃气轮机还有爬坡约束。问题一下就从“单点优化”变成了“带时序耦合的优化”。1.2 经济性与环保性如何变成两个目标函数微电网调度默认有两个相互冲突的目标。第一个是经济目标一天内所有设备的总运行成本要最小包括燃气轮机燃料成本、各设备运维成本、向主网购电的成本、储能参与充放电带来的寿命损耗成本。为了量化可以写成总成本 燃料成本 运维成本 购电成本 储能退化成本如果更具体一点微型燃气轮机的燃料成本通常用二次函数拟合C_fuel,t a b * P_mt,t c * P_mt,t^2运维成本近似认为与出力线性相关C_om,t k * P_i,t购电成本则取决于分时电价。储能退化成本更麻烦常见做法是按充放电电量折算成等效成本加进去。这个目标函数最终是一个关于决策变量的标量值数值越小越好。第二个目标是环境目标把一天内所有污染排放折算成一个总量。燃气轮机烧天然气会产生 CO2、NOx 等排放主网购电虽然不在本地排放但电网侧发电同样存在排放。风电、光伏、储能在运行阶段基本不排放。因此目标函数可以写成总排放 Σ(ε_mt * P_mt,t ε_grid * P_buy,t)ε 是对应电源的排放系数。排放系数单位通常取 kg/kWh最终得到一天的排放总量单位是 kg 或 t。这里不把排放折算成“排污费用”因为如果你把排放折算成钱加进成本那实质上又变成了单目标问题。想让决策者直观看到“多花多少钱才能减多少排放”就应该把排放作为一个独立目标保留下来让两个目标的数字单位完全不同也没关系这就是多目标优化要处理的正常情况。1.3 加权求和错在哪里权重是拍脑袋的前沿是扫不全的很多人第一次接触多目标问题第一反应是加权重。比如 Min J w1 * 总成本 w2 *
返回列表