switch-model
Optimal planning model for power systems with large shares of renewable energy.
https://github.com/switch-model/switch
Category: Energy Systems
Sub Category: Renewable Energy Integration
Keywords from Contributors
power-systems
Last synced: about 6 hours ago
JSON representation
Repository metadata
A Modern Platform for Planning High-Renewable Power Systems
- Host: GitHub
- URL: https://github.com/switch-model/switch
- Owner: switch-model
- License: other
- Created: 2015-04-08T00:59:34.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2025-03-30T16:32:41.000Z (about 1 month ago)
- Last Synced: 2025-04-20T09:43:58.113Z (10 days ago)
- Language: Python
- Homepage: http://switch-model.org/
- Size: 32.3 MB
- Stars: 142
- Watchers: 18
- Forks: 86
- Open Issues: 27
- Releases: 11
-
Metadata Files:
- Readme: README
- Changelog: CHANGELOG.md
- License: LICENSE
- Authors: AUTHORS
README
This contains version 2 of the Switch electricity planning model. This optimization model is modular and can be used with varying levels of complexity. Look in the examples directory for demonstrations of using Switch for investment planning or production cost simulation. The examples enable varying levels of model complexity by choosing which modules to include. See INSTALL for installation instructions. To generate documentation, go to the doc folder and run ./make_doc.sh. This will build html documentation files from python doc strings which will include descriptions of each module, their intentions, model components they define, and what input files they expect. TESTING To test the entire codebase, run this command from the root directory: python run_tests.py EXAMPLES To run an example, navigate to an example directory and run the command: switch solve --verbose --log-run CONFIGURING YOUR OWN MODELS At a minimum, each model requires a list of Switch modules to define the model and a set of input files to provide the data. The Switch framework and individual modules also accept command-line arguments to change their behavior. Each Switch model or collection of models is defined in a specific directory (e.g., examples/3zone_toy). This directory contains one or more subdirectories that hold input data and results (e.g., "inputs" and "outputs"). The models in the examples directory show the type of text files used to provide inputs for a model. You can change any of the model's input data by editing the *.csv files in the input directory. Switch contains a number of different modules, which can be selected and combined to create models with different capabilities and amounts of detail. You can look through the *.py files within switch_mod and its subdirectories to see the standard modules that are available and the columns that each one will read from the input files. You can also add modules of your own by creating Python files in the main model directory and adding their name (without the ".py") to the module list, discussed below. These should define the same functions as the standard modules (e.g., define_components()). Each model has a text file which lists the modules that will be used for that model. Normally this file is called "modules.txt" and is stored in the main model directory or in an inputs subdirectory. Switch will automatically look in those locations for this list; alternatively, you can specify a different file with the "--module-list" argument. Use "switch --help", "switch solve --help" or "switch solve-scenarios --help" to see a list of command-line arguments that are available. You can specify these arguments on the command line when you solve the model (e.g., "switch solve --solver cplex"). You can also place frequently used arguments in a file called "options.txt" in the main model directory. These can all be on one line, or they can be placed on multiple lines for easier readability (be sure to include the "--" part in all the argument names in options.txt). The "switch solve" command first reads all the arguments from options.txt, and then applies any arguments you specified on the command line. If the same argument is specified multiple times, the last one takes priority. You can also define scenarios, which are sets of command-line arguments to define different models. These additional arguments can be placed in a scenario list file, usually called "scenarios.txt" in the main model directory (or you can use a different file specified by "--scenario-list"). Each scenario should be defined on a single line, which includes a "--scenario-name" argument and any other arguments needed to define the scenario. "switch solve-scenarios" will solve all the scenarios listed in this file. For each scenario, it will first apply all arguments from options.txt, then arguments from the relevant line of scenarios.txt, then any arguments specified on the command line. After the model runs, results will be written in tab-separated text files (with extension .csv) in the "outputs" directory (or a different directory specified via the "--outputs-dir" argument).
Owner metadata
- Name: Switch Power System Planning Model
- Login: switch-model
- Email: mfripp@hawaii.edu
- Kind: organization
- Description: Optimal planning model for power systems with large shares of renewable energy
- Website: http://switch-model.org
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/11792892?v=4
- Repositories: 4
- Last ynced at: 2023-03-01T05:35:16.700Z
- Profile URL: https://github.com/switch-model
GitHub Events
Total
- Release event: 1
- Watch event: 12
- Push event: 5
- Fork event: 1
- Create event: 2
Last Year
- Release event: 1
- Watch event: 12
- Push event: 5
- Fork event: 1
- Create event: 2
Committers metadata
Last synced: 9 days ago
Total Commits: 744
Total Committers: 15
Avg Commits per committer: 49.6
Development Distribution Score (DDS): 0.341
Commits in past year: 48
Committers in past year: 1
Avg Commits per committer in past year: 48.0
Development Distribution Score (DDS) in past year: 0.0
Name | Commits | |
---|---|---|
Matthias Fripp | m****p@h****u | 490 |
josiah.johnston | j****n@g****m | 176 |
Mark Seaborn | m****s@m****m | 27 |
bmaluenda | b****p@g****m | 16 |
Benjamin Maluenda | m****6@g****m | 11 |
Josiah Johnston | s****h@b****u | 10 |
Benjamin Maluenda | b****d@u****l | 3 |
Ana Mileva | a****a@g****m | 2 |
Desmond Zhong | z****1@g****m | 2 |
Rodrigo Henriquez | r****a@g****m | 2 |
Hector Rincon | h****c@h****m | 1 |
Mateo Torres Ruiz | m****r | 1 |
Brad Venner | b****r@p****m | 1 |
Matthias Fripp | m****s@m****l | 1 |
Rodrigo Henriquez | R****z | 1 |
Committer domains:
- uc.cl: 1
- berkeley.edu: 1
- mythic-beasts.com: 1
- hawaii.edu: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 36
Total pull requests: 112
Average time to close issues: 8 months
Average time to close pull requests: about 2 months
Total issue authors: 15
Total pull request authors: 13
Average comments per issue: 2.94
Average comments per pull request: 2.79
Merged pull request: 74
Bot issues: 0
Bot pull requests: 0
Past year issues: 0
Past year pull requests: 1
Past year average time to close issues: N/A
Past year average time to close pull requests: about 1 hour
Past year issue authors: 0
Past year pull request authors: 1
Past year average comments per issue: 0
Past year average comments per pull request: 0.0
Past year merged pull request: 1
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- mfripp (10)
- bmaluenda (6)
- josiahjohnston (5)
- staadecker (3)
- pesap (2)
- rhaubenstock (1)
- tomaszG247 (1)
- milesabarr (1)
- AaronHolm (1)
- sergiocastellanos (1)
- PascalLesage (1)
- mseaborn (1)
- KevinXo (1)
- puneetchitkara (1)
- emtrivino (1)
Top Pull Request Authors
- josiahjohnston (38)
- mfripp (25)
- mseaborn (21)
- bmaluenda (16)
- staadecker (4)
- DesmondZhong (1)
- drganghe (1)
- mateoatr (1)
- pesap (1)
- hecerinc (1)
- bvenner (1)
- rodrigomha (1)
- anamileva (1)
Top Issue Labels
- help wanted (2)
Top Pull Request Labels
Package metadata
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 5
conda-forge.org: switch_model
Switch 2.0 is an open-source modeling platform for planning transitions to low-emission electric power grids, designed to satisfy 21st century grid planning requirements. Switch is capable of long-, medium- and short-term planning of investments and operations with conventional or smart grids, integrating large shares of renewable power, storage and/or demand response. Applications include integrated resource planning, investment planning, economic and policy analyses as well as basic research.
Dependencies
- Pyomo *
- pandas *
- pint *
- pyutilib *
- testfixtures *
- will *
Score: -Infinity