Installation
------------
There are two options, either install all the dependencies yourself or setup the engine
within a Docker image. Whatever option you choose, you will need an external solver to
run optimizations. We recommend `Gurobi`_, though any other solver compatible with
`JuMP`_ can be used. Note that `Gurobi`_ is a commercial solver and hence a license
file is required. This may be either a local license, a cloud license or a free license
for academic use. Check their `Software Downloads and License Center
`_ page for more details.
Start by cloning the repository locally:
.. code-block:: bash
git clone https://github.com/Breakthrough-Energy/REISE.jl
You will also need to download some input data in order to run simulations. Sample
data are available on `Zenodo`_. You will find there hourly time series for the
hydro/solar/wind generators and a MAT-file enclosing all the information related to the
electrical grid in accordance with the `MATPOWER`_ case file format.
Native Installation
+++++++++++++++++++
Installation will depend on your operating system. Some examples are provided for
Unix-like platforms.
Julia
#####
Download Julia 1.5 and install it following the instructions located on their
`Platform Specific Instructions for Official Binaries
`_ page. This should be straightforward:
- Choose a destination directory. For shared installation, :bash:`/opt` is recommended.
.. code-block:: bash
cd /opt
- Download and unzip the package in the chosen directory:
.. code-block:: bash
wget -q https://julialang-s3.julialang.org/bin/linux/x64/1.5/julia-1.5.3-linux-x86_64.tar.gz
tar -xf julia-1.5.3-linux-x86_64.tar.gz
- Expand the :bash:`PATH` environment variable. For bash users edit the **.bashrc**
file in your :bash:`$HOME` folder:
.. code-block:: bash
export PATH="$PATH:/opt/julia-1.5.3/bin"
Gurobi
#######
If you plan on using `Gurobi`_ as a solver, you will need to download and install it
first so it can be accessed by `Jump`_. Installation of Gurobi depends on both the
operating system and the license type. Detailed instructions can be found in the
`Gurobi Installation Guide `_.
For Unix-like platforms, this will look like:
- Choose a destination directory. For shared installation, :bash:`/opt` is recommended.
.. code-block:: bash
cd /opt
- Download and unzip the package in the chosen directory:
.. code-block:: bash
wget https://packages.gurobi.com/9.1/gurobi9.1.0_linux64.tar.gz
tar -xvfz gurobi9.1.0_linux64.tar.gz
This will create the :bash:`/opt/gurobi910/linux64` subdirectory in which the
complete distribution is located.
- Set environments variables. For bash users edit the **.bashrc** file in your
:bash:`$HOME` folder:
.. code-block:: bash
export GUROBI_HOME="/opt/gurobi910/linux64"
export PATH="${PATH}:${GUROBI_HOME}/bin"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib"
- The Gurobi license needs to be download and installed. Download a copy of your Gurobi
license from the account portal, and copy it into the parent directory of
:bash:`$GUROBI_HOME`.
.. code-block:: bash
cd gurobi.lic /opt/gurobi910/gurobi.lic
To verify that Gurobi is properly installed, run the **gurobi.sh** shell script:
.. code-block:: bash
.$GUROBI_HOME/bin/gurobi.sh
REISE.jl
########
The package will need to be added to each user's default Julia environment. This can be
done by launching Julia and typing ``]`` to access the ``Pkg`` (the built-in package
manager) REPL environment that easily allows operations such as installing, updating
and removing packages.
.. code-block:: julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.5.3 (2020-11-09)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
julia> ]
pkg>
From here, we recommend that you create an environment and install the dependencies
in the same state specified in the manifest (**Manifest.toml**):
.. code-block:: julia
activate /PATH/TO/REISE.jl
instantiate
Note that the Julia packages for the user's desired solvers need to be installed
separately. For instance, if you want to use GLPK, the GNU Linear Programming Kit
library, you will need to run:
.. code-block:: julia
import Pkg
Pkg.add("GLPK")
Then, create a :bash:`JULIA_PROJECT` environment variable that points to
:bash:`PATH/TO/REISE.jl`.
To verify that the package has been successfully installed, open a new instance of
Julia and verify that the REISE package can load without any errors with the following
command:
.. code-block:: julia
using REISE
Python
######
We strongly recommend that you install Python in order to be able to use the command
line interface we developed to run simulations but most importantly to extract the data
generated by the simulation.
The scripts located in ``pyreisejl`` depend on several packages. Those are specified
in the **requirements.txt**, file and can be installed using:
.. code-block:: bash
pip install -r requirements.txt
To verify that the Python scripts can successfully run, open a Python interpreter and
run the following commands:
.. code-block:: python
from julia.api import Julia
Julia(compiled_modules=False)
from julia import REISE
Note that the final import of REISE may take a couple of minutes to complete.
Docker
++++++
The easiest way to setup this engine is within a Docker image.
There is an included **Dockerfile** that can be used to build the Docker image. With
the Docker daemon installed and running, do:
.. code-block:: bash
docker build . -t reisejl
To run the Docker image, you will need to mount two volumes; one containing the Gurobi
license file and another containing the necessary input files for the engine.
.. code-block:: bash
docker run -it `
-v /path/to/gurobi.lic:/usr/share/gurobi_license `
-v /path/to/input/data:/path/to/input/data `
reisejl bash
You are ready to run simulation as demonstrated in the :doc:`usage` section.