.. image:: https://pascua.iit.comillas.edu/aramos/openSDUC.jpg
:target: https://pascua.iit.comillas.edu/aramos/openSDUC/index.html
:alt: logo
:align: center
|
.. image:: https://badge.fury.io/py/openSDUC.svg
:target: https://badge.fury.io/py/openSDUC
:alt: PyPI
.. image:: https://img.shields.io/pypi/pyversions/openSDUC.svg
:target: https://pypi.python.org/pypi/openSDUC
:alt: versions
.. image:: https://img.shields.io/readthedocs/opensduc
:target: https://opensduc.readthedocs.io/en/latest/index.html
:alt: docs
.. image:: https://img.shields.io/badge/License-AGPL%20v3-blue.svg
:target: https://github.com/IIT-EnergySystemModels/openSDUC/blob/master/LICENSE
:alt: AGPL
**Open Stochastic Daily Unit Commitment of Thermal and ESS Units (openSDUC)**
It determines the system operation for supplying the demand at minimum cost.
The **openSDUC** model presents a decision support system for defining the generation operation of a large-scale electric system.
The scope of the model corresponds to one day or one week divided in load levels: 01-01 00:00:00+01:00 to 01-21 23:00:00+01:00.
The time division allows a flexible representation of the periods for evaluating the system operation. For example, by 84 periods of two hours or by the 168 hours of the week.
It considers stochastic short-term yearly uncertainties (scenarios) related to the system operation. The operation scenarios are associated with renewable energy sources and electricity demand.
The model formulates an optimization problem including binary and continuous operation decisions.
The **unit commitment (UC)** model is a based on a **tight and compact** formulation including operating reserves. It considers different **energy storage systems (ESS)**, e.g., pumped-storage hydro,
battery, etc.
The main results of the model can be structured in these topics:
- **Operation**: the output of different units and technologies (thermal, storage hydro, pumped-storage hydro, RES), RES curtailment
- **Emissions**: CO2
- **Marginal**: Short-Run Marginal Costs (SRMC)
A careful implementation has been done to avoid numerical problems by scaling parameters, variables and equations of the optimization problem allowing the model to be used for large-scale cases.
Installation
############
There are 2 ways to get all required packages under Windows. We recommend using the Python distribution Anaconda. If you don't want to use it or already have an existing Python (version 3.8 | 3.9 **recommended**, 2.7 is supported as well) installation, you can also download the required packages by yourself.
Miniconda (recommended)
=======================
1. `Miniconda <https://docs.conda.io/en/latest/miniconda.html>`_. Choose the 64-bit installer if possible.
1. During the installation procedure, keep both checkboxes "modify the PATH" and "register Python" selected! If only higher Python versions are available, you can switch to a specific Python Version by typing ``conda install python=<version>``
2. **Remark:** if Anaconda or Miniconda was installed previously, please check that python is registered in the environment variables.
2. **Packages and Solver**:
1. Launch a new command prompt (Windows: Win+R, type "cmd", Enter)
2. Install `CBC solver <https://github.com/coin-or/Cbc>`_ via `Conda <https://anaconda.org/conda-forge/coincbc>`_ by ``conda install -c conda-forge coincbc``. If you have any problem about the installation, you can also follow the steps that are shown in this `link <https://coin-or.github.io/user_introduction.html>`_.
3. Install openSDUC via pip by ``pip install openSDUC``
Solvers
###########
HiGHS
=====
The `HiGHS solver <https://ergo-code.github.io/HiGHS/dev/interfaces/python/#python-getting-started>`_ can also be used. It can be installed using: ``pip install highspy``.
This solver is activated by calling the openTEPES model with the solver name 'appsi_highs'.
Gurobi
======
Another recommendation is the use of `Gurobi solver <https://www.gurobi.com/>`_. However, it is commercial solver but most powerful than open-source solvers for large-scale problems.
As a commercial solver it needs a license that is free of charge for academic usage by signing up in `Gurobi webpage <https://pages.gurobi.com/registration/>`_.
It can be installed using: ``conda install -c gurobi gurobi`` and then ask for an academic or commercial license. Activate the license in your computer using the ``grbgetkey`` command (you need to be in a university domain if you are installing an academic license).
GLPK
====
As an easy option for installation, we have the free and open-source `GLPK solver <https://www.gnu.org/software/glpk/>`_. However, it takes too much time for large-scale problems. It can be installed using: ``conda install -c conda-forge glpk``.
CBC
===
The `CBC solver <https://github.com/coin-or/Cbc>`_ is our recommendation if you want a free and open-source solver. For Windows users, the effective way to install the CBC solver is downloading the binaries from `this link <https://www.coin-or.org/download/binary/Cbc/>`_, copy and paste the *cbc.exe* file to the PATH that is the "bin" directory of the Anaconda or Miniconda environment. It can be installed using: ``conda install -c conda-forge coincbc``.
Mosek
=====
Another alternative is the `Mosek solver <https://www.mosek.com/>`_. Note that it is a commercial solver and you need a license for it. Mosek is a good alternative to deal with QPs, SOCPs, and SDPs problems. You only need to use ``conda install -c mosek mosek`` for installation and request a license (academic or commercial).
To request the academic one, you can request `here <https://www.mosek.com/products/academic-licenses/>`_. Moreover, Mosek brings a `license guide <https://docs.mosek.com/9.2/licensing/index.html>`_. But if you are request an academic license, you will receive the license by email, and you only need to locate it in the following path ``C:\Users\(your user)\mosek`` in your computer.
Users
=====
If you are not planning on developing, please follows the instructions of the `Installation <#installation>`_.
Once installation is complete, `openSDUC <https://github.com/IIT-EnergySystemModels/openSDUC/tree/master>`_ can be executed in a test mode by using a command prompt.
In the directory of your choice, open and execute the openSDUC_run.py script by using the following on the command prompt (Windows) or Terminal (Linux). (Depending on what your standard python version is, you might need to call `python3` instead of `python`.):
``openSDUC_main``
Then, four parameters (case, dir, solver, and console log) will be asked for.
**Remark:** at this step only press enter for each input and openSDUC will be executed with the default parameters.
After this in a directory of your choice, make a copy of the `9n <https://github.com/IIT-EnergySystemModels/openSDUC/tree/master/openSDUC/9n>`_ or `sSEP <https://github.com/IIT-EnergySystemModels/openSDUC/tree/master/openSDUC/sSEP>`_ case to create a new case of your choice but using the current format of the CSV files.
A proper execution by ``openSDUC_Main`` can be made by introducing the new case and the directory of your choice. Note that the solver is **glpk** by default, but it can be changed by other solvers that pyomo supports (e.g., gurobi, mosek).
Then, the **results** should be written in the folder who is called with the case name. The results contain plots and summary spreadsheets for multiple optimised energy scenarios, periods and load levels as well as the investment decisions.
**Note that** there is an alternative way to run the model by creating a new script **script.py**, and write the following:
``from openSDUC.openSDUC import openSDUC_run``
``openSDUC_run(<case>, <dir>, <solver>)``
Raw data
{
"_id": null,
"home_page": "https://pascua.iit.comillas.edu/aramos/openSDUC/index.html",
"name": "openSDUC",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": null,
"author": "IIT-EnergySystemModels",
"author_email": "andres.ramos@comillas.edu",
"download_url": "https://files.pythonhosted.org/packages/a9/bc/a807ace3d56f7ae8a4ff683824a54c28629ec71e2bdd8d9e8446635424a9/opensduc-1.3.31.tar.gz",
"platform": null,
"description": "\n.. image:: https://pascua.iit.comillas.edu/aramos/openSDUC.jpg\n :target: https://pascua.iit.comillas.edu/aramos/openSDUC/index.html\n :alt: logo\n :align: center\n \n|\n\n.. image:: https://badge.fury.io/py/openSDUC.svg\n :target: https://badge.fury.io/py/openSDUC\n :alt: PyPI\n\n.. image:: https://img.shields.io/pypi/pyversions/openSDUC.svg\n :target: https://pypi.python.org/pypi/openSDUC\n :alt: versions\n \n.. image:: https://img.shields.io/readthedocs/opensduc\n :target: https://opensduc.readthedocs.io/en/latest/index.html\n :alt: docs\n\n.. image:: https://img.shields.io/badge/License-AGPL%20v3-blue.svg\n :target: https://github.com/IIT-EnergySystemModels/openSDUC/blob/master/LICENSE\n :alt: AGPL\n\n \n**Open Stochastic Daily Unit Commitment of Thermal and ESS Units (openSDUC)**\n\nIt determines the system operation for supplying the demand at minimum cost.\n\nThe **openSDUC** model presents a decision support system for defining the generation operation of a large-scale electric system.\n\nThe scope of the model corresponds to one day or one week divided in load levels: 01-01 00:00:00+01:00 to 01-21 23:00:00+01:00.\nThe time division allows a flexible representation of the periods for evaluating the system operation. For example, by 84 periods of two hours or by the 168 hours of the week.\n\nIt considers stochastic short-term yearly uncertainties (scenarios) related to the system operation. The operation scenarios are associated with renewable energy sources and electricity demand.\n \nThe model formulates an optimization problem including binary and continuous operation decisions.\n\nThe **unit commitment (UC)** model is a based on a **tight and compact** formulation including operating reserves. It considers different **energy storage systems (ESS)**, e.g., pumped-storage hydro,\nbattery, etc. \n\nThe main results of the model can be structured in these topics:\n \n- **Operation**: the output of different units and technologies (thermal, storage hydro, pumped-storage hydro, RES), RES curtailment\n- **Emissions**: CO2\n- **Marginal**: Short-Run Marginal Costs (SRMC)\n\nA careful implementation has been done to avoid numerical problems by scaling parameters, variables and equations of the optimization problem allowing the model to be used for large-scale cases.\n\nInstallation\n############\nThere are 2 ways to get all required packages under Windows. We recommend using the Python distribution Anaconda. If you don't want to use it or already have an existing Python (version 3.8 | 3.9 **recommended**, 2.7 is supported as well) installation, you can also download the required packages by yourself.\n\n\nMiniconda (recommended)\n=======================\n1. `Miniconda <https://docs.conda.io/en/latest/miniconda.html>`_. Choose the 64-bit installer if possible.\n\n 1. During the installation procedure, keep both checkboxes \"modify the PATH\" and \"register Python\" selected! If only higher Python versions are available, you can switch to a specific Python Version by typing ``conda install python=<version>``\n 2. **Remark:** if Anaconda or Miniconda was installed previously, please check that python is registered in the environment variables.\n2. **Packages and Solver**:\n\n 1. Launch a new command prompt (Windows: Win+R, type \"cmd\", Enter)\n 2. Install `CBC solver <https://github.com/coin-or/Cbc>`_ via `Conda <https://anaconda.org/conda-forge/coincbc>`_ by ``conda install -c conda-forge coincbc``. If you have any problem about the installation, you can also follow the steps that are shown in this `link <https://coin-or.github.io/user_introduction.html>`_.\n 3. Install openSDUC via pip by ``pip install openSDUC``\n\nSolvers\n###########\n\nHiGHS\n=====\nThe `HiGHS solver <https://ergo-code.github.io/HiGHS/dev/interfaces/python/#python-getting-started>`_ can also be used. It can be installed using: ``pip install highspy``.\nThis solver is activated by calling the openTEPES model with the solver name 'appsi_highs'.\n\nGurobi\n======\nAnother recommendation is the use of `Gurobi solver <https://www.gurobi.com/>`_. However, it is commercial solver but most powerful than open-source solvers for large-scale problems.\nAs a commercial solver it needs a license that is free of charge for academic usage by signing up in `Gurobi webpage <https://pages.gurobi.com/registration/>`_.\nIt can be installed using: ``conda install -c gurobi gurobi`` and then ask for an academic or commercial license. Activate the license in your computer using the ``grbgetkey`` command (you need to be in a university domain if you are installing an academic license).\n\nGLPK\n====\nAs an easy option for installation, we have the free and open-source `GLPK solver <https://www.gnu.org/software/glpk/>`_. However, it takes too much time for large-scale problems. It can be installed using: ``conda install -c conda-forge glpk``.\n\nCBC\n===\nThe `CBC solver <https://github.com/coin-or/Cbc>`_ is our recommendation if you want a free and open-source solver. For Windows users, the effective way to install the CBC solver is downloading the binaries from `this link <https://www.coin-or.org/download/binary/Cbc/>`_, copy and paste the *cbc.exe* file to the PATH that is the \"bin\" directory of the Anaconda or Miniconda environment. It can be installed using: ``conda install -c conda-forge coincbc``.\n\nMosek\n=====\nAnother alternative is the `Mosek solver <https://www.mosek.com/>`_. Note that it is a commercial solver and you need a license for it. Mosek is a good alternative to deal with QPs, SOCPs, and SDPs problems. You only need to use ``conda install -c mosek mosek`` for installation and request a license (academic or commercial).\nTo request the academic one, you can request `here <https://www.mosek.com/products/academic-licenses/>`_. Moreover, Mosek brings a `license guide <https://docs.mosek.com/9.2/licensing/index.html>`_. But if you are request an academic license, you will receive the license by email, and you only need to locate it in the following path ``C:\\Users\\(your user)\\mosek`` in your computer.\n\nUsers\n=====\n\nIf you are not planning on developing, please follows the instructions of the `Installation <#installation>`_.\n\nOnce installation is complete, `openSDUC <https://github.com/IIT-EnergySystemModels/openSDUC/tree/master>`_ can be executed in a test mode by using a command prompt.\nIn the directory of your choice, open and execute the openSDUC_run.py script by using the following on the command prompt (Windows) or Terminal (Linux). (Depending on what your standard python version is, you might need to call `python3` instead of `python`.):\n\n ``openSDUC_main``\n\nThen, four parameters (case, dir, solver, and console log) will be asked for.\n\n**Remark:** at this step only press enter for each input and openSDUC will be executed with the default parameters.\n\nAfter this in a directory of your choice, make a copy of the `9n <https://github.com/IIT-EnergySystemModels/openSDUC/tree/master/openSDUC/9n>`_ or `sSEP <https://github.com/IIT-EnergySystemModels/openSDUC/tree/master/openSDUC/sSEP>`_ case to create a new case of your choice but using the current format of the CSV files.\nA proper execution by ``openSDUC_Main`` can be made by introducing the new case and the directory of your choice. Note that the solver is **glpk** by default, but it can be changed by other solvers that pyomo supports (e.g., gurobi, mosek).\n\nThen, the **results** should be written in the folder who is called with the case name. The results contain plots and summary spreadsheets for multiple optimised energy scenarios, periods and load levels as well as the investment decisions.\n\n**Note that** there is an alternative way to run the model by creating a new script **script.py**, and write the following:\n\n ``from openSDUC.openSDUC import openSDUC_run``\n\n ``openSDUC_run(<case>, <dir>, <solver>)``\n",
"bugtrack_url": null,
"license": null,
"summary": "Open Stochastic Daily Unit Commitment of Thermal and ESS Units (openSDUC) - Version 1.3.31 - September 21, 2024",
"version": "1.3.31",
"project_urls": {
"Homepage": "https://pascua.iit.comillas.edu/aramos/openSDUC/index.html"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "d8f66ef9c068a55c685426662429e54a503f9e04ead55421ffe14472a49bbc03",
"md5": "4101e5525a388c44db42b88f44af1245",
"sha256": "58860454d5b8f4e9708c13770b1f6aaaa788ce8b18138ef77e2df3f2fd0123e3"
},
"downloads": -1,
"filename": "opensduc-1.3.31-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4101e5525a388c44db42b88f44af1245",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 220899,
"upload_time": "2024-09-23T12:25:50",
"upload_time_iso_8601": "2024-09-23T12:25:50.278245Z",
"url": "https://files.pythonhosted.org/packages/d8/f6/6ef9c068a55c685426662429e54a503f9e04ead55421ffe14472a49bbc03/opensduc-1.3.31-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a9bca807ace3d56f7ae8a4ff683824a54c28629ec71e2bdd8d9e8446635424a9",
"md5": "9cb27cafdc30430df88cbe249297cd60",
"sha256": "9d530b08243b5a911ccf37bccd929442042bf8bd69fad4be46a27d7e4764fbc9"
},
"downloads": -1,
"filename": "opensduc-1.3.31.tar.gz",
"has_sig": false,
"md5_digest": "9cb27cafdc30430df88cbe249297cd60",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 578926,
"upload_time": "2024-09-23T12:25:53",
"upload_time_iso_8601": "2024-09-23T12:25:53.413773Z",
"url": "https://files.pythonhosted.org/packages/a9/bc/a807ace3d56f7ae8a4ff683824a54c28629ec71e2bdd8d9e8446635424a9/opensduc-1.3.31.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-23 12:25:53",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "opensduc"
}