The REopt® model in this repository is a free, open-source, development version of the REopt API. A production version of the REopt API lies behind the REopt Web Tool.
The REopt API provides concurrent, multiple technology integration and optimization capabilities to help organizations meet their cost savings, energy performance, resilience, and emissions reduction goals. Formulated as a mixed integer linear program, the REopt model recommends an optimally sized mix of renewable energy, conventional generation, and energy storage technologies; estimates the net present value of implementing those technologies; and provides a dispatch strategy for operating the technology mix at maximum economic efficiency. A list of the REopt model capabilities is provided here. Example projects using REopt can be viewed here.
The REopt Julia package is the backend of the REopt API. That means that the optimization model is contained in REopt.jl, and that a user could supply the same inputs to the API and Julia package and get the same results. So which should you use?
1. When and how to use the REopt Julia package:
- You want to be able to use the REopt model without incorporating an API call (and associated rate limits).
- You want slightly more flexibility in how you interact with model inputs, optimization parameters, and run types.
- You can install an optimization solver for use with REopt.
- You do not need your results saved in an external database.
- How do I use the REopt Julia package?: see instructions here.
2. When and how to modify the REopt Julia package:
- You want to make changes to the REopt model beyond modifying input values (e.g., add a new technology).
- You want to suggest a bug fix in the REopt model.
- How do I modify the REopt Julia package?: get the (free, open-source) model here and see additional instructions here.
3. When and how to use the REopt_API:
- You do not want to modify the code or host the API on your own server.
- You do not want to install or use your own optimization solver (simply POSTing to the REopt API does not require a solver, whereas using the Julia package does).
- You want to be able to access or share results saved in a database using a runuuid.
- How do I use the REopt API?: you can access our production version of the API via the NREL Developer Network. You can view examples of using the API in the REopt-Analysis-Scripts Repo.
4. When and how to modify the REopt_API:
- You have made changes to the REopt Julia package that include modified inputs or outputs, and want to reflect those in the REopt API.
- You want to suggest a bug fix in the REopt API or add or modify validation or API endpoints.
- You want to host the API on your own servers.
- How do I modify the REopt API?: See this repo's Wiki for detailed instructions on installing and developing the API. Also, our contributing guidelines provide guidelines for suggesting improvements, creating pull requests, and more.