# 蒙特卡罗 #Monte Carlo #风电功率预测 #Kmeans 1 采用蒙特卡洛法仿真
# 蒙特卡罗 #Monte Carlo #风电功率预测 #Kmeans 1 采用蒙特卡洛法仿真生成n组随机风功率出力场景 2 利用Kmeans算法对n个场景进行聚类缩减场景 3 求出缩减后的场景对应的出力概率并求出不确定出力曲线。 Matlab代码注释风电场的功率预测总让人头秃尤其是风大爷的脾气比女朋友还难捉摸。今儿咱们整点实在的——用蒙特卡罗Kmeans组合拳搞定这个玄学问题。准备好你的Matlab咱们直接开淦先来点暴力的生成10000种可能风电机组那忽高忽低的出力用蒙特卡罗模拟最带感。假设某2MW风机我们粗暴地按正态分布生成风速当然实际可以用威布尔分布更准确n 10000; % 场景数量 wind_speed 3 randn(n,1)*1.5; % 均值3m/s的正态分布 wind_speed(wind_speed0) 0; % 风速不能为负 power_curve (v) 2*(v.^3).*(v3 v12) 2000*(v12); % 简化功率曲线 scenes power_curve(wind_speed); % 生成出力场景这里有个骚操作功率曲线用匿名函数实现比写循环快10倍。注意我们给风速加了截断处理毕竟现实世界没有负风速这玩意儿。聚类才是重头戏# 蒙特卡罗 #Monte Carlo #风电功率预测 #Kmeans 1 采用蒙特卡洛法仿真生成n组随机风功率出力场景 2 利用Kmeans算法对n个场景进行聚类缩减场景 3 求出缩减后的场景对应的出力概率并求出不确定出力曲线。 Matlab代码注释面对这1万个场景直接分析会累死电脑。掏出Kmeans算法20行代码教你做人k 5; % 最终保留5个典型场景 [cluster_idx, centroids] kmeans(scenes, k, Replicates, 10); % 计算每个簇的概率 cluster_count histcounts(cluster_idx, 1:k1); prob cluster_count / n;重点来了Replicates参数设置10次重复取最优防止陷入局部最优。聚类数k的选择可以用肘部法则不过咱们今天先拍脑袋定个5。让不确定性现形最后整点可视化的东西figure; hold on; for i 1:k plot(centroids(i)*ones(24,1), LineWidth, 2*prob(i)); % 线宽反映概率大小 end title(不确定性出力曲线); xlabel(时间/h); ylabel(功率/kW);这波操作把不同场景的概率用线宽可视化瞅一眼就知道哪些出力情况最容易发生。比如粗线对应的出力值就是电网调度需要重点盯防的对象。说点人话总结蒙特卡罗就像个算命先生穷举所有可能性Kmeans则是精明的会计把账本浓缩成几页报表。两者配合下我们既保留了风力的随机性又不至于被海量数据搞崩溃。下次运维大哥再抱怨预测不准直接甩这个方案过去记得把风速分布换成当地实测数据更香哦~代码完整版已放Github老规矩评论区自取
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2437986.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!