rollo.evaluation

Module Contents

class rollo.evaluation.Evaluation

Holds functions that generate and execute the evaluation solver’s scripts.

DEAP’s (evolutionary algorithm package) fitness evaluator requires an evaluation function to evaluate each individual’s fitness values. The Evaluation class contains a method that creates an evaluation function that runs the nuclear software and returns the required fitness values, defined in the input file.

input_scripts

key is evaluation software name, value is that evaluation software’s template input script name

Type

dict

output_scripts

key is evaluation software name, value is that evaluation software’s template output script name

Type

dict

add_evaluator(self, solver_name, input_script, output_script)

Adds information about an evaluator to the Evaluation class object for later use in eval_fn_generator.

Parameters
  • solver_name (str) – name of solver

  • input_script (str) – input script name

  • output_script (str) – optional output script name

eval_fn_generator(self, control_dict, output_dict, input_evaluators, gens, parallel_method, keep_files)

if parallel_method is none or multiprocessing, this function returns a function that accepts a DEAP individual and returns a tuple of output values listed in outputs

if parallel_method is job_control, this function returns a function that accepts a list of DEAP individuals (population) and returns a list of output value tuples. Each tuple corresponds to one individual

Parameters
  • control_dict (OrderedDict) – Ordered dict of control variables as keys and a list of their solver and number of variables as each value

  • output_dict (OrderedDict) – Ordered dict of output variables as keys and solvers as values

  • input_evaluators (dict) – evaluators sub-dictionary from input file

  • gens (int) – total generations in simulation (defined in input file)

  • parallel_method ({'none', 'multiprocessing', 'job_control'}) – parallelization method

Returns

eval_function – function that runs the evaluation software and returns output values output by the software

Return type

function

create_input_execute_output_scripts(self, pop, solver, control_vars_dict, input_evaluators_solver)

Renders input scripts, copies execute scripts, and renders output scripts for parallel_method=job_control in each individual’s directory

Parameters
  • pop (list) – list of deap.creator.Ind

  • solver (str) – name of solver

  • control_vars_dict (dict) – multiple layers of dicts layer 1: gen_ind dir (str) layer 2: solver (str) layer 3: control parameter (str) layer 4: control parameter value (float)

  • input_evaluators_solver (dict) – specific solver’s evaluators sub-sub-dictionary from input file

Return type

None

run_input_and_execute_and_output_scripts(self, pop, solver, input_evaluators_solver)

Runs input scripts, execute scripts or executable, and output scripts for parallel_method=job_control in each individual’s directory

Parameters
  • pop (list) – list of deap.creator.Ind

  • solver (str) – name of solver

  • control_vars_dict (dict) – multiple layers of dicts layer 1: gen_ind dir (str) layer 2: solver (str) layer 3: control parameter (str) layer 4: control parameter value (float)

  • input_evaluators_solver (dict) – specific solver’s evaluators sub-sub-dictionary from input file

Return type

None

generate_run_command_job_control(self, pop, solver, single_command)

Generates bash command to run all directories executables for parallel_method=job_control

Parameters
  • pop (list) – list of deap.creator.Ind

  • solver (str) – name of solver

  • control_vars_dict (dict) – multiple layers of dicts layer 1: gen_ind dir (str) layer 2: solver (str) layer 3: control parameter (str) layer 4: control parameter value (float)

  • input_evaluators_solver (dict) – specific solver’s evaluators sub-sub-dictionary from input file

Returns

command – bash command to run all directories executables for parallel_method=job_control

Return type

str

get_output_vals_job_control(self, output_vals_dict, pop, solver, output_dict, control_vars_dict)

returns a list of output value tuples. Each tuple corresponds to output values for one individual. The results are in order of the individuals in pop. For parallel_method=job_control

Parameters
  • output_vals_dict (dict) –

    layer 1: gen_ind dir (str) layer 2: list of output values requested by rollo input file

    in correct order

  • pop (list) – list of deap.creator.Ind

  • solver (str) – name of solver

  • output_dict (OrderedDict) – Ordered dict of output variables as keys and solvers as values

  • control_vars_dict (dict) – multiple layers of dicts layer 1: gen_ind dir (str) layer 2: solver (str) layer 3: control parameter (str) layer 4: control parameter value (float)

