Self sustained producer-consumer(prosumer) policy study using Python and Gurobi

Overview

Prosumer Policy

This project aims to model the optimum dispatch behaviour of households with PV and battery systems under different policy instrument mixes. Household electricity consumers with photovoltaics and battery systems are referred to as prosumers since they both produce and consume electricity. This model uses the Gurobi optimizer (plans on adding more soon, contact us if you want to have more interfaces) to determine the optimal household charging behaviour under different policies such as real-time electricity pricing schemes, time varying remunerations schemes and fixed network charges. For the full scientific documentation, please refer to this paper: Aligning prosumers with the electricity wholesale market – The impact of time-varying price signals and fixed network charges on solar self-consumption.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

This model depends on Python >3.5, the packages Numpy and Pandas for data wrangling and Gurobi python package for optimization. Gurobi offers a free license for Academic use.

Sample Usage

The interface point between the package and the user is the Model Class. An instance of this class can be created as follows:

w=Model()

Each model instance has a set of system attributes, policy attributes and optimization parameters.

System Attributes

System attributes include, among others, PV and battery system size. Other parameters, such as battery efficiencies etc.. can be changed in the parametrs.yaml file.

Battery and PV size can be set as follows:

w.PV.size=5 #sets PV size to 5 kW
w.Battery.size=5 #sets Battery size to 5 kWh

Other parameters can be updated either from the default YAML file or a custom YAML file as follows:

w.PV.update_parameters() #updates from default YAML file

w.Battery.update_parameters('customFile.yaml') #updates from custom YAML File
Policy Attributes

For each instance of Model there exists a specific regulatory regime made up of:

  • RTP: Real Time Electricity Pricing
  • VFIT: Variable Feed in Remuneration
  • FixedNetworkCharges: Fixed or Volumetric Network charges

Parameters can be defined in YAML file and could also be changed as follows:

w.Policy.isRTP=False

or through a custom (or default) yaml parameter file

w.Policy.update_parameters('customFile.yaml') 
Optimization Parameters

Optimization parameters such as foresight duration and starting day of year can be edited as follows

w.timeDuration=24 #sets foresight to 24h
w.day=45 #sets the day 45 of the year
Optimization and Results Extracting

With the aforementioned parameters the Model can be optimized:

print(w.opt) #returns the dispatch as a DataFrame 
print(w.revenue) #returns the revenue 

Additional parameters can be computed such as MAI, IRR, etc.. The MAI stands for Market Alignment Indicator which measures the performance of a certain instrument mixes in comparison to an ideal case

Contributing

Please contact us via email to [email protected].

Authors

  • Ahmad Ziade - Initial work
  • Martin Klein - Initial work

License

This project is licensed under the MIT License - see the LICENSE.md file for details If you are using this project, please cite as:

Klein, M., Ziade, A. and De Vries, L., 2019. Aligning prosumers with the electricity wholesale market–The impact of time-varying price signals and fixed network charges on solar self-consumption. Energy Policy, 134, p.110901. DOI: 10.1016/j.enpol.2019.110901

Acknowledgments

Marc Deissenroth, Kristina Nienhaus, Laurens de Vries

Owner
Tom Xu
Software Engineer, AI/ML SaaS Advocate, Scientific Simulations and Optimizations.
Tom Xu
Expense-manager - Expense manager with python

Expense_manager TO-DO Source extractor: Credit Card, Wallet Destination extracto

1 Feb 13, 2022
A lightweight solution for local Particle development.

neopo A lightweight solution for local Particle development. Features Builds Particle projects locally without any overhead. Compatible with Particle

Nathan Robinson 19 Jan 01, 2023
poro is a LCU interface to change some lol's options.

poro is a LCU interface to change some lol's options. with this program you can: change your profile icon change your profiel background image ch

João Dematte 2 Jan 05, 2022
Allow you to create you own custom decentralize job management system.

ants Allow you to create you own custom decentralize job management system. Install $ git clone https://github.com/hvuhsg/ants.git Run monitor exampl

