O Egret é um pacote baseado em Python para otimização de grade elétrica com base na linguagem de modelagem de otimização de Pyomo. O Egret foi projetado para ser amigável para realizar análises de alto nível (por exemplo, como um mecanismo para resolver diferentes formulações de otimização), além de proporcionar flexibilidade para os pesquisadores explorarem rapidamente novas formulações de otimização.
Principais características:
O egret está disponível sob a licença BSD (consulte License.txt)
O egret é um pacote Python e, portanto, requer uma instalação do Python. Recomendamos o uso do Anaconda com o mais recente Python (https://www.anaconda.com/distribution/).
Essas instruções de instalação assumem que você tem uma versão recente do Pyomo instalada, além de um conjunto de solucionadores relevantes (consulte www.pyomo.org para obter detalhes adicionais).
Download (ou clone) egret deste site do Github.
Na pasta principal da Egret (ou seja, a pasta que contém setup.py), use um terminal (ou o prompt de anaconda para usuários do Windows) para executar o setup.py para instalar o egret na instalação do Python - da seguinte forma:
pip install -e .
Além disso, recomendamos que os usuários do EGRET instalem o solucionador de MIP CBC de código aberto. A mecânica específica da instalação da CBC é específica da plataforma. Ao usar o Anaconda nas plataformas Linux e Mac, isso pode ser realizado simplesmente por:
conda install -c conda-forge coincbc
A Organização de Coin-Or-Who Developers CBC-também fornece binários pré-construídos para uma gama completa de plataformas em https://bintray.com/coin-or/download.
Para testar a funcionalidade dos aspectos de comprometimento da unidade do GEGRET, execute o seguinte comando a partir do subdiretório Modelos/Testes do Garret:
pytest test_unit_commitment.py
Se o Gret puder encontrar um solucionador de MIP comercial no seu sistema via Pyomo, o GEGRET executará uma grande suíte de teste, incluindo a solução de vários MIPs para a otimização. Se o Garter puder encontrar apenas um solucionador de código aberto, ele executará uma suíte de teste mais limitada, que depende principalmente da solução de relaxamentos de LP. Exemplo de saída está abaixo.
=================================== 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 =========================
Se você estiver usando a funcionalidade de comprometimento da unidade do garça, cite o seguinte artigo:
Em formulações de programação mista-inteira para o problema de compromisso da unidade Bernard Knueven, James Ostrowski e Jean-Paul Watson. Informa o Journal on Computing (antes da impressão) https://pubsonline.informs.org/doi/10.1287/ijoc.2019.0944