交直流混合微网程序这个方向,我在课题组里前前后后折腾了小半年。最开始接到任务时,以为只是把交流微网和直流微网拼在一起,跑个潮流、做个优化就完事,真正动手才发现坑比想象中多:风光出力的随机性怎么描述,场景怎么生成才靠谱,缩减到什么程度计算量才扛得住,粒子群算法又该怎么编码约束才不崩。今天把整套程序从设计思路到具体实现掰开揉碎讲一遍,给正在做微网调度、或者想用场景法处理不确定性的朋友一个能直接抄作业的参考。
这套程序的核心链路很清晰:用拉丁超立方抽样生成大量风光出力场景,再通过多场景缩减得到少数典型场景,最后用粒子群算法在典型场景下做交直流混合微网的日前优化调度。它解决的核心问题是“风光出力不确定条件下,混合微网怎么安排各分布式电源、储能和换流器的出力,让总运行成本最低”。适合电力系统方向的研究生、做微网能量管理的工程师,以及刚开始接触场景优化和群智能算法的同学拿来练手和拓展。
1. 程序整体设计与建模思路
1.1 交直流混合微网为什么难算
传统的交流微网研究已经够成熟了,直流微网这几年也火,但交直流混合微网是把两条母线放在一个系统里,通过AC/DC换流器耦合。交流侧挂风电、柴油机、交流负荷,直流侧挂光伏、储能、直流负荷,两侧之间用双向换流器交换功率。
这个结构带来的麻烦是:潮流计算要从纯交流的牛拉法,变成交直流交替迭代;优化调度时又多了一个换流器传输功率的决策变量,而且换流器还有容量限制和损耗;两侧功率平衡需要耦合方程来约束,不能各自为政。我在程序里用的是简化的稳态模型,即认为换流器可以双向传输功率,传输效率恒定(比如取95%),容量限制作为不等式约束,这样既保留了交直流耦合的关键特性,又不至于把程序复杂到没法跑。
建模前先把系统参数列清楚,这一步很重要。交流母线电压、直流母线电压、各分布式电源的容量和爬坡率、储能额定容量和SOC上下限、换流器额定容量、联络线功率上限、分时电价,这些参数不准备好,后面写约束就是空中楼阁。我习惯用结构体或MATLAB的表格统一存,避免后面改参数时到处翻代码。
1.2 用场景法处理风光不确定性的完整链路
风光出力的随机性本质上是一个连续的概率过程。处理不确定性的主流方法有三类:鲁棒优化、机会约束规划、场景法。
鲁棒优化最保守,要保证最恶劣情况下也满足约束,结果往往过于悲观;机会约束允许以一定概率不满足约束,但对随机变量的分布假设要求高;场景法最直观,用大量离散场景去近似连续不确定性,然后对场景做期望意义上的优化,既保留了随机性信息,计算复杂度又在可控范围内。
这套程序采用场景法,完整链路是:概率分布建模 → 拉丁超立方抽样 → 多场景缩减 → 典型场景下的确定性优化。先说概率分布建模,风电出力通常先对风速做Weibull分布建模,再用风速-功率曲线折算成出力;光伏出力则用Beta分布描述光照强度,再结合光伏板参数计算输出功率。实际写程序时,如果拿不到实测历史数据,就用这两个常用分布生成风速和光照样本,再按公式转换成功率。
抽样完成后,初始场景数量很大(通常500到2000个),每个场景都做优化调度不现实,所以必须先缩减到5到10个典型场景,并保留每个场景的概率,最后目标函数变成“场景概率×场景成本”的加权和。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 拉丁超立方抽样原理与MATLAB实现
2.1 LHS的核心思想:分层比随机更重要
拉丁超立方抽样(Latin Hypercube Sampling,LHS)和蒙特卡洛抽样最大的区别在于“分层”两个字。蒙特卡洛抽样是完全随机的,样本落在概率密度高的区域就多,落在尾部就少,可能出现局部聚集,导致样本对分布的代表性不稳定。
LHS的做法是:把每个变量的累积概率分布[0,1]区间均匀分成N层(N为抽样规模),每一层里随机抽取一个概率值,再通过逆累积分布函数映射回实际变量取值。这样保证每个变量在整个取值范围内都被均匀覆盖,尤其是分布的尾部。
打个生活化的比方:蒙特卡洛抽样像是闭着眼睛往靶子上扔飞镖,可能全扎在左上角;LHS则像是先在靶子上画好网格,保证每个格里都有飞镖,只是每一格内的落点随机。因此LHS在相同抽样数下,覆盖性远好于蒙特卡洛,对后续场景缩减和优化也更有优势。
在风光不确定性建模中,风速和光照都有明显的偏态分布和尾部特征,用LHS能更好地保留极端阴天、大风天这类小概率但高影响的场景。
| 对比项 | 蒙特卡洛抽样 | 拉丁超立方抽样 |
|---|---|---|
| 抽样原理 | 完全随机 | 分层随机,每层一样本 |
| 分布覆盖性 | 可能出现聚集,尾部覆盖差 | 全区间均匀覆盖 |
| 达到同等精度的样本数 | 多 | 通常少30%-50% |
| 程序复杂度 | 低 | 中,需处理分层和打乱 |
2.2 采样代码一步一步写
MATLAB实现LHS其实不复杂,最通用的写法是分层均匀抽样加乱序排列。假设我们要生成N个风速场景,
