Skip to content

Commit

Permalink
Merge pull request #10 from IDAES/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
rundxdi authored Mar 25, 2024
2 parents 04c214e + c4ace61 commit ca8e67e
Show file tree
Hide file tree
Showing 8 changed files with 110 additions and 149 deletions.
11 changes: 9 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
# IDAES-GTEP
IDAES Generation and Transmission Expansion Planning

<!-- BEGIN Status Badges -->
[![GitHub CI](https://github.com/IDAES/idaes-gtep/actions/workflows/test_pr_and_main.yml/badge.svg?branch=main&event=push)](https://github.com/IDAES/idaes-gtep/actions/workflows/test_pr_and_main.yml)
[![Documentation Status](https://readthedocs.org/projects/idaes-gtep/badge/?version=latest)](http://idaes-gtep.readthedocs.org/en/latest/)
<!-- END Status Badges -->

[Documentation](https://idaes-gtep.readthedocs.io)
The IDAES Generation and Transmission Expansion Planning (GTEP) package provides a [Pyomo](https://github.com/Pyomo/pyomo)-based implementation of a modular, flexible, Generalized Disjunctive Programming (GDP) formulation for power infrastructure planning problems. This formulation is designed with the following goals in mind:

- Abstract GTEP modeling away from any particular case study or fixed modeling assumptions (e.g., technologies, temporal resolution, spatial resolution, policy implications, etc.)
- Admit flexible decision sets and heterogeneous parameterization
- Allow high-level modeling options to be understood easily, chosen modularly, and changed rapidly

You can find the latest documentation [here](https://idaes-gtep.readthedocs.io).
3 changes: 3 additions & 0 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information

import os
import sys

sys.path.insert(0, os.path.abspath("../.."))

project = "idaes-gtep"
copyright = "2024, Kyle Skolfield"
Expand Down
10 changes: 9 additions & 1 deletion docs/source/data.rst
Original file line number Diff line number Diff line change
@@ -1,2 +1,10 @@
Data
====
====
.. currentmodule:: gtep.gtep_data

.. automodule:: gtep
:members:

.. automodule:: gtep.gtep_data
:members:

1 change: 1 addition & 0 deletions docs/source/modeling.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
Modeling
=============================
.. currentmodule:: gtep.gtep_model

.. automodule:: gtep
:members:
Expand Down
2 changes: 1 addition & 1 deletion gtep/driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
data_object = ExpansionPlanningData()
data_object.load_prescient(data_path)
mod_object = ExpansionPlanningModel(
data=data_object, num_reps=1, len_reps=1, num_commit=1, num_dispatch=1
data=data_object.md, num_reps=1, len_reps=1, num_commit=1, num_dispatch=1
)
mod_object.create_model()
TransformationFactory("gdp.bound_pretransformation").apply_to(mod_object.model)
Expand Down
10 changes: 10 additions & 0 deletions gtep/gtep_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,17 @@


class ExpansionPlanningData:
"""Standard data storage class for the IDAES GTEP model."""

def __init__(self):
pass

def load_prescient(self, data_path, options_dict=None):
"""Loads data structured via Prescient data loader.
:param data_path: Folder containing the data to be loaded
:param options_dict: Options dictionary to pass to the Prescient data loader, defaults to None
"""
self.data_type = "prescient"
options_dict = {
"data_path": data_path,
Expand All @@ -25,6 +32,7 @@ def load_prescient(self, data_path, options_dict=None):
"sced_frequency_minutes": 60,
"ruc_horizon": 36,
}

prescient_options = PrescientConfig()
prescient_options.set_value(options_dict)
# Use prescient data provider to load in sequential data for representative periods
Expand Down Expand Up @@ -73,6 +81,8 @@ def load_prescient(self, data_path, options_dict=None):
self.representative_data = data_list

def load_default_data_settings(self):
## TODO: too many of these are hard coded; everything should check if it exists too.
"""Fills in necessary but unspecified data information."""
for gen in self.md.data["elements"]["generator"]:
self.md.data["elements"]["generator"][gen]["lifetime"] = 3
self.md.data["elements"]["generator"][gen]["spinning_reserve_frac"] = 0.1
Expand Down
Loading

0 comments on commit ca8e67e

Please sign in to comment.