基于光伏系统功率数据的晴空信号统计估计
statistical-clear-sk的Python项目详细描述
统计学习
光伏系统功率数据晴空信号的统计估计
开始
您可以为此项目安装PIP软件包或Anaconda软件包。
安装
如果您正在使用pip:
$ pip install statistical-clear-sky
截至2019年2月11日,它失败了,因为作为cxvpy依赖项安装的scs包预期numpy已经安装。 scs第85版表示已修复。 然而,它似乎并没有反映在pip包中。 另外,cvxpy不适用于低于1.16的numpy版本。 作为解决方法,首先单独安装numpy,然后安装这个包。 即
$ pip install 'numpy>=1.16'
$ pip install statistical-clear-sky
如果您使用的是anaconda,则不会出现上述问题,因为numpy已经安装。在统计晴天安装期间,numpy升级到1.16以上:
$ conda install -c slacgismo statistical-clear-sky
求解器
cvxpy附带的默认凸面解算器是ecos,它是开源的。但是,此解算器在遇到>;1000个变量的问题时往往会失败,因为它不适用于此算法。
因此,代码的默认行为是使用商业mosek解算器。因此,我们建议您按以下方式单独安装,并自行获取许可证。
mosek-用于使用mosek解算器。
如果您正在使用pip:
$ pip install -f https://download.mosek.com/stable/wheel/index.html Mosek
如果您使用的是水蟒:
$ conda install -c mosek mosek==8.1.43
学术许可证在这里免费提供:https://www.mosek.com/products/academic-licenses/" rel="nofollow">https://www.mosek.com/products/academic licenses/
用法
作为python代码的一部分或在jupyter笔记本中
示例1:输入参数最少的最简单示例。
使用默认解算器(开源解算器:ecos)
importnumpyasnpfromstatistical_clear_sky.algorithm.iterative_fittingimportIterativeFitting# Usually read from a CSV file or a database with more data,# covering 1 day (column) and a few years (row):power_signals_d=np.array([[0.0,0.0,0.0,0.0],[1.33389997,1.40310001,0.67150003,0.77249998],[1.42349994,1.51800001,1.43809998,1.20449996],[1.52020001,1.45150006,1.84809995,0.99949998]])iterative_fitting=IterativeFitting(power_signals_d)iterative_fitting.execute()clear_sky_signals=iterative_fitting.clear_sky_signals()degradation_rate=iterative_fitting.degradation_rate()
示例2:在不降级的情况下估计晴空信号。
你可以根据没有逐年下降的假设来估计晴空信号。 在这种情况下,可以在execute方法中将is_degration_calculated关键字参数设置为false。 默认情况下,设置为true。
importnumpyasnpfromstatistical_clear_sky.algorithm.iterative_fittingimportIterativeFitting# Usually read from a CSV file or a database with more data,# covering 1 day (column) and a few years (row):power_signals_d=np.array([[0.0,0.0,0.0,0.0],[1.33389997,1.40310001,0.67150003,0.77249998],[1.42349994,1.51800001,1.43809998,1.20449996],[1.52020001,1.45150006,1.84809995,0.99949998]])iterative_fitting=IterativeFitting(power_signals_d)iterative_fitting.execute(is_degradation_calculated=False)clear_sky_signals=iterative_fitting.clear_sky_signals()
示例3:使用不同的解算器。
默认解算器ecos对于大量输入数据不稳定。 下面的示例演示如何通过传递solver_type关键字参数(到构造函数)来指定使用mosek solver。
importnumpyasnpfromstatistical_clear_sky.algorithm.iterative_fittingimportIterativeFitting# Usually read from a CSV file or a database with more data,# covering 1 day (column) and a few years (row):power_signals_d=np.array([[0.0,0.0,0.0,0.0],[1.33389997,1.40310001,0.67150003,0.77249998],[1.42349994,1.51800001,1.43809998,1.20449996],[1.52020001,1.45150006,1.84809995,0.99949998]])iterative_fitting=IterativeFitting(power_signals_d,solver_type='MOSEK')iterative_fitting.execute()clear_sky_signals=iterative_fitting.clear_sky_signals()degradation_rate=iterative_fitting.degradation_rate()
示例4:为广义低秩建模设置秩。
默认情况下,低秩矩阵的秩指定为6。 哟您可以通过指定rank k keyword参数(在构造函数中)来更改它。
importnumpyasnpfromstatistical_clear_sky.algorithm.iterative_fittingimportIterativeFitting# Usually read from a CSV file or a database with more data,# covering 1 day (column) and a few years (row):power_signals_d=np.array([[0.0,0.0,0.0,0.0],[1.33389997,1.40310001,0.67150003,0.77249998],[1.42349994,1.51800001,1.43809998,1.20449996],[1.52020001,1.45150006,1.84809995,0.99949998]])iterative_fitting=IterativeFitting(power_signals_d,rank_k=6)iterative_fitting.execute()# Get the resulting left low rank matrix and right low rank matrix for evaluation.left_low_rank_matrix=iterative_fitting.left_low_rank_matrix()# The above can be also obtained as l_cs_value:l_cs_value=iterative_fitting.l_cs_value# Get the resulting right low rank matrix for evaluation.right_low_rank_matrix=iterative_fitting.right_low_rank_matrix()# The above can be also obtained as r_cs_value:r_cs_value=iterative_fitting.r_cs_valueclear_sky_signals=iterative_fitting.clear_sky_signals()degradation_rate=iterative_fitting.degradation_rate()# The above can be also obtained as beta_value:beta_value=iterative_fitting.beta_value
例5:设置不同的超参数以最小化广义低秩建模的目标函数。
广义低阶模型的目标函数有三个超参数,即mu_l、mu_r和tau。 默认情况下,mu_l设置为1.0,mu_r设置为20.0,tau设置为0.8。 您可以通过在execute方法中指定mu、mu和tau关键字参数来更改它。
$ pip install statistical-clear-sky0
例6:设置不同的控制参数以最小化广义低阶建模的目标函数。
广义低阶模型的目标函数中有三个控制参数,即退出准则-退出准则-epsilon和最大迭代次数-最大迭代次数。 默认情况下,exit_criteria_epsilon设置为1e-3,max_iteration设置为100。 您可以通过在execute method中指定eps和max_iteration关键字参数来更改它。
$ pip install statistical-clear-sky1
示例7:设置降解率限制。
通过在execute方法中设置max_degration和min_degration关键字参数,可以指定最大降级和最小降级。 默认情况下,设置为不使用。
$ pip install statistical-clear-sky2
Jupyter笔记本示例
或者,您可以克隆此存储库(git)并在"笔记本"文件夹下执行示例代码。
如果使用pip,安装依赖项的最简单方法是通过
$ pip install statistical-clear-sky3
如上文"入门"一节所述, 截至2019年2月11日,它失败了,因为作为cxvpy依赖项安装的scs包预期numpy已经安装。 scs第85版表示已修复。 然而,它似乎并没有反映在pip包中。 另外,cvxpy不适用于低于1.16的numpy版本。 作为解决方法,首先单独安装numpy,然后使用requirements.txt安装其他软件包。即
$ pip install statistical-clear-sky4
运行测试
单元测试(开发人员测试)
Git克隆此项目。
在终端的项目目录中,
$ pip install statistical-clear-sky
5这将运行"测试"文件夹下的所有测试。
< > >bennet meyers-初始工作和主要研究工作-bennet meyers github
Tadatoshi Takahashi-重构和打包工作和研究架构支持工作-tadatoshi takahashi github
- 作者要感谢斯坦福大学的斯蒂芬·博伊德教授的投入和指导,感谢NREL的克里斯·德林、迈克·德凯利和德克·乔丹的合作。
所有的测试都直接放在项目目录下的"tests"目录下。 它使用的"unittest"默认情况下是python标准库的一部分。 可能有更好的单元测试框架。 但原因是要邀请尽可能多的有各种背景的投稿人。
编码风格测试
pylint用于检查编码样式是否符合"PEP 8——Python代码样式指南"
注意:我们开放使用lgtm。 然而,由于基于项目技术咨询委员会的评论,我们决定使用另一个代码覆盖工具,即codecov。 我们也可以使用其他编码风格的工具。
使用pylint的示例:
在终端的项目目录中,
$ pip install statistical-clear-sky6
贡献
有关我们的行为准则和向我们提交请求的过程的详细信息,请阅读contribution.md。
版本控制
我们使用语义版本控制来进行版本控制。有关可用的版本,请参见此存储库上的标记
作者
另请参见参与此项目的贡献者列表。
许可证
此项目根据BSD 2条款许可证获得许可-有关详细信息,请参见许可证文件
参考文献
[1]B.Meyers、M.Tabone和E.C.Kara,"统计晴空拟合算法",IEEE光伏专家会议,2018年。