.. _run_rollo:
.. image:: ../pics/rollo-logo.png
:width: 450
:alt: rollo-logo
==========================
Running a ROLLO Simulation
==========================
After you build and install **ROLLO**, you will have a **ROLLO** executable in your
system.
To run a **ROLLO** simulation, enter these commands in a terminal:
.. code-block:: sh
python -m rollo -i -c -v
.. list-table::
:widths: 10 25 15
:header-rows: 1
* - Flag
- Description
- Mandatory?
* - -i
- name of input file
- yes
* - -c
- name of checkpoint restart file
- no
* - -v
- turns on verbose output (only include the flag)
- no
The checkpoint file holds the results from the **ROLLO** simulation.
**ROLLO** automatically generates/updates a checkpoint file (``checkpoint.pkl``)
after each generation.
The checkpoint file also acts as a restart file.
If a **ROLLO** simulation ends prematurely, the checkpoint
file can be used to restart the code from the most recent generation and
continue the simulation. Further description can be found in the
:ref:`checkpoint file section `.
ROLLO Execution
===============
Users define the **ROLLO** genetic algorithm's number of ``generations`` and
``pop_size`` (more description in :ref:`input file algorithm section
`).
During each generation's run, **ROLLO** will create ``population size`` number of
sub-directories which contain all the evaluator's evaluation files.
The sub-directories are indexed by generation number and individual number;
for generation 3 and individual 5, the directory will be named: ``3_5``.
The individual refers to each reactor model.
In each individual's directory, **ROLLO** will add the templated ``input_script``
file, optional ``execute`` files, and ``output_script`` file.
**ROLLO** will then run the ``input_script``, ``execute`` files, and
``output_script`` file.
All their respective output files will be in the individual directory as well.
For each run, **ROLLO** will output a .txt file with the terminal output from the run.
The txt file is named `evaluator name` _ `file type` _ `out.txt`. Thus, for evaluator
named OpenMC and the input script, the .txt file will be named
``openmc_input_script_out.txt``.
These terminal outputs assist with debugging and understanding what is happening
during a **ROLLO** simulation.
Users define if they want to keep these directories using the ``keep_files``
parameter (:ref:`input file algorithm section `).
Users have three options: ``none``, ``only_final``, and ``all``.
``none`` deletes each directory once the individual's run is complete,
``only_final`` deletes all directories except for the final generation, and
``all`` keeps all directories.
These options give users the option to save or not save evaluation files based on
the storage of their machine.
ROLLO Terminal Outputs
======================
After each **ROLLO** generation runs, **ROLLO** will output the following table with details about
that generation's run.
.. code-block:: sh
oup ind
------------------------------- ----------------------------------------
time gen evals avg std min max avg min max
73.4 0 100 [19.8] [3.01] [4.47] [22.1] [1.81 -3.97] [-32.6 -32.0] [32.1 32.3]
The table below describes each section of the above outputted table:
.. list-table::
:widths: 25 75
:header-rows: 1
* - Heading
- Description
* - time
- Total time taken to run generation in seconds
* - gen
- Generation #
* - evals
- Total number of individuals evaluated (<= population size defined in input file)
* - oup
- average, standard deviation, minimum value, maximum value of output parameters (objective and constraint values)
* - ind
- average, minimum value, maximum value of input parameters (control variables)