Returns

all_output_vals – each index of list contains a tuple of output values from evaluators ordered by output_dict

Return type

list

run_input_script_serial(self, solver, control_vars_solver, ind, path)

Renders an input script into an individual’s directory and runs it for parallel_method=none or multiprocessing

Parameters
  • solver (str) – name of solver

  • control_vars_solver (str) – name of evaluation solver software

  • ind (deap.creator.Ind) –

  • path (str) – path name

Return type

None

run_execute_serial(self, input_evaluator_solver_execute, path, solver)

copies execute scripts into an individual’s directory if the scripts exists then runs it or only the executable for parallel_method=none or multiprocessing

Parameters
  • input_evaluator_solver_execute (list) – execute list from specific solver’s evaluators sub-sub-dictionary from input file

  • path (str) – path name

  • solver (str) – name of solver

Return type

None

solver_order(self, input_evaluators)

Returns a list with solver name at its order index

Parameters

input_evaluators (dict) – evaluators sub-dictionary from input file

Returns

list with solver name at its order index e.g. if openmc solver order = 0 and moltres solver order = 1, the returned list looks like [“openmc”, “moltres”]

Return type

list

render_input_script(self, solver, control_vars_solver, ind, path)

Renders an input script into an individual’s directory

Parameters
  • solver (str) – name of solver

  • control_vars_solver (str) – name of evaluation solver software

  • ind (deap.creator.Ind) –

  • path (str) – path name

Return type

None

generate_execute_scripts(self, path, input_evaluator_solver_execute)

Copies execute scripts into an individual’s directory

Parameters
  • path (str) – path name

  • input_evaluator_solver_execute (list) – execute list from specific solver’s evaluators sub-sub-dictionary from input file

Return type

None

generate_output_script(self, path, solver)

Copies output script into an individual’s directory

Parameters
  • path (str) – path name

  • solver (str) – name of solver

Return type

None

subprocess_call(self, path, out_file, command)

Runs command in bash

Parameters
  • path (str) – path name

  • out_file (str) – txt file to output command’s stderror and stdoutput to

  • command (str) – bash command to run

Return type

None

run_output_script_serial(self, output_vals, solver, output_dict, control_vars, path)

Copies an output script into an individual’s directory and runs it and returns a populated list with output values for each solver

Parameters
  • output_vals (list) – empty list of the correct size

  • solver (str) – name of solver

  • output_dict (OrderedDict) – Ordered dict of output variables as keys and solvers as values

  • control_vars (dict) – multiple layers of dict layer 1: solver name layer 2: control parameter str layer 3: control parameter value

  • path (str) – path name

Returns

output_vals – output values requested by rollo input file in correct order

Return type

list

get_output_vals(self, output_vals, solver, path, output_dict, control_vars)

Returns a populated list with output values for each solver

Parameters
  • output_vals (list) – list of Nones with length corresponding to number of output values

  • solver (str) – name of solver

  • path (str) – path name

  • output_dict (OrderedDict) – Ordered dict of output variables as keys and solvers as values

  • control_vars (dict) – multiple layers of dict layer 1: solver name layer 2: control parameter str layer 3: control parameter value

Returns

output_vals – output values requested by rollo input file in correct order

Return type

list

name_ind(self, ind, control_dict, input_evaluators)

Returns a dictionary that maps the control_dict’s variable names to values from ind list

Parameters
  • ind (deap.creator.Ind) – Created in rollo.toolbox_generator.ToolboxGenerator. It is a list with special attributes.

  • control_dict (OrderedDict) – Ordered dict of control variables as keys and a list of their solver and number of variables as each value

  • input_evaluators (dict) – evaluators sub-dictionary from input file

Returns

control_vars – multiple layers of dict layer 1: solver name layer 2: control parameter str layer 3: control parameter value

Return type

dict

render_jinja_template(self, script, control_vars_solver, ind, solver)

Renders a jinja2 templated input file. This will be used by solvers with text-based interfaces such as Moltres

Parameters
  • script (str) – name of evaluator template script

  • control_vars_solver (str) – name of evaluation solver software

Returns

rendered_template – rendered evaluator template script

Return type

str