1 Feb 15, 2022
Anki Addon idea by gbrl.sc to see previous ratings of a card in the reviewer

Card History At A Glance Stop having to press card browser and ctrl+i for every card and then WINCING to see it's history of reviews FEATURES Visualiz

Jerry Zhou 11 Dec 19, 2022
- Auto join teams teams ( from calendar invite )

Auto Join Teams Meetings Requirements: Python 3.7 or higher Latest Google Chrome This script automatically logins to your account and joins the meetin

Prajin Khadka 10 Aug 20, 2022
Delayed iteration for polling and retries.

Does Python need yet another retry / poll library? It needs at least one that isn't coupled to decorators and functions. Decorators prevent the caller

A. Coady 22 Dec 29, 2022
YBlade - Import QBlade blades into Fusion 360

YBlade - Import QBlade blades into Fusion 360 Simple script for Fusion 360 that takes QBlade blade description and constructs the blade: Usage First,

Jan Mrázek 37 Sep 25, 2022
☘️ Projet Voltaire Solver in Python3

☘️ Projet Voltaire Solver in Python3

Bidouffe 8 Dec 02, 2022
디텍션 유틸 모음

Object detection utils 유틸모음 설명 링크 convert convert 관련코드 https://github.com/AI-infinyx/ob_utils/tree/main/convert crawl 구글, 네이버, 빙 등 크롤링 관련 https://gith

codetest 41 Jan 22, 2021
Extract gene length based on featureCount calculation gene nonredundant exon length method.

Extract gene length based on featureCount calculation gene nonredundant exon length method.

laojunjun 12 Nov 21, 2022
Feapder的管道扩展

FEAPDER 管道扩展 简介 此模块为feapder的pipelines扩展,感谢广大开发者对feapder的贡献 随着feapder支持的pipelines越来越多,为减少feapder的体积,特将pipelines提出,使用者可按需安装 管道 PostgreSQL 贡献者:沈瑞祥 联系方式:r

boris 9 Dec 07, 2022
pyForgeCert is a Python equivalent of the original ForgeCert written in C#.

pyForgeCert is a Python equivalent of the original ForgeCert written in C#.

Evi1cg 47 Oct 08, 2022
Writeup and scripts for the 2021 malwarebytes crackme

Malwarebytes Crackme 2021 Tools and environment setup We will be doing this analysis in a Windows 10 VM with the flare-vm tools installed. Most of the

Jerome Leow 9 Dec 02, 2022
This repository contains the exercices for the robotics class at Supaero, 2022.

Supaero robotics, 2022 This repository contains the exercices for the robotics class at Supaero, 2022. The exercices are organized by notebook. Each n

Gepetto team, LAAS-CNRS 5 Aug 01, 2022
Programa principal de la Silla C.D.P.

Silla CDP Página Web Contáctenos Lista de contenidos: Información del proyecto. Licencias. Contacto. Información del proyecto Silla CDP, o Silla Corre

Silla Control de Postura 1 Dec 02, 2021
Paintbot - Forward & Inverse Kinematics

PAINTBOT - FORWARD & INVERSE KINEMATICS: Overview: We built a simulation of a RRR robot shown in the figure below. The robot has 3 links and is connec

Alex Lin 1 Oct 21, 2021
oracle arm registration script.

oracle_arm oracle arm registration script. 乌龟壳刷ARM脚本 本脚本优点 简单,主机配置好oci,然后下载main.tf即可,不用自己获取各种参数。 运行环境配置 本简单脚本使用python3编写,请自行配置好python3环境和requests库。(高版

test1234455 419 Jan 01, 2023
Demo Python project using Conda and Poetry

Conda Poetry This is a demonstration of how Conda and Poetry can be used in a Python project for dev dependency management and production deployment.

Ryan Allen 2 Apr 26, 2022
Repls goes to sleep due to inactivity, but to keep it awake, simply host a webserver and ping it.

Repls goes to sleep due to inactivity, but to keep it awake, simply host a webserver and ping it. This repo will help you make a webserver with a bit of console controls.

2 Mar 01, 2022