problem_generator 0.3.1

TD Mk Landscape benchmark generator, for use with black-box optimization algorithms.
Documentation
## Documentation Pages

- [Index]index.md
  - [Subcommands]subcommands.md
  - [File Structures]file_structures.md
  - [Installation]installation.md

# Subcommands

The problem generator has various subcommands to switch between input modes: 
- [configuration_file]#configuration_file: single configuration file
- [codomain_file]#codomain_file: single codomain file
- [configuration_folder]#configuration_folder: multiple configuration files in a folder
- [codomain_folder]#codomain_folder: multiple codomain files in a folder

## Reproducible random number generation

It's important to note that there's the possibility to use a specified u64 (uint64) seed for the initialization of the random number generation. To any subcommand here, one can add `-s SEED` in front to use the specified `SEED`:

``` 
    problem_generator [-s SEED] SUBCOMMAND [SUBCOMMAND_ARGS]
``` 

For example, to add it to the example listed below for the configuration_file subcommand:
``` 
    problem_generator -s 2398 configuration_file deceptive_trap_conf.txt 
        codomain_files problems -n 25
```

## configuration_file

We use the executable *problem\_generator* to generate the codomain files and the problems, and find the global optimum for each problem: 
``` 
    problem_generator [-s SEED] configuration_file CONF_FILE 
        CODOMAIN_OUT PROBLEM_OUT [-n NUM]
```
where `CONF_FILE` is the input configuration file, `CODOMAIN_OUT` is the (existing) output codomain folder, `PROBLEM_OUT` is the (existing) output problem folder, and `-n NUM` is the number of problems generated per configuration setting. 

An example run:
```
    problem_generator configuration_file deceptive_trap_conf.txt 
        codomain_files problems -n 25
```

## codomain_file

Instead of generating the codomain and then generating a problem with this generated codomain, one can use an existing codomain file to create a TD Mk Landscape problem. The executable offers the following subcommand for this purpose: 
```
    problem_generator [-s SEED] codomain_file CODOMAIN_FILE 
        PROBLEM_FILE_OUT [-g]
```
where `CODOMAIN_FILE` is the input codomain file, `PROBLEM_FILE_OUT` is the output problem file, and the `-g` flag indicates the codomain was generated by the configuration_(file/folder) subcommand, and therefore contains the used codomain function on the first line. Note that this flag might change in the (near) future as this is not used much.

An example run:
```
    problem_generator codomain_file deceptive_trap_codomain.txt 
        deceptive_trap_problem.txt -g
```
## configuration_folder

Generate problems for configurations specified in a given directory that contains a directory 'problem_generation' with configuration files specifying the codomain parameters and ranges of topology parameters. See [configuration_file](#configuration_file) subcommand.

``` 
    problem_generator [-s SEED] configuration_folder FOLDER... 
        [-n NUM]
```
where multiple folders can be passed, with each `FOLDER` being a folder as specified above (contains a 'problem_generation' folder), and `-n NUM` is the number of problems generated per configuration setting. Conveniently, this way of passing folders allows for using wildcards in Bash, for example. 

An example run that uses the mentioned wildcard:
```
    problem_generator configuration_folder test_*
        -n 25
```

## codomain_folder

Generate problems for configurations specified in a given directory that contains a directory 'codomain_files' with codomain files that specify both the topology and codomain. 

```
    problem_generator [-s SEED] codomain_folder FOLDER...
        [-g]
```
where multiple folders can be passed, with each `FOLDER` being a folder as specified above (contains a 'codomain_files' folder), and the `-g` flag indicates the codomain was generated by the configuration_(file/folder) subcommand, and therefore contains the used codomain function on the first line. Note that this flag might change in the (near) future as this is not used much.

An example run:
```
    problem_generator codomain_folder test_folder
```