EGRET est un package basé sur Python pour l'optimisation électrique du réseau basé sur le langage de modélisation d'optimisation Pyomo. EGRET est conçu pour être convivial pour effectuer une analyse de haut niveau (par exemple, en tant que moteur pour résoudre différentes formulations d'optimisation), tout en offrant aux chercheurs la flexibilité des chercheurs d'explorer rapidement de nouvelles formulations d'optimisation.
Caractéristiques principales:
EGRET est disponible sous la licence BSD (voir Licence.txt)
EGRET est un package Python et nécessite donc une installation Python. Nous vous recommandons d'utiliser Anaconda avec le dernier Python (https://www.anaconda.com/distribution/).
Ces instructions d'installation supposent que vous avez une version récente de Pyomo installée, en plus d'une suite de solveurs pertinents (voir www.pyomo.org pour plus de détails).
Téléchargez (ou clone) EGRET à partir de ce site GitHub.
Dans le dossier EGRET principal (c'est-à-dire le dossier contenant setup.py), utilisez un terminal (ou l'invite Anaconda pour les utilisateurs de Windows) pour exécuter setup.py pour installer EGRET dans votre installation Python - comme suit:
pip install -e .
Nous recommandons en outre aux utilisateurs EGRET d'installer le solveur CBC MIP open source. Les mécanismes spécifiques de l'installation de CBC sont spécifiques à la plate-forme. Lorsque vous utilisez Anaconda sur les plates-formes Linux et Mac, cela peut être accompli simplement par:
conda install -c conda-forge coincbc
L'organisation COIN-OR - OMS Developers CBC - fournit également des binaires pré-construits pour une gamme complète de plates-formes sur https://bintray.com/coin-or/download.
Pour tester la fonctionnalité des aspects d'engagement unitaire de EGRET, exécutez la commande suivante à partir du sous-directeur des modèles / tests EGRET:
pytest test_unit_commitment.py
Si EGRET peut trouver un solveur MIP commercial sur votre système via Pyomo, EGRET exécutera une grande suite de tests, y compris la résolution de plusieurs MIP à l'optimalité. Si EGRET ne peut trouver qu'un solveur open-source, il exécutera une suite de test plus limitée qui s'appuie principalement sur la résolution des relaxations LP. L'exemple de sortie est ci-dessous.
=================================== test session starts ==================================
platform darwin -- Python 3.7.7, pytest-5.4.2, py-1.8.1, pluggy-0.13.0
rootdir: /home/some-user/egret
collected 21 items
test_unit_commitment.py s.................... [100%]
========================= 20 passed, 1 skipped in 641.80 seconds =========================
Si vous utilisez la fonctionnalité d'engagement unitaire de EGRET, veuillez citer l'article suivant:
Sur les formulations de programmation mixtes pour le problème d'engagement de l'unité Bernard Knueven, James Ostrowski et Jean-Paul Watson. Informe le journal sur l'informatique (avant l'impression) https://pubsonline.informs.org/doi/10.1287/ijoc.2019.0944