基于光伏系统功率数据的晴空信号统计估计

statistical-clear-sk的Python项目详细描述


统计学习

pypi发布水蟒云释放生成状态codecov

光伏系统功率数据晴空信号的统计估计

开始

您可以为此项目安装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-sky
0

例6:设置不同的控制参数以最小化广义低阶建模的目标函数。

广义低阶模型的目标函数中有三个控制参数,即退出准则-退出准则-epsilon和最大迭代次数-最大迭代次数。 默认情况下,exit_criteria_epsilon设置为1e-3,max_iteration设置为100。 您可以通过在execute method中指定eps和max_iteration关键字参数来更改它。

$ pip install statistical-clear-sky
1

示例7:设置降解率限制。

通过在execute方法中设置max_degration和min_degration关键字参数,可以指定最大降级和最小降级。 默认情况下,设置为不使用。

$ pip install statistical-clear-sky
2

Jupyter笔记本示例

或者,您可以克隆此存储库(git)并在"笔记本"文件夹下执行示例代码。

如果使用pip,安装依赖项的最简单方法是通过

$ pip install statistical-clear-sky
3

如上文"入门"一节所述, 截至2019年2月11日,它失败了,因为作为cxvpy依赖项安装的scs包预期numpy已经安装。 scs第85版表示已修复。 然而,它似乎并没有反映在pip包中。 另外,cvxpy不适用于低于1.16的numpy版本。 作为解决方法,首先单独安装numpy,然后使用requirements.txt安装其他软件包。即

$ pip install statistical-clear-sky
4

运行测试

单元测试(开发人员测试)

  1. Git克隆此项目。

  2. 在终端的项目目录中,

    $ pip install statistical-clear-sky
    
    5

    这将运行"测试"文件夹下的所有测试。

  3. < > >

    所有的测试都直接放在项目目录下的"tests"目录下。 它使用的"unittest"默认情况下是python标准库的一部分。 可能有更好的单元测试框架。 但原因是要邀请尽可能多的有各种背景的投稿人。

    编码风格测试

    pylint用于检查编码样式是否符合"PEP 8——Python代码样式指南"

    注意:我们开放使用lgtm。 然而,由于基于项目技术咨询委员会的评论,我们决定使用另一个代码覆盖工具,即codecov。 我们也可以使用其他编码风格的工具。

    使用pylint的示例:

    在终端的项目目录中,

    $ pip install statistical-clear-sky
    
    6

    贡献

    有关我们的行为准则和向我们提交请求的过程的详细信息,请阅读contribution.md

    版本控制

    我们使用语义版本控制来进行版本控制。有关可用的版本,请参见此存储库上的标记

    作者

    另请参见参与此项目的贡献者列表。

    许可证

    此项目根据BSD 2条款许可证获得许可-有关详细信息,请参见许可证文件

    参考文献

    [1]B.Meyers、M.Tabone和E.C.Kara,"统计晴空拟合算法",IEEE光伏专家会议,2018年。

    致谢

    • 作者要感谢斯坦福大学的斯蒂芬·博伊德教授的投入和指导,感谢NREL的克里斯·德林、迈克·德凯利和德克·乔丹的合作。

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


热门话题
java为什么运行按钮在Eclipse中不起作用?   java构造函数:实例变量是否为对象存储单独的值?   java使用jquery获取值   生产文件夹和源文件夹中的java单元测试   java递归问题这个解决方案正确吗?有更简单的解决方案吗?   java Android sqlite正在检索已选中中的行   javacom。谷歌。云数据存储。DatastoreException:请求缺少必需的身份验证凭据   java无法在Linux Ubuntu 12.04上运行maven2   在监视器的上下文中,被阻塞的线程在被notify()调用唤醒后在何处继续执行?   安卓如何从游标获取Bool(Java SQLite)   如何阻止rxjava runnable发出?   使用设备管理时应用程序中的java Android实例化异常