基于 LHS 、 BR 与K-means的风电出力场景分析研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

1.1 场景分析概述

1.2 基于 LHS 的场景生成算法 

1.3 基于 BR 的场景缩减算法 

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章讲解


💥1 概述

文献来源:

风力发电具有无燃料成本、无污染等优点,是目前可再生能源研究和开发的重点之一。而受天然条件制约,风力的随机性和波动性是研究的难点。场景分析技术是表征风电出力的常见方法,包括场景生成与场景缩减两部分。场景生成根据研究对象的概率分布函数或统计特征,通过抽样来获得大量具有随机特征的场景。场景缩减通过数据分析减少相似场景的数量,降低计算复杂度。若能利用反映风速特征的场景生成方法准确生成大量场景,然后利用场景缩减方法,在保证精确性的同时减少相似场景的数量并得到相应的风电出力曲线,则将对电网规划设计、风电接纳能力评估、电源优化配置、储能规划及运行调度等具有重要意义。在场景生成的研究中,文献[4—5]利用蒙特卡

洛抽样法得到大规模风电场景集; 文献[6]采用反向传播( back propagation,BP) 神经网络对风电功率进行预测,进而生成风电出力的概率场景。此外,还有学者利用自回归滑动平均( auto-regressive and moving average,ARMA) 误差模型、非参数的概率预测等方法进行场景生成。场景生成的关键是保证生成的数据集能反映自身概率密度及总体特征。

在场景缩减的研究中,大多采用聚类分析法对相似场景进行缩减。文献[9]通过计算聚类有效性

指标,解决了传统 K-means 算法无法给出最佳聚类数的问题; 文献[10]针对待划分数据与聚类中心的距离等计算量大的部分,采用图形处理单元进行加速处理。此类方法对初始聚类中心要求高,且对离群点和噪声点敏感。另有研究人员使用 K-中心点聚类、分层聚类等方法进行场景缩减[11—12],此类方法步骤繁多,计算复杂,且分层聚类受奇异值的影响很大。

文中基于风速的不确定特性,建立基于拉丁超立方抽样( Latin hypercube sampling,

LHS) 与后向缩减法( backward reduction,BR) 的场景分析模型。

1.1 场景分析概述

在处理风电出力不确定性的研究中,广泛釆用 3 种方法: 模糊规划法、机会约束规划法以及场景分

析方法[11]。文中采用场景分析法处理风电出力不确定性问题,场景分析主要分为场景生成和场景缩减 2 部分。场景生成是指根据研究对象的概率分布函数或统计特征,通过抽样等方法获得具有不确定性特征的大规模场景,可用集合 S = { S1,S2,…,SN } 表示。场景缩减则通过对集合 S 进行数据分析,减少相似场景数目,获得期望的场景数,降低计算复杂度。最终剩下的少量经典场景集可用集合K = {K1,K2,…,KM } 表示,该集合能较大程度地表征原始场景随机变量特性。具体过程如图 2 所示。

 

1.2 基于 LHS 的场景生成算法 

LHS 是一种分层抽样法,将一个大区间划分为若干个固定的小区间,每个小区间内只抽样 1 次。

假设对 N 维向量空间进行 M 次抽样,且对每一维进行的都是 0-1 均匀抽样,则可用 N%M 阶的矩阵 A 存储中间过程,用 N %M 阶的矩阵 B 存储样本点坐 标[17—19]。将 N 维向量空间中的每一维都等分成 M个区间,如图 3 所示。

1.3 基于 BR 的场景缩减算法 

经 LHS 法得到的风速数据量庞大,各场景之间相似度很高。为更有效地将相近场景合并,文中基

于 BR 构建场景缩减模型[21—22],从而对大量数据进行处理。

📚2 运行结果

 

 

 

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]车兵,李轩,郑建勇等.基于LHS与BR的风电出力场景分析研究[J].电力工程技术,2020,39(06):213-219.

🌈4 Matlab代码、数据、文章讲解

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
预测分析子程序是一种自顶向下的语法分析方法,它使用一个预测分析表来确定每个非终结符号的下一步操作。下面是一个简单的预测分析程序的实现,假设我们的文法为: ``` S -> aAB A -> bA | ε B -> cB | d ``` 其中,S、A 和 B 是非终结符号,a、b、c 和 d 是终结符号。 ```python class Parser: def __init__(self, grammar): self.grammar = grammar self.predictive_table = self.build_predictive_table() def build_predictive_table(self): table = {} for nonterminal in self.grammar.nonterminals: for terminal in self.grammar.terminals + ['$']: productions = self.grammar.get_productions(nonterminal, terminal) if len(productions) == 1: table[(nonterminal, terminal)] = productions[0] elif len(productions) > 1: raise ValueError('Grammar is not LL(1)') return table def parse(self, input): stack = ['$'] input.append('$') i = 0 while stack: symbol = stack.pop() if symbol in self.grammar.nonterminals: production = self.predictive_table[(symbol, input[i])] stack.extend(reversed(production.rhs)) elif symbol == input[i]: i += 1 else: raise ValueError('Unexpected token: {}'.format(input[i-1])) return True class Grammar: def __init__(self, productions): self.productions = productions self.nonterminals = set(p.lhs for p in productions) self.terminals = set(t for p in productions for t in p.rhs if t not in self.nonterminals) def get_productions(self, nonterminal, terminal): return [p for p in self.productions if p.lhs == nonterminal and (len(p.rhs) == 1 and p.rhs[0] == terminal or len(p.rhs) > 1 and p.rhs[0] in self.nonterminals and (nonterminal, terminal) in self.predictive_table[(p.rhs[0], terminal)])] class Production: def __init__(self, lhs, rhs): self.lhs = lhs self.rhs = rhs grammar = Grammar([ Production('S', ['a', 'A', 'B']), Production('A', ['b', 'A']), Production('A', []), Production('B', ['c', 'B']), Production('B', ['d']), ]) parser = Parser(grammar) input = ['a', 'b', 'c', 'd'] parser.parse(input) ``` 在预测分析程序中,我们首先构建了一个预测分析表,它是一个字典,键为一个非终结符号和一个终结符号的二元组,值为一个产生式。然后,我们使用一个栈来模拟语法分析过程。我们从栈中弹出一个符号,如果它是一个非终结符号,则查找预测分析表,获取对应的产生式,并将产生式的右部反转后入栈。如果它是一个终结符号,并且与输入符号相同,则继续处理下一个输入符号。如果它是一个终结符号,但与输入符号不同,则抛出异常。 在上面的代码中,我们还定义了一个 Grammar 类,它表示一个文法。该类包含一个产生式列表、非终结符号集合和终结符号集合。我们还定义了一个 Production 类,它表示一个产生式,包含一个左部和一个右部。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值