Skip to content

Commit d238adb

Browse files
authored
Merge pull request #2 from sandialabs/v1.1.0
V1.1.0
2 parents 8ca9d37 + 4bf9921 commit d238adb

File tree

14 files changed

+712
-20
lines changed

14 files changed

+712
-20
lines changed

Data/RTS_GMLC/reserves/reserves_timeseries/Regulation UP_timeseries_DA.csv renamed to Data/RTS_GMLC/reserves/reserves_timeseries/Regulation Up_timeseries_DA.csv

File renamed without changes.

Images/GUI.png

143 KB
Loading

README.md

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
# **QuESt PCM**: A Production Cost Modeling Tool with High-Fidelity Models of Energy Storage Systems
88

9-
Current release version: 1.0.0
9+
Current release version: 1.1.0
1010

1111
## Table of Contents
1212
- [Introduction](#intro)
@@ -69,19 +69,19 @@ Ensure an optimization solver is installed on your machine. For best performance
6969
python -m pip install virtualenv
7070
```
7171

72-
2. Create a virtual environment (named `venv`):
72+
2. Create a virtual environment (named `pcm_venv`):
7373
```bash
74-
python -m virtualenv venv
74+
python -m virtualenv pcm_venv
7575
```
7676

7777
3. Activate the virtual environment:
7878
- On Windows:
7979
```bash
80-
.\venv\Scripts\activate
80+
.\pcm_venv\Scripts\activate
8181
```
8282
- On macOS/Linux:
8383
```
84-
source <env_name>/bin/activate
84+
source pcm_venv/bin/activate
8585
```
8686

8787
### Cloning the Repository and Installing Dependencies
@@ -99,7 +99,7 @@ Ensure an optimization solver is installed on your machine. For best performance
9999

100100
3. Install Dependencies:
101101
```bash
102-
python -m pip install -r requirements.txt
102+
pip install -e .
103103
```
104104
[Back to Top](#top)
105105

@@ -113,12 +113,22 @@ The network, generator, reserve, and storage data are all input as .csv files. T
113113
### Configure the Input File
114114

115115
Before running the simulation, configure the input yaml file in [Config](config/) directory with the specific simulation parameters. Open the file in a text editor and adjust the parameters according to your requirements. The guidelines for setting up the config files are present in [config_readme](config/config_readme.md).
116-
### Run the Program
116+
### Option 1: Run the Program using Command Line
117117

118-
Use the example script to run the simulation. Before running, update the main_data_path and yaml_path variables in the script to point to your desired system. Then, with your virtual environment activated, execute the script from the command line as follows:
118+
First, make sure that you are in the main project directory. Then, use the `example_script.py` to run the simulation. Before running, update the main_data_path, yaml_path, and result_path variables in the script to point to your desired system. Then, with your virtual environment activated, execute the script from the command line as follows:
119119
```
120120
python example_script.py
121121
```
122+
### Option 2: Run the Program using GUI
123+
124+
From any directory, with your virtual environment activated, run the command:
125+
```
126+
quest_pcm
127+
```
128+
When the GUI (shown below) opens, first browse to and select the data directory and YAML file. The YAML file can also be edited directly within the GUI to adjust simulation parameters. Once everything is set, click `Run Simulation`. After the simulation finishes, a new button `Open Results Folder` will appear that links to the results directory for that run.
129+
130+
<img src = "Images/GUI.png" width="800" alt="Results" />
131+
122132
### Analyze the Results
123133

124134
Simulation results are stored in the [Results](Results/) directory. Separate timestamp folders are generated for each simulation run. Some key results from each simulation run include: system generation dispatch, operation costs, ancillary service allocations, and storage dispatch characteristics. Detailed decription of QuESt PCM outputs and file organization are present in the [output_readme](Results/output_readme.md).

config/GMLC_config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ fixed_renewable_types: #Renewables whose output capacity is fixed and not dispat
2626
# "fixed" = Fixed MW value, "percentage" = Demand percentage of system or zone, "timeseries" = user provided data for each period
2727
# "fixed and "percentage" are reserve values are extracted from "reserves_default_DA.csv and reserves_default_RT.csv" file and "timeseries" are extracted from from reserves_timeseries folder
2828
System Reserve: percentage
29-
Regulation Up: fixed
29+
Regulation Up: timeseries
3030
Regulation Down: timeseries
3131
Spinning Reserve: timeseries
3232
NonSpinning Reserve: None

example_script.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@
1616
simulator.create_DA_RT_models()
1717
simulator.simulate_market()
1818

19-
result_processor = ResultManager(simulator)
19+
result_path = "Results/"
20+
result_processor = ResultManager(simulator, result_path)
2021
result_processor.export_results()

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ ply==3.11
2121
Pygments==2.19.2
2222
pyomo==6.9.4
2323
pyparsing==3.2.5
24+
pyside6==6.10.2
2425
pytest==9.0.2
2526
python-dateutil==2.9.0.post0
2627
pytz==2025.2

setup.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
from setuptools import setup, find_packages
2+
3+
setup(
4+
name="quest_pcm",
5+
version="1.1.0",
6+
description="A production cost modeling tool with enhanced storage models.",
7+
author="Dilip Pandit (dpandit@sandia.gov)",
8+
packages=find_packages(),
9+
include_package_data=True,
10+
install_requires=[
11+
"colorama==0.4.6",
12+
"contourpy==1.3.3",
13+
"coramin==0.1.1",
14+
"cycler==0.12.1",
15+
"et_xmlfile==2.0.0",
16+
"fonttools==4.61.1",
17+
"iniconfig==2.3.0",
18+
"kiwisolver==1.4.9",
19+
"matplotlib==3.10.8",
20+
"narwhals==2.14.0",
21+
"networkx==3.6.1",
22+
"numpy==2.3.5",
23+
"openpyxl==3.1.5",
24+
"packaging==25.0",
25+
"pandas==2.3.3",
26+
"pillow==12.0.0",
27+
"plotly==6.5.0",
28+
"pluggy==1.6.0",
29+
"ply==3.11",
30+
"Pygments==2.19.2",
31+
"pyomo==6.9.4",
32+
"pyparsing==3.2.5",
33+
"pyside6==6.6.2",
34+
"pytest==9.0.2",
35+
"python-dateutil==2.9.0.post0",
36+
"pytz==2025.2",
37+
"PyYAML==6.0.3",
38+
"rainflow==3.2.0",
39+
"scipy==1.16.3",
40+
"seaborn==0.13.2",
41+
"six==1.17.0",
42+
"tzdata==2025.3",
43+
"gridx_egret @ git+https://github.com/grid-parity-exchange/Egret.git@c6f4f2c5c18727aabf2c20ce1edae941d2b6f843",
44+
],
45+
python_requires=">=3.11",
46+
entry_points={
47+
"console_scripts": [
48+
"quest_PCM=src.__app__:main",
49+
],
50+
},
51+
)

0 commit comments

Comments
 (0)