{"id":23073,"name":"ReEDS","description":"A capacity planning and dispatch model for the North American electricity system.","url":"https://github.com/NatLabRockies/ReEDS-2.0","last_synced_at":"2026-05-27T00:30:33.225Z","repository":{"id":180545417,"uuid":"189060033","full_name":"NatLabRockies/ReEDS-2.0","owner":"NatLabRockies","description":null,"archived":true,"fork":false,"pushed_at":"2026-04-22T13:55:19.000Z","size":1346258,"stargazers_count":175,"open_issues_count":7,"forks_count":81,"subscribers_count":128,"default_branch":"main","last_synced_at":"2026-05-14T21:50:48.876Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://docs.nlr.gov/docs/fy26osti/93617.pdf","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NatLabRockies.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-05-28T15:57:01.000Z","updated_at":"2026-05-13T05:44:29.000Z","dependencies_parsed_at":"2023-07-13T18:15:57.691Z","dependency_job_id":"25f08d4a-d6e4-4334-94b7-85e096aba1f1","html_url":"https://github.com/NatLabRockies/ReEDS-2.0","commit_stats":{"total_commits":52,"total_committers":16,"mean_commits":3.25,"dds":0.6538461538461539,"last_synced_commit":"e65ed5ed4ffff973071839481309f77d12d802cd"},"previous_names":["nrel/reeds_openaccess","nrel/reeds-2.0","natlabrockies/reeds-2.0"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/NatLabRockies/ReEDS-2.0","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2FReEDS-2.0","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2FReEDS-2.0/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2FReEDS-2.0/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2FReEDS-2.0/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NatLabRockies","download_url":"https://codeload.github.com/NatLabRockies/ReEDS-2.0/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2FReEDS-2.0/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33053144,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-15T02:00:06.351Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"NatLabRockies","name":"National Laboratory of the Rockies","uuid":"1906800","kind":"organization","description":"","email":null,"website":"http://www.nrel.gov","location":"Golden, CO","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1906800?v=4","repositories_count":599,"last_synced_at":"2026-01-22T09:57:55.744Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/NatLabRockies","funding_links":[],"total_stars":9633,"followers":1309,"following":0,"created_at":"2022-11-02T20:42:15.539Z","updated_at":"2026-01-22T09:57:55.745Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NatLabRockies","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NatLabRockies/repositories"},"packages":[],"commits":{"id":11615208,"full_name":"NatLabRockies/ReEDS-2.0","default_branch":"master","total_commits":83,"total_committers":12,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":6.916666666666667,"dds":0.5421686746987953,"past_year_total_commits":15,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":15.0,"past_year_dds":0.0,"last_synced_at":"2026-05-23T08:03:18.853Z","last_synced_commit":"2f583ff5af61b36b0bed43a2deb6a2c1a1104650","created_at":"2026-01-25T01:00:31.015Z","updated_at":"2026-05-23T08:01:42.179Z","committers":[{"name":"Mindermann, Kennedy","email":"Kennedy.Mindermann@nrel.gov","login":"kennedy-mindermann","count":38},{"name":"Cole, Wesley","email":"Wesley.Cole@nrel.gov","login":"wesleyjcole","count":22},{"name":"keurek","email":"54901548+keurek","login":"keurek","count":9},{"name":"mmowers","email":"Matthew.Mowers@nrel.gov","login":null,"count":4},{"name":"Maxwell Brown","email":"Maxwell.Brown@nrel.gov","login":null,"count":2},{"name":"Ho","email":"jho@nrel.gov","login":null,"count":2},{"name":"bsergi","email":"Brian.Sergi@nrel.gov","login":"bsergi","count":1},{"name":"Stuart Cohen","email":"34522780+stuartcohen8","login":"stuartcohen8","count":1},{"name":"Maxwell Brown","email":"maxwell.l.brown@gmail.com","login":"maxxb77","count":1},{"name":"Jonathan Ho","email":"vcelloho@gmail.com","login":"vcelloho","count":1},{"name":"David Baker","email":"drbaker2@gmail.com","login":"davvidbaker","count":1},{"name":"scohen","email":"stuart.cohen@nrel.gov","login":null,"count":1}],"past_year_committers":[{"name":"Mindermann, Kennedy","email":"Kennedy.Mindermann@nrel.gov","login":"kennedy-mindermann","count":15}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2FReEDS-2.0/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-25T00:00:11.816Z","repositories_count":6241379,"commits_count":883235540,"contributors_count":34915109,"owners_count":1157366,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"NatLabRockies/ReEDS-2.0","html_url":"https://github.com/NatLabRockies/ReEDS-2.0","last_synced_at":"2026-05-05T04:03:27.058Z","status":"error","issues_count":3,"pull_requests_count":4,"avg_time_to_close_issue":740082.0,"avg_time_to_close_pull_request":372854.5,"issues_closed_count":2,"pull_requests_closed_count":4,"pull_request_authors_count":2,"issue_authors_count":2,"avg_comments_per_issue":3.0,"avg_comments_per_pull_request":0.25,"merged_pull_requests_count":3,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":3,"past_year_pull_requests_count":4,"past_year_avg_time_to_close_issue":740082.0,"past_year_avg_time_to_close_pull_request":372854.5,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":4,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":3.0,"past_year_avg_comments_per_pull_request":0.25,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"created_at":"2026-01-29T13:00:11.343Z","updated_at":"2026-05-05T04:03:27.058Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2FReEDS-2.0","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2FReEDS-2.0/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"COLLABORATOR":3},"pull_request_author_associations_count":{"COLLABORATOR":4},"issue_authors":{"samgdotson":2,"vaduraes":1},"pull_request_authors":{"kennedy-mindermann":3,"samgdotson":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-23T00:00:30.079Z","repositories_count":14670723,"issues_count":34114325,"pull_requests_count":111622490,"authors_count":11270516,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"COLLABORATOR":3},"past_year_pull_request_author_associations_count":{"COLLABORATOR":4},"past_year_issue_authors":{"samgdotson":2,"vaduraes":1},"past_year_pull_request_authors":{"kennedy-mindermann":3,"samgdotson":1},"maintainers":[{"login":"kennedy-mindermann","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/kennedy-mindermann"},{"login":"samgdotson","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/samgdotson"},{"login":"vaduraes","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/vaduraes"}],"active_maintainers":[{"login":"kennedy-mindermann","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/kennedy-mindermann"},{"login":"samgdotson","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/samgdotson"},{"login":"vaduraes","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/vaduraes"}]},"events":{"total":{"DeleteEvent":1,"PullRequestEvent":1,"IssuesEvent":1,"WatchEvent":2,"IssueCommentEvent":1,"PushEvent":24,"PullRequestReviewEvent":1,"CreateEvent":6},"last_year":{"DeleteEvent":1,"PullRequestEvent":1,"IssuesEvent":1,"WatchEvent":2,"IssueCommentEvent":1,"PushEvent":24,"PullRequestReviewEvent":1,"CreateEvent":6}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"environment.yml","sha":null,"kind":"manifest","created_at":"2023-07-13T18:15:57.449Z","updated_at":"2023-07-13T18:15:57.449Z","repository_link":"https://github.com/NatLabRockies/ReEDS-2.0/blob/main/environment.yml","dependencies":[{"id":11419352067,"package_name":"geopandas","ecosystem":"pypi","requirements":"==0.10.2","direct":true,"kind":"runtime","optional":false},{"id":11419352068,"package_name":"cmocean","ecosystem":"pypi","requirements":"==2.0","direct":true,"kind":"runtime","optional":false},{"id":11419352069,"package_name":"gdxpds","ecosystem":"pypi","requirements":"==1.2.0","direct":true,"kind":"runtime","optional":false},{"id":11419352070,"package_name":"shapely","ecosystem":"pypi","requirements":"==1.8.0","direct":true,"kind":"runtime","optional":false},{"id":11419352071,"package_name":"proj","ecosystem":"pypi","requirements":"==0.2.0","direct":true,"kind":"runtime","optional":false},{"id":11419352072,"package_name":"pyproj","ecosystem":"pypi","requirements":"==3.3.0","direct":true,"kind":"runtime","optional":false}]}],"score":7.688913336864795,"created_at":"2023-09-12T07:38:19.973Z","updated_at":"2026-05-27T00:30:33.226Z","avatar_url":"https://github.com/NatLabRockies.png","language":"Python","category":"Energy Systems","sub_category":"Global and Regional Energy System Models","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# ReEDS 2.0\n\n![Image of NREL Logo](/images/nrel-logo.png)\n\n## Welcome to the Regional Energy Deployment System (ReEDS) Model!\n\nThis GitHub repository contains the source code for NREL\u0026#39;s ReEDS model. The ReEDS model source code is available at no cost from the National Renewable Energy Laboratory. The ReEDS model can be downloaded or cloned from [https://github.com/NREL/ReEDS-2.0](https://github.com/NREL/ReEDS-2.0). \n\nA ReEDS training video (based on the 2020 version of ReEDS) is available on the NREL YouTube channel at https://youtu.be/aGj3Jnspk9M?si=iqCRNn5MbGZc8ZIO.\n\n## Contents\n\n* [Introduction](#Introduction)\n* [Required Software](#Software)\n* [Computer Setup](#Setup)\n  * [For Microsoft Windows 10](#Setup-Windows)\n    * [ReEDS Repository Configuration](#ConfigRepo)\n    * [Python Configuration](#ConfigPy)\n    * [GAMS Configuration](#ConfigGAMS)\n  * [For MacOS](#Setup-Mac)\n    * [GAMS Configuration](#ConfigGAMS-Mac)\n    * [Python Configuration](#ConfigPy-Mac)\n    * [ReEDS Repository Configuration](#ConfigRepo-Mac)\n  * [Special Case Setup Requirements](#Special-Requirements)\n* [Executing the Model](#Execution)\n  * [Prompts for user input during \u0026quot;runbatch.py\u0026quot;](#Prompts)\n  * [Runbatch.py Execution Protocol](#RunBatch)\n  * [Case-specific Batch File Execution Protocol](#CaseBatch)\n* [Documentation](#Documentation)\n* [Model Architecture](#Architecture)\n  * [Modules](#Modules)\n  * [Tracking Capital Stock](#Stock)\n* [Frequently Asked Questions](#FAQ)\n  * [How much are the GAMS licensing fees?](#Fees)\n  * [Is there a trial version of the GAMS license so I can test ReEDS?](#Trial)\n  * [What computer hardware is necessary to run ReEDS?](#Hardware)\n  * [Can I configure a ReEDS case to run as an isolated interconnect?](#Interconnect)\n* [Contact Us](#Contact)\n* [Appendix](#Appendix)\n  * [ReEDS Model Switches](#Switches)\n  * [Tips for reducing solve time](#SolveTime)\n\n\u003ca name=\"Introduction\"\u003e\u003c/a\u003e\n# Introduction ([https://www.nrel.gov/analysis/reeds/](https://www.nrel.gov/analysis/reeds/)) \n\nThe Regional Energy Deployment System (ReEDS) is a capacity planning and dispatch model for the North American electricity system.\n\nAs NREL\u0026#39;s flagship long-term power sector model, ReEDS has served as the primary analytic tool for many studies ([https://www.nrel.gov/analysis/reeds/publications.html](https://www.nrel.gov/analysis/reeds/publications.html)) of important energy sector research questions, including clean energy policy, renewable grid integration, technology innovation, and forward-looking issues of the generation and transmission infrastructure. Data from the most recent base case and a suite of Standard Scenarios are provided.\n\nReEDS uses high spatial resolution and high-fidelity modeling. Though it covers a broad geographic and technological scope, ReEDS is designed to reflect the regional attributes of energy production and consumption. Unique among long-term capacity expansion models, ReEDS possesses advanced algorithms and data to represent the cost and value of variable renewable energy; the full suite of other major generation technologies, including fossil and nuclear; and transmission and storage expansion options. Used in combination with other NREL tools, data, and expertise, ReEDS can provide objective and comprehensive electricity system futures.\n\n\u003ca name=\"Software\"\u003e\u003c/a\u003e\n# Required Software\n\nThe ReEDS model is written primarily in GAMS with auxiliary modules written in Python. R is used for the demand module, which is not active by default, and therefore need not be installed unless you plan on working with that module. At present, NREL uses the following software versions: GAMS 30.3; Python 3.6.5; R 3.4.4. Other versions of these software may be compatible with ReEDS, but NREL has not tested other versions at this time.\n\nGAMS is a mathematical programming software from the GAMS Development Corporation. \u0026quot;The use of GAMS beyond the limits of the free demo system requires the presence of a valid GAMS license file.\u0026quot; [[1](https://www.gams.com/latest/docs/UG_License.html)] The ReEDS model requires the GAMS Base Module and a linear programming (LP) solver (e.g., CPLEX). The LP solver should be connected to GAMS with either a GAMS/Solver license or a GAMS/Solver-Link license. \u0026quot;A GAMS/Solver connects the GAMS Base module to a particular solver and includes a license for this solver to be used through GAMS. It is not necessary to install additional software. A GAMS/Solver-Link connects the GAMS Base Module to a particular solver, but does not include a license for the solver. It may be necessary to install additional software before the solver can be used.\u0026quot; [[2](https://www.gams.com/products/buy-gams/)]\n\nNREL subscribes to the GAMS/CPLEX license for the LP solver, but open-source solvers and free, internet-based services are also available. \n* The [_COIN-OR Optimization Suite_](https://www.coin-or.org/downloading/) includes open-source solvers that can be linked with GAMS through the GAMS Base Module. NREL has tested the use of the COIN-OR Linear Programming (CLP) solver for ReEDS. More information about using CLP for ReEDS can be found [_here_](https://www.nrel.gov/docs/fy21osti/77907.pdf). \n* The [_NEOS Server_](https://neos-server.org/neos/) is a free, internet-based service for solving numerical optimization problems. Links with NEOS can be made through [_KESTREL_](https://www.gams.com/latest/docs/S_KESTREL.html) which is included in GAMS Base Module. In its current form, ReEDS cannot be solved using NEOS due to the 16 MB limit on submissions to the server. However, modifications _could_ be made to ReEDS to _potentially_ reduce the data below to the required submission size. Note that some solvers available on the NEOS server are limited to non-commercial use. \n\nPython is \u0026quot;an object-oriented programming language, comparable to Perl, Ruby, Scheme, or Java.\u0026quot; [[3](https://wiki.python.org/moin/BeginnersGuide/Overview)] \u0026quot; Python is developed under an OSI-approved open source license, making it freely usable and distributable, even for commercial use. Python\u0026#39;s license is administered by the Python Software Foundation.\u0026quot; [[4](https://www.python.org/about/)]. NREL uses Conda to build the python environment necessary for ReEDS. Conda is a \u0026quot;package, dependency and environment management for any language.\u0026quot; [[5](https://docs.conda.io/en/latest/)]\n\nGit is a version-control tool used to manage code repositories. Included in Git is a unix style command line emulator called Git Bash, which is used by ReEDS to perform some initial setup tasks.\n\n\u003ca name=\"Setup\"\u003e\u003c/a\u003e\n# Computer Setup\n\n\u003ca name=\"Setup-Windows\"\u003e\u003c/a\u003e\n## For Microsoft Windows 10\n\nThe setup and execution of the ReEDS model can be accomplished using a command-line interpreter application and launching a command line interface (referred to as a \u0026quot;terminal window\u0026quot; in this document). For example, initiating the Windows Command Prompt application, i.e., cmd.exe, will launch a terminal window ([Figure 1](#Fig1)). (Note: If you have issues using command prompt, try using anaconda prompt or a git bash window)\n\n\u003ca name=\"Fig1\"\u003e\u003c/a\u003e\n![Image of Command Prompt](/images/cmd-prompt.png)\n\n*Figure 1. Screenshot of a Windows Command Prompt terminal window.*\n\n**SUGGESTON:** use a command line emulator such as ConEmu ([https://conemu.github.io/](https://conemu.github.io/)) for a more user-friendly terminal. The screenshots of terminal windows shown in this document are taken using ConEmu.\n\n**IMPORTANT:** Users should exercise Administrative Privileges when installing software. For example, right click on the installer executable for one of the required software (e.g., Anaconda3-2019.07-Windows-x86\\_64.exe) and click on \u0026quot;Run as administrator\u0026quot; ([Figure 2](#Fig2)). Alternatively, right click on the executable for the command line interface (e.g., Command Prompt) and click on \u0026quot;Run as administrator\u0026quot; ([Figure 3](#Fig3)). Then run the required software installer executables from the command line.\n\n\u003ca name=\"Fig2\"\u003e\u003c/a\u003e \n![Image of Run as Admin](/images/run-as-admin.png)\n\n*Figure 2. Screenshot of running an installer executable using \u0026quot;Run as administrator\u0026quot;.*\n\n\u003ca name=\"Fig3\"\u003e\u003c/a\u003e\n![Image of Run as Admin 2](/images/run-as-admin-2.png)\n \n*Figure 3. Screenshot of running \u0026quot;Command Prompt\u0026quot; with \u0026quot;Run as administrator\u0026quot;.*\n\n\u003ca name=\"ConfigRepo\"\u003e\u003c/a\u003e\n\n\n\n### ReEDS Repository Setup\nThe ReEDS source code is hosted on GitHub: https://github.com/NREL/ReEDS-2.0\n\n1. From the Git command line run the following command to enable large file storage.\n```\ngit lfs install\n```\n2. Clone the ReEDS-2.0 repository on your desktop. Alternatively, download a ZIP from GitHub ([Figure 4](#Fig4)).\n\n\u003ca name=\"Fig4\"\u003e\u003c/a\u003e\n![Image of GitHub Download](/images/github-download.png)\n \n*Figure 4. Screenshot of GitHub links to clone the ReEDS repository or download ZIP of the ReEDS files.*\n\n\u003ca name=\"ConfigPy\"\u003e\u003c/a\u003e\n### Python Configuration\n\nInstall Anaconda: [https://www.anaconda.com/download](https://www.anaconda.com/download).\n\n**IMPORTANT** : Be sure to download the Windows version of the installer.\n\nAdd Python to the \u0026quot;path\u0026quot; environment variable\n\n1. In the Windows start menu, search for \u0026quot;environment variables\u0026quot; and click \u0026quot;Edit the system environment variables\u0026quot; ([Figure 5](#Fig5)). This will open the \u0026quot;System Properties\u0026quot; window ([Figure 6](#Fig6)).\n\n\u003ca name=\"Fig5\"\u003e\u003c/a\u003e\n![Image of Search Environment Variable](/images/search-env-var.png)\n \n*Figure 5. Screenshot of a search for \u0026quot;environment variables\u0026quot; in the Windows start menu.*\n\n\u003ca name=\"Fig6\"\u003e\u003c/a\u003e \n![Image of System Properties Window](/images/sys-prop-win.png)\n \n*Figure 6. Screenshot of the \u0026quot;System Properties\u0026quot; window.*\n\n2. Click the \u0026quot;Environment Variables\u0026quot; button on the bottom right of the window ([Figure 6](#Fig6)). This will open the \u0026quot;Environment Variables\u0026quot; window ([Figure 7](#Fig7)).\n\n\u003ca name=\"Fig7\"\u003e\u003c/a\u003e \n![Image of Environment Variables Window](/images/env-var-win.png)\n \n*Figure 7. Edit the Path environment variable.*\n\n3. Highlight the Path variable and click \u0026quot;Edit\u0026quot; ([Figure 7](#Fig7)). This will open the \u0026quot;Edit environment variable\u0026quot; window ([Figure 8](#Fig8)).\n\n\u003ca name=\"Fig8\"\u003e\u003c/a\u003e\n![Image of Edit Environment Variables Window](/images/edit-env-var-win.png)\n\n*Figure 8. Append the Path environment.*\n\n4. Click \u0026quot;New\u0026quot; ([Figure 8](#Fig8)) and add the directory locations for \\Anaconda\\ and \\Anaconda\\Scripts to the environment path.\n\n**IMPORTANT** : Test the Python installation from the command line by typing \u0026quot;python\u0026quot; (no quotes) in the terminal window. The Python program should initiate ([Figure 9](#Fig9)).\n\n\u003ca name=\"Fig9\"\u003e\u003c/a\u003e\n![Image of Test Python](/images/py-test.png)\n\n*Figure 9. Screenshot of a test of Python in the terminal window.*\n\nIt is highly recommended to run ReEDS using the conda environment provided in the repository. This environment (named `reeds2`) is specified by the `environment.yml` and can be built with the following command:\n\n```\nconda env create -f environment.yml\n```\n\nYou can verify that the environment was successfully created using the following (you should see `reeds2` in the list):\n\n```\nconda env list\n```\n\n\u003ca name=\"ConfigGAMS\"\u003e\u003c/a\u003e\n### GAMS Configuration\n\nInstall GAMS: [https://www.gams.com/download/](https://www.gams.com/download/). NREL uses GAMS versions 45.2.0 and 34.3. Older versions might also work. A valid GAMS license must be installed. Please refer to the [Required Software](#Software) section above for more information.\n\nAdd GAMS to the \u0026quot;path\u0026quot; environment variable. Follow the same instructions as for adding Python to the path in the [Python Configuration](#ConfigPy) section above. Append the environment path with the directory location for the _gams.exe_ application (e.g., C:\\GAMS\\win64\\34).\n\n\n**IMPORTANT** : Test the GAMS installation from the command line by typing \u0026quot;gams\u0026quot; (no quotes) in the terminal window. The GAMS program should initiate (Figure 10).\n\n\u003ca name=\"Fig10\"\u003e\u003c/a\u003e\n![Image of Test GAMS](/images/gams-test.png)\n\n*Figure 10. Screenshot of a test of GAMS from the terminal window.*\n\n\u003ca name=\"Setup-Mac\"\u003e\u003c/a\u003e\n## For MacOS\n\u003ca name=\"ConfigGAMS-Mac\"\u003e\u003c/a\u003e\n### Download GAMS\n\nInstall GAMS: [https://www.gams.com/download/](https://www.gams.com/download/). A valid GAMS license must be installed. Please refer to the [Required Software](#Software) section above for more information.\n\n**IMPORTANT** When installing on Mac, on the 'Installlation Type' page, click 'customize' and ensure the box to 'Add GAMS to PATH' is checked.\n![Image of GAMS Install Mac](/images/gams-install-mac.png)\n\n**To validate GAMS was installed properly** execute the following command from a new terminal (without quotes): \"gams\"\n\nGAMS should initiate, you should see something similar to [Figure 10](#Fig10).\n\n\u003ca name=\"ConfigPy-Mac\"\u003e\u003c/a\u003e\n### Download Anaconda\nDownload the latest version of Anaconda: [https://www.anaconda.com/download](https://www.anaconda.com/download)\n\nDuring Installation, select to install Anaconda for your machine only.\n\n![Image of Anaconda Install Mac](/images/anaconda-install-mac.png)\n\nTo have the installer automatically add anaconda to PATH, ensure that you've selected the box to \"Add conda initialization to the shell\"\n\n![Image of Anaconda Install Mac - Customize Installation Type](/images/anaconda-custom-install-mac.png)\n\n**To validate Python was installed properly** execute the following command from a new terminal (without quotes): \"python\"\n\nPython should initiate, looking similar to [Figure 9](#Fig9).\n\n\n\u003ca name=\"ConfigRepo-Mac\"\u003e\u003c/a\u003e\n### Clone the ReEDS Code Repository\n\nThe ReEDS source code is hosted on GitHub: https://github.com/NREL/ReEDS-2.0\n\n1. From the Git command line run the following command to enable large file storage.\n```\ngit lfs install\n```\n2. Clone the ReEDS-2.0 repository on your desktop and use the repository with GitHub Desktop. Alternatively, download a ZIP from GitHub ([Figure 4](#Fig4)).\n\n\n### Set up the ReEDS conda environment\nIt is highly recommended to run ReEDS using the conda environment provided in the repository. This environment (named `reeds2`) is specified by the `environment.yml` and can be built with the following command - make sure you navigate to the ReEDS repository from terminal first: \n\n```\nconda env create -f environment.yml\n```\n\nYou can verify that the environment was successfully created using the following (you should see `reeds2` in the list):\n\n```\nconda env list\n```\n\n\n\u003ca name=\"Special-Requirements\"\u003e\u003c/a\u003e\n## Special Case Setup Requirements\n\nSome additional data is required to run the ReEDS model at the 'county' spatial resolution. This is currently considered a special case and some data was required to be kept outside the ReEDS repository because the data is simply too large. The hourly renewable capacity factor data is now available to all at : https://data.openei.org/submissions/5986\n\nFor users outside the NREL network, if you would like to run the model at county resolution, you are requested to download the files available from the link provided, unzip each folder, and place the files obtained, under inputs/variability/multi-year in the locally cloned ReEDS repository. The input_processing scripts have also been updated to check for these files for any county-level runs. For users within the NREL network, the scripts are designed to automatically copy the data from the network storage location. The 'cases_spatialflex.csv' file provides examples of specific switch settings to run ReEDS at county-level.\n\n\n\n\u003ca name=\"Execution\"\u003e\u003c/a\u003e\n# Executing the Model\nA ReEDS case (also referred to as a \u0026quot;run\u0026quot;, \u0026quot;scenario\u0026quot; or \u0026quot;instance\u0026quot;) is executed through a python-based case batching program called `runbatch.py` after the repository was setup. The user can execute a single case or a batch of cases using this program.\n\n**Step 1** : Specify the ReEDS case name(s) and configuration(s) in the case configuration file. ([Figure 11](#Fig11)). The default case configuration file name is called \u0026quot;cases.csv\u0026quot;, but the user may create custom case configuration files by using a suffix in the file name (e.g., \u0026quot;cases\\_test.csv\u0026quot;). The file \u0026quot;cases\\_test.csv\u0026quot; can be used to execute a \u0026quot;test\u0026quot; version of the model for the ERCOT system.\n\nWithin \u0026quot;cases.csv\u0026quot;, The data in Column A are the model \u0026quot;switches\u0026quot; (also referred to as \u0026quot;options\u0026quot;). The data in Column B are brief descriptions of the switches. The data in Column C are the default values of the switches. The case configuration (or set of switches that define a case) begin with Column D. Each case configuration is represented by a single column. The case name is specified in Row 1. The value for each switch is specified beginning in Row 2. If a switch value is left blank, default value from Column C is used. A complete list of switches is provided in the Appendix of this document.\n\n\u003ca name=\"Fig11\"\u003e\u003c/a\u003e\n![Image of Cases.csv](/images/cases-csv.png) \n\n*Figure 11. Screenshot of cases.csv.*\n\n**Step 2** : Initiate the case batching program\n\n1. Navigate to the ReEDS model directory in the file explorer or command prompt/window.\n2. Activate the `reeds2` conda environment: `conda activate reeds2`. For details on creating this environment, see the #ConfigPy section above. \n3. Enter `python runbatch.py` in a command prompt (be sure to be in the ReEDS directory) to run the ReEDS case batching program ([Figure 12](#Fig12)).\n4. Provide responses to the suite of prompts in the command line ([Figure 13](#Fig13)). Please refer to the [Prompts for user input during runbatch.py](#Prompts) section below for more information about the prompts.\n5. Once all responses have been received, the batching program will execute the case(s) specified in the case configuration file (e.g., \u0026quot;cases.csv\u0026quot;). A separate terminal window will be launched for each case ([Figure 14](#Fig14)).\n\n**Step 3** : Wait for each case to finish, check for successful completion, and view outputs. Once a case has finished (either from successful completion or from an error), the case-specific terminal window will close and a message in the main terminal window (i.e., where \u0026quot;runbatch.py\u0026quot; was initiated) will appear stating that the case has completed ([Figure 15](#Fig15)).\n\n \u003ca name=\"Fig12\"\u003e\u003c/a\u003e\n![Image of Execute RunBatch.py](/images/exe-runbatch.png) \n\n*Figure 12. Screenshot of initiating \u0026quot;runbatch.py\u0026quot; from the command line.*\n\n \u003ca name=\"Fig13\"\u003e\u003c/a\u003e\n![Image of RunBatch.py Prompts](/images/prompts.png)  \n\n*Figure 13. Screenshot of prompts for user input during \u0026quot;runbatch.py\u0026quot;.*\n\n \u003ca name=\"Fig14\"\u003e\u003c/a\u003e\n![Image of Case Window](/images/case-win.png) \n\n*Figure 14. Screenshot of a separate terminal window being launched for a case.*\n\n \u003ca name=\"Fig15\"\u003e\u003c/a\u003e\n![Image of Case Finish Message](/images/case-finish.png)  \n\n*Figure 15. Screenshot of a message in the main terminal window stating when a case has finished.*\n\n\u003ca name=\"Prompts\"\u003e\u003c/a\u003e\n## Prompts for user input during \u0026quot;runbatch.py\u0026quot;\n\nWhen a user initiates a batch of ReEDS cases through \u0026quot;runbatch.py\u0026quot;, a suite of prompts will appear in the terminal window. Additional details about these prompts are provided below.\n\n**Batch Prefix** **[string]** – Defines the prefix for files and directories that will be created for the batch of cases to be executed (as listed in a case configuration file, e.g., \u0026quot;cases.csv\u0026quot;).\n\n- All files and directories related to a case will be named \u0026quot;_{batch prefix}\\_{case}\u0026quot;_. For example, if _batch prefix_=\u0026quot;test\u0026quot; and _case_=\u0026quot;ref\\_seq\u0026quot;, then all files and directories related to this case will be named _test\\_ref\\_seq._ All files and directories for ReEDS cases are stored in a directory called \u0026quot;\\runs\u0026quot; \n- **WARNING! A batch prefix cannot start with a number given incompatibility with GAMS.** The GAMS model declaration statement is as follows:\n\n```\nmodel {batch prefix}_{case} /all/ ;\n```\n\nTherefore, \u0026quot;batch prefix\u0026quot; CANNOT begin with a numeric and SHOULD begin with an alpha character (e.g., a, A, b, B, …).\n\n- Entering a value of \u0026quot;0\u0026quot; (zero, no quotes) will assign the current date and time for the batch prefix in the form of _v{YYYYMMDD}\\_{HHMM}_. Note the preceding letter vee \u0026#39;v\u0026#39; is necessary to ensure the batch prefix begins with an alpha character.  For example, if _batch prefix_=\u0026quot;0\u0026quot; and _case_=\u0026quot;ref\\_seq\u0026quot; on September 30, 2019 at 3:00 PM (1500 hours military time), then all files and directories related to this case will be named _v20190930\\_1500\\_ref\\_seq_\n- **WARNING! Avoid re-using a (batch prefix, case) pair**. If a directory \u0026quot;\\runs\\{batch prefix}\\_{case}\u0026quot; already exists, a warning will be issued in the case-specific terminal window, but \u0026quot;runbatch.py\u0026quot; will overwrite data in the existing case directory ([Figure 16](#Fig16)). In some instances, the case execution will pause, and a message will appear in the case-specific terminal window \u0026quot;mv: replace […] overriding mode 0666?\u0026quot; ([Figure 17](#Fig17)). Pressing \u0026quot;Enter/Return\u0026quot; will continue the execution. NREL plans to address this overwriting issue in the future by requiring user approval to overwrite an existing case directory.\n\n \u003ca name=\"Fig16\"\u003e\u003c/a\u003e\n![Image of Duplicate Case Warning](/images/duplicate-case.png)  \n\n*Figure 16. Screenshot of warning message that appears in the main terminal window when reusing a (batch prefix, case) pair.*\n\n \u003ca name=\"Fig17\"\u003e\u003c/a\u003e\n![Image of Duplicate Case Warning 2](/images/duplicate-case-2.png)  \n \n*Figure 17. Screenshot of warning message that occurs in the case-specific terminal window when reusing a (batch prefix, case) pair.*\n\n**Case Suffix [string]**– Indicates which case configuration file—in the form \u0026quot;cases\\_{case suffix}.csv\u0026quot;—is ingested into \u0026quot;runbatch.py\u0026quot; for processing.\n\n- Entering an empty value (i.e., pressing \u0026quot;Enter/Return\u0026quot;) will cause the default case configuration file \u0026quot;cases.csv\u0026quot; to be used.\n- **SUGGESTION** : Users may want to create a custom case configuration file (\u0026quot;cases\\_{…}.csv\u0026quot;) when executing scenarios that vary from the default case configuration file (\u0026quot;case.csv\u0026quot;).\n\n**Number of Simultaneous Runs [integer]** – Indicates how many cases should be run simultaneously in parallel.\n\n- \u0026quot;runbatch.py\u0026quot; uses a queue to execute multiple cases.\n- If there are four (4) cases and the _Number of Simultaneous Runs_=1, then \u0026quot;runbatch.py\u0026quot; will execute the cases one at a time.\n- If there are four (4) cases and the _Number of Simultaneous Runs_=2, then \u0026quot;runbatch.py\u0026quot; will start two (2) cases simultaneously. Then as each case finishes a new one will start until all cases have been run.\n- **WARNING**! **Be mindful about the amount of CPU and RAM usage needed for each case.**\n  - Table 4 in the [What computer hardware is necessary to run ReEDS?](#Hardware) section below provides some initial data points for CPU and RAM usage.\n  - An Intertemporal solve will take significant resources unless simplified (through the case configuration).\n  - A Sequential solve has default value of four (4) threads in \u0026quot;cplex.opt\u0026quot;. The number of threads can be reduced, requiring less CPU resource usage.\n\n**Number of simultaneous CC/Curt runs [integer]** – Indicates how many threads are to be used for the capacity credit (CC) and curtailment (curt) batching program (\u0026quot;reflowbatch.py\u0026quot;).\n\n- This question is only asked when running intertemporal cases (i.e., timetype=\u0026quot;int\u0026quot; in the case configuration file).\n- With the intertemporal case, the linear program is formulated and solved for all years at once. Then the capacity credit and curtailment calculations are executed in parallel based on the _Number of simultaneous CC/Curt runs_ specified by the user.\n\n**How many iterations between the model and CC/Curt scripts [integer]**_–_ For an intertemporal case, the \u0026quot;runbatch.py\u0026quot; will execute an LP solve and then call the cc/curt scripts. The value assigned here determines how many of these iterations between the LP and the cc/curt scripts occur.\n\n- This question is only asked when running intertemporal cases (i.e., timetype=\u0026quot;int\u0026quot; in the case configuration file).\n- **SUGGESTION** : When executing an intertemporal case, it is good practice to set \u0026quot;cc\\_curt\\_load = 1\u0026quot; in \u0026quot;cases.csv\u0026quot; to enable pre-computed starting values for capacity credit and curtailment.\n- Currently, there is no convergence criterion enforced. Typically, 5-6 iterations are enough for convergence, i.e., the capacity credit and curtailment values have \u0026quot;small\u0026quot; deviations since the prior iteration.\n\n\u003ca name=\"RunBatch\"\u003e\u003c/a\u003e\n# Runbatch.py Execution Protocol\n\nBelow are the key steps that occur when a user initiates \u0026quot;runbatch.py\u0026quot;. Knowing these steps may help the user understand the source code of \u0026quot;runbatch.py\u0026quot; if modifications need to be made to the batching program.\n\n1. Request input from user though the command prompt.\n2. Ingest case names and case switches from the user-specified case configuration file (e.g., \u0026quot;cases.csv\u0026quot;)\n3. Create a new directory for each case (\\runs\\{batch\\_prefix}\\_{case}).\n4. Create a batch file of execution statements for each case: (\\runs\\{batch\\_prefix}\\_{case}\\call\\_{batch\\_prefix}\\_{case}.bat)\n5. All files from \u0026quot;runfiles.csv\u0026quot; are copied to \u0026quot;\\runs\\{batch\\_prefix}\\_{case}\\ \u0026quot;\n    * Any files from the root of the repository will be copied to \u0026quot;\\runs\\{batch\\_prefix}\\_{case}\\ \u0026quot;\n    * Any files from \u0026quot;\\inputs\\ \u0026quot; will be copied to \u0026quot;\\runs\\{batch\\_prefix}\\_{case}\\inputs\\_case\\ \u0026quot;\n6. Execute the batch file for each case in a new, case-specific window. This window will close when the case is finished. GAMS will produced files unique to each case that can help the user with error debugging:\n    * **GAMS Log File**\n      * Path: \u0026quot;\\runs\\{batch\\_prefix}\\_{case}\\gamslog.txt \u0026quot;\n      * Purpose: contains the log outputs for all execution statements from the case batch file\n      * **SUGGESTION** : This is a good place to check in which execution step errors may have occurred.\n    * **GAMS listing files (\\*.lst)**\n      * Path: \u0026quot;\\runs\\{batch\\_prefix}\\_{case}\\lstfiles\\ \u0026quot;\n      * Purpose: contains the listing files for GAMS executions\n      * **SUGGESTION** : This is a good place to check in which line of the source code errors may have occurred\n    * **GAMS workfile (\\*.g00)**\n      * Path: \u0026quot;\\runs\\{batch\\_prefix}\\_{case}\\g00files\\ \u0026quot;\n      * Purpose: stores a snapshot of all the model information available to GAMS at that point in the case execution.\n      * For more information about GAMS work files: [https://www.gams.com/latest/docs/UG\\_SaveRestart.html](https://www.gams.com/latest/docs/UG_SaveRestart.html)\n      * **SUGGESTION** : A failed case can be restarted from this snapshot point. The user can rerun the batch file for the case (\\runs\\{batch\\_prefix}\\_{case}\\call\\_{batch\\_prefix}\\_{case}.bat) after commenting out execution statements that completed successfully.\n7. Build outputs and standard visualization reports for each case that completes successfully.\n  * Following a successful run, a suite of .csv output files are created in: \u0026quot;\\runs\\{batch\\_prefix}\\_{case}\\outputs\\ \u0026quot;\n  * A standard .html visualization report is stored in: \u0026quot;\\runs\\{batch prefix}\\_{case}\\outputs\\reeds-report\\ \u0026quot;\n\n\u003ca name=\"CaseBatch\"\u003e\u003c/a\u003e\n## Case-specific Batch File Execution Protocol\n\n**Execute CreateModel.gms:**\n\n1. Execute B\\_Inputs.gms – ingest data from the files created by the input_processing scripts and format the data to be useful for the GAMS execution\n2. Execute C\\_SupplyModel.gms – declare the variables and constraints for the linear program\n3. Execute C\\_SupplyObjective.gms – declare the objective function for the linear program, broken into two parts (investment and operations)\n4. Execute D\\_SolvePrep.gms – initiate the LP solve and compute parameters based on switch values in the case configuration file (e.g., \u0026quot;cases.csv\u0026quot;)\n5. Create a GAMS work file at the completion of CreateModel.gms\n  1. Path: \u0026quot;\\runs\\{batch\\_prefix}\\_{case}\\g00files\\{batch\\_prefix}\\_{case}.g00\u0026quot;\n  2. For more information about GAMS work files: [https://www.gams.com/latest/docs/UG\\_SaveRestart.html](https://www.gams.com/latest/docs/UG_SaveRestart.html)\n\n**Execute the sequential solve structure** ([Figure 18](#Fig18))\n\nFor every year in the model horizon, execute d\\_solveoneyear.gms:\n\n1. Execute solve\n2. Execute d\\_callreflow.gms – Compute capacity credit and curtailment:\n  1. Execute ReEDS\\_capacity\\_credit.gms - compute the parameters necessary for ReEDS\\_capacity\\_credit.py (which computes the capacity credit)\n  2. Execute REflow\\_RTO\\_2\\_params.gms – translate the parameters from ReEDS 2.0 into their equivalents from ReEDS Heritage\n  3. Execute REflow\\_RTO\\_3.gms – compute curtailment using the syntax and structure from ReEDS Heritage\n  4. Execute d4\\_Translate\\_Variability.R – Translate the values from REflow\\_RTO\\_3.gms (ReEDS Heritage) back to the syntax and structure used in ReEDS 2.0\n\n \u003ca name=\"Fig18\"\u003e\u003c/a\u003e\n![Image of Sequential Flow](/images/seq-flow.png)  \n \n*Figure 18. Depiction of execution sequence for the \u0026quot;sequential\u0026quot; solve.*\n\n**Execute the intertemporal solve structure** ([Figure 19](#Fig19))\n\nFor each iteration (specified via the runbatch.py prompt),\n\n1. Execute d\\_solveallyears.gms\n2. Execute reflowbatch.py\n  1. Execute d\\_callreflow.gms – Compute capacity credit and curtailment; same process as for sequential, but for all years\n  2. Once all cc/curt calculations are done, files are merged via the GAMS gdxmerge utility\n3. Execute d5\\_mergevariability.R – The resulting file from the gdxmerge execution is restructured for use in GAMS during the next iteration of the intertemporal solve.\n\n \u003ca name=\"Fig19\"\u003e\u003c/a\u003e\n![Image of Intertemporal Flow](/images/inter-flow.png)  \n \n*Figure 19. Depiction of execution sequence for the \u0026quot;intertemporal\u0026quot; solve.*\n\n\u003ca name=\"Documentation\"\u003e\u003c/a\u003e\n# Documentation\n\nThe ReEDS Version 2020 Documentation is available at no cost from the National Renewable Energy Laboratory: [https://www.nrel.gov/docs/fy21osti/78195.pdf](https://www.nrel.gov/docs/fy21osti/78195.pdf)\n\nDetailed documentation of ReEDS 2.0 input files are available [here](/sources_documentation.md).\n\nThe source code in this repository is the ReEDS Version 2020 model. \n\n[Table 1](#Tab1) summarizes difference between Versions 2019 and 2020.\n\n\u003ca name=\"Tab1\"\u003e\u003c/a\u003e\n*Table 1. differences between ReEDS Versions 2019 and 2020.*\n\n**Inputs and Treatments**|**2019 Version (July 2019)**|**2020 Version (July 2020)**\n:-----:|:-----:|:-----:\nFuel prices|AEO2019|AEO2020\nDemand growth|AEO2019|AEO2020\nGenerator technology cost, performance, and financing|ATB 2019|ATB 2020\nRegional Greenhouse Gas Initiative (RGGI)|Virginia not included in RGGI|Virginia included in RGGI\nEndogenous retirements|Off by default; when turned on, plants retire when they cannot recover their fixed O\u0026M|On by default; when turned on, plants retire when they cannot recover at least half of their fixed O\u0026M\nCoal fixed O\u0026M|Escalate from online year|Escalates from 2019 using assumptions from AEO2019\nNuclear fixed O\u0026M|Escalate from 2010|Escalates from 2019 using assumptions from AEO2019\nWind, solar, and load data|Includes 2012 data only|Includes data for 2007–2013; dispatch is done using 2012 data and capacity credit calculations are done using 2007–2013 data (W. Cole, Greer, et al. 2020)\nElectrification|Not included|Includes three levels of electrification\nDemand-side flexibility|Not included|Includes three levels of flexibility\nRenewable fuel combustion turbine|Not included|Includes combustion turbine that runs on a generic renewable fuel with a minimum 6% capacity factor\nUpgrades|Not included|Thermal technologies can be upgraded (e.g., by adding CCS).\nStorage curtailment recovery|Assume that every 1 MWh of storage charging reduces curtailment in that region by 0.5 MWh|Uses hourly net load profiles and a dispatch algorithm to determine the amount of curtailment that can be recovered by storage\nBattery storage durations|4-hour batteries only|Includes 2-, 4-, 6-, 8-, and 10-hour battery storage\nStorage capacity credit|Calculated using one year of hourly data, applies a linear approximation in the optimization model|Calculated using seven years of hourly data; capacity credit bins by duration allow for nonlinear changes in the optimization model; one-hour buffer accounts for uncertainty in forecasts and ability to dispatch\nWind and solar capacity credit|Calculated using one year of hourly resource and load data|Calculated using seven years of hourly resource and load data\nWind supply curve|Exclusions based on land-use land-cover categories as specified in Lopez et al. (2012)|Spatially-explicit modeling of multiple exclusions and setbacks from buildings, roads, transmission rights-of-way, and radar along with other exclusion layers\nWind degradation|Not included|Annual degradation of 0.27% per year represented based on empirical data (Hamilton et al. 2020)\nPV degradation|0.5%/yr|0.7%/yr per the ATB 2020\nWind and solar curtailment|Modeled using convolutions of resource and load data at a time-slice resolution |Modeled using a simplified hourly dispatch model\nPumped-hydro capital cost|Static over time|Declines over time per Hydropower Vision (DOE 2016)\nStorage energy arbitrage value|Calculated at the ReEDS 17-time-slice resolution|Calculated using hourly prices\nMinimum capacity factor for NGCT|None|1% per PLEXOS runs of the 2019 Standard Scenarios\nTax credits|Use a three-year safe harbor construction period; tax credits for CCS not represented|Use a four-year safe harbor construction period; December 2019 production tax credit update represented; tax credits for CCS represented (use of captured carbon is not considered)\nState policies|Policies as of July 2019|Policies as of June 2020\nNuclear power plant assistance|Assistance for Illinois and New York represented|Assistance for Connecticut, Illinois, New Jersey, New York, and Ohio represented \nOutage rates|Outage rates based on 2003–2007 Generating Availability Data System data|Outage rates based on 2014–2018 Generating Availability Data System data\n\n### References\n* Cole, Wesley, Daniel Greer, Jonathan Ho, and Robert Margolis. \u0026quot;Considerations for maintaining resource adequacy of electricity systems with high penetrations of PV and storage.\u0026quot; Applied Energy 279 (2020): 115795.\n* U. S. Department of Energy 2016. \u0026quot;Hydropower Vision: A New Chapter for America’s 1st Renewable Electricity Source.\u0026quot; Technical Report DOE/GO-102016-4869. Washington, D.C.: U. S. Department of Energy. http://energy.gov/eere/water/articles/hydropower-vision-new-chapter-america-s-1st-renewable-electricity-source.\n* Lopez, A., B. Roberts, D. Heimiller, N. Blair, and G. Porro. 2012. \u0026quot;US Renewable Energy Technical Potentials: A GIS-Based Analysis.\u0026quot; Golden, CO: National Renewable Energy Laboratory. https://www.nrel.gov/docs/fy12osti/51946.pdf\n\n\u003ca name=\"Architecture\"\u003e\u003c/a\u003e\n# Model Architecture\n\n\u003ca name=\"Modules\"\u003e\u003c/a\u003e\n## Modules\n\nThe ReEDS model is comprised of several modules with one and two-way data exchange between the modules. [Figure 20](#Fig20) depicts these modules, including linkages between the modules and directions of data exchange. The supply module is the core module for ReEDS. Within a ReEDS execution, the key data exchanges occur between (1) the Supply Module and the Variable Resource Renewable (VRR) Modules for estimating Capacity Credit and Curtailment; and (2) the Supply Module and the Demand Module. These module interactions are dictated by the model execution approach, i.e., _sequential_ solves, _sliding window_ solves, or _intertemporal_ solves. [Figure 21](#Fig21) illustrates the _sequential_ approach; [Figure 22](#Fig22) the sliding window and intertemporal approaches.\n\n\u003ca name=\"Fig20\"\u003e\u003c/a\u003e\n![Image of ReEDS Modules](/images/modules.png)  \n\n*Figure 20. Depiction of ReEDS modules; arrows indicate directions of data exchange.*\n\n\u003ca name=\"Fig21\"\u003e\u003c/a\u003e\n![Image of Sequential Flow](/images/seq-flow-2.png)   \n\n*Figure 21. Schematic illustrating the model structure with a sequential solve.*\n\n\u003ca name=\"Fig22\"\u003e\u003c/a\u003e\n![Image of Intertemporal Flow](/images/inter-flow-2.png)   \n\n*Figure 22. Schematic illustrating the model structure with sliding window or intertemporal solves.*\n\n\u003ca name=\"Stock\"\u003e\u003c/a\u003e\n## Tracking Capital Stock\n\nBecause ReEDS is a long-term capacity planning model, electricity generation capacity (capital stock) must be tracked over time, including initial capacity, new investments, refurbishment investments, lifetime retirements, and endogenous retirements. [Figure 23](#Fig23) depicts time resolution terminology and capital stock terminology. \u0026quot;Historical\u0026quot; years are 2010-2018, inclusive. \u0026quot;Future\u0026quot; years are 2019 and beyond. \u0026quot;Pre-modeled\u0026quot; years are years prior to 2010 and are not represented in the model decision making. \u0026quot;Modeled\u0026quot; years are years beginning in 2010, the first year of the model to the end of the model horizon. Users can specify the frequency of modeled years as depicted in [Figure 24](#Fig24) in \u0026quot;\\inputs\\user\\_input\\modeledyears\\_default.csv\u0026quot; and the horizon is specified in \u0026quot;cases.csv\u0026quot;.\n\n\u003ca name=\"Fig23\"\u003e\u003c/a\u003e\n![Image of Time and Stock](/images/time-and-stock.jpg)   \n\n*Figure 23. Depiction of time resolution terminology and capital stock terminology*\n\n\u003ca name=\"Fig24\"\u003e\u003c/a\u003e\n![Image of Model Years](/images/model-years.png)   \n \n*Figure 24. Depiction of user-specified model years.*\n\nCapital stock added during the model execution is tracked by a vintage classification based on the time frame when the capacity is installed (e.g., capacity installed between 2030 and 2035 could be defined as a vintage class). The user can specify the vintage class resolution by technology type to control the model size (see \u0026quot;\\inputs\\userinput\\ivt.csv\u0026quot;). All capacity of a technology type (e.g., nuclear) within the same vintage class has the same operating characteristics. Regardless of the vintage class, new investments incur capital cost associated with the year that the investment occurs.\n\nDistinction is made between vintage classes for capacity built during the _pre-modeled_ years---i.e., the _initial_ vintage classes---and vintage classes for capacity built during the _modeled_ years, i.e., the _added_ vintage classes, ([Figure 23](#Fig23)). The _initial_ vintage classes are categorized based on plant performance, specifically, heat rate ([Figure 25](#Fig25)). Whereas, _added_ vintage classes are categorized based on when the capacity is installed.\n\n_Initial_ capacity is tracked based on the capacity remaining in each model year after planned retirements have been removed. Planned capacity additions made during _historical modeled_ years, i.e., 2010-2018, are prescribed _exactly_, thus the model must build _exactly_ the prescribed amount. Planned capacity built during _future modeled years_, i.e.,  2019-2050, are prescribed as a _lower bound_ for new investments, thus the model must build _at least_ the prescribed amount ([Figure 23](#Fig23)).\n\n\u003ca name=\"Fig25\"\u003e\u003c/a\u003e\n![Image of Historical Bins](/images/historical-bins.png)   \n\n*Figure 25. Example of categorizing model plants for the existing fleet based on heat rate.*\n\n\u003ca name=\"FAQ\"\u003e\u003c/a\u003e\n# Frequently Asked Questions\n\n\u003ca name=\"Fees\"\u003e\u003c/a\u003e\n## How much are the GAMS licensing fees?\n\nPlease contact GAMS for more information.\n\n\u003ca name=\"Trial\"\u003e\u003c/a\u003e\n## Is there a trial version of the GAMS license so that I can test ReEDS?\n\nWe have created a reduced size version of the ReEDS model that has less than 5,000 rows and columns, and therefore should be compatible with the GAMS community license (https://www.gams.com/try_gams/ -- Please contact GAMS if you need additional information regarding the community license). You can run this reduced model version by using the cases_small.csv input file. This reduced model uses a smaller technology subset, smaller geographic extent, and simplifies several model constraints.\n\n\u003ca name=\"Hardware\"\u003e\u003c/a\u003e\n## What computer hardware is necessary to run ReEDS?\n\nNREL uses Windows servers to execute the ReEDS model. These servers have Intel(R) Xeon(R) CPUs at 2-2.4GHz and 10-14 cores with 160-320GB of RAM. These servers can execute multiple ReEDS cases in parallel.\n\n[Table 4](#Tab4) summarizes RAM usage and total clock time necessary to execute the default ReEDS configuration for the three different solve structures (sequential, window, and intertemporal) using one of these servers.\n\n\u003ca name=\"Tab4\"\u003e\u003c/a\u003e\n*Table 4. Ballpark RAM usage and clock time for select model configurations executed on NREL servers.*\n\n| Solve Structure | Solve Steps | Approximate LP size \u003cbr\u003e per instance (after presolve) | Threads | RAM(GB per instance) | Total Clock Time (hours) |\n| --- | --- | --- | --- | --- | --- |\n| Sequential | 2010-2030: 2 yr \u003cbr\u003e 2031-2050: 5 yr | Rows: 461k \u003cbr\u003e Columns: 384k \u003cbr\u003e Non-Zeros: 2,042k | 4 | 4-7GB | 3-5 |\n| Window | 2010-2030: 2 yr \u003cbr\u003e 2031-2050: 5 yr | Rows: 1,143k \u003cbr\u003e Columns:869k \u003cbr\u003e Non-Zeros: 5,087k | 8 | 14-18GB | 18-22  |\n| Intertemporal | 2010-2030: 2 yr \u003cbr\u003e 2031-2050: 5 yr | Rows:12,789k \u003cbr\u003e Columns: 9,890k \u003cbr\u003e Non-Zeros: 61,076k | 12 | 57GB+ | 48-72|\n\nTable Notes:\n* Default solve window configuration: 11 windows and 5 iterations per window (see \u0026quot;\\inputs\\userinput\\windows_default.csv\u0026quot;). The problem size is taken from last iteration. The problem size varies by about 5% across iterations.\n* Intertemporal: 8-12 hours per iteration, 5-7 iterations total\n\n\u003ca name=\"Interconnect\"\u003e\u003c/a\u003e\n## Can I configure a ReEDS case to run as an isolated interconnect?\nYes, you can configure ReEDS as a single interconnect. Limiting the spatial extent may be beneficial for modeling more difficult instances. \n\n**WARNING!:** The default case configurations were designed for modeling the lower 48 United States. Therefore, the user should be aware of possible issues with executing an interconnect in isolation, including but not limited to the following:\n\n* Natural gas prices are based on either national or census division supply curves. The natural gas prices are computed as a function of the quantity consumed relative to a reference quantity. Consuming less than the reference quantity drives the price downward; consuming more drives the price upward. When modeling a single interconnection, the user should either modify the reference gas quantity to account for a smaller spatial extent or use fixed gas prices in every census division (i.e., case configuration option [GSw\\_GasCurve](#SwOther) = 2). For example, if we execute ERCOT in isolation using census division supply curves, we may want to reduce the reference gas quantity for the West South Central (WSC) census division which includes Texas, Oklahoma, Arkansas, and Louisiana. Or we could assume the gas price in the WSC region is fixed.\n\n* Infeasibilities may arise in state-level constraints when only part of a state is represented in an interconnect. For example, the Western interconnection includes a small portion of Texas (El Paso). State-level constraints will be enforced for Texas, but El Paso may not be able to meet the requirement for all of Texas.\n\n* Certain constraints may not apply in every interconnect. Some examples include: \n  * California State RPS REC trading constraints only apply to the West\n  * CAIR and CSAPR only apply to certain states, so the emission limits may need to be adjusted\n  * RGGI only applies to a subset of states in the northeast \n  * California policies (e.g., SB32, California Storage Mandate) only apply to California\n\n\u003ca name=\"Contact\"\u003e\u003c/a\u003e\n# Contact Us:\n\nIf you have comments and/or questions, please contacts the ReEDS team:\n\n[ReEDS.Inquiries@nrel.gov](mailto:ReEDS.Inquiries@nrel.gov)\n\n\u003ca name=\"Appendix\"\u003e\u003c/a\u003e\n# Appendix:\n\n\u003ca name=\"Switches\"\u003e\u003c/a\u003e\n## ReEDS Model Switches (specified by user in \u0026quot;cases.csv\u0026quot;)\n\nReEDS model switches are set in the cases.csv file. The \"Choices\" column lists allowable options for that switch, with N/A meaning that no error checking is performed for the options selected.\nAdditional notes on switch functionality are provided below.\n* `GSw_PRM_StressThreshold`: The default setting of 'transgrp_10_EUE_sum' means a threshold of \"**10** ppm NEUE in each **transgrp**\", with stress periods selected by the daily **sum** of **EUE** within each **transgrp**.\n  * The first argument can be selected from ['country', 'interconnect', 'nercr', 'transreg', 'transgrp', 'st', 'r'] and specifies the hierarchy level within which to compare RA performance against the threshold.\n  * The second argument can be any float and specifies the RA performance threshold in parts per million [ppm].\n  * The third argument can be 'NEUE' or 'EUE', specifying which metric to use when selecting stress periods. If set to 'NEUE' the model will add stress periods with the largest **fraction** of dropped load; if set to 'EUE' the model will add stress periods with the largest **absolute MWh** of dropped load.\n  * The fourth argument can be 'sum' or 'max', specifying whether to add stress periods in order of their daily per-hour max dropped load or by their daily sum of dropped load when selecting stress periods.\n  * If desired you can provide /-delimited entries like 'transgrp_10_EUE_sum/country_1_EUE_sum', meaning that each transgrp must have ≤10 ppm NEUE and the country overall must have ≤1 ppm NEUE.\n\n\n\u003ca name=\"SolveTime\"\u003e\u003c/a\u003e\n## Tips for reducing solve time\n\nIf you'd like to reduce the model solve time, consider making some of the following changes:\n* `yearset_suffix = 4yr` or `yearset_suffix = 5yr`\n  * Solve in 4- or 5-year steps\n* `GSw_OpRes = 0`\n  * Turn off operating reserves\n* `GSw_MinLoading = 0`\n  * Turn off the sliding-window representation of minimum-generation limits\n* `GSw_HourlyNumClusters = 25` (or lower)\n  * Reduce the number of representative periods\n* `GSw_RegionResolution = aggreg` and `GSw_HierarchyFile = default`, or `agg2`\n  * Aggregate the native 134 zones into fewer, larger zones. `GSw_HierarchyFile = default` aggregates the 134 zones into 69 zones (obeying state, interconnect, NERC, and FERC region boundaries); `GSw_HierarchyFile = agg2` aggregates the 134 zones into 54 zones (obeying state boundaries).","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/23073","html_url":"https://ost.ecosyste.ms/projects/23073"}