<commit_before>numbbo/coco: Comparing Continuous Optimizers
============================================

This code reimplements the original Comparing Continous Optimizer platform (http://coco.gforge.inria.fr/),
now rewritten fully in ANSI C with the other languages calling the C code. Languages currently available 
are C, Java, MATLAB, and Python. Languages available in near future are C++ and Octave. Contributions to 
link further languages are more than welcome.

Requirements
------------
1. For a machine running experiments 
  - A `C` compiler, such as gcc
  - make, such as GNU make
  - Python >=2.6 with `setuptools` installed
2. For a machine running the post-processing
  - Python 2.6 or 2.7 with `numpy` (preferably >=1.7) and `matplotlib` installed. 
    We recommend to install the [Anaconda library](https://www.continuum.io/downloads). 
    Python 3 is not yet supported with the post-processing part of NumBBO/CoCO!

### Windows Specifics
Under Windows, two alternative compile toolchains can be used: 

1. [Cygwin](https://www.cygwin.com/) which comes with gcc and make, available in 32- and 64-bit versions.  
2. MinGW's gcc (http://www.mingw.org/) and GNU make (http://gnuwin32.sourceforge.net/packages/make.htm).
  MinGW only comes in 32-bit, but also runs on 64-bit machines. 

For using `git` under Windows (optional), we recommend installing [TortoiseGit](https://tortoisegit.org/).

### Language Specifics
Additional requirements for running an algorithm in a specific language.

* Java: none, but see [here](./code-experiments/build/java/README.txt) for details on the compilation
* Python: none, see [here](./code-experiments/build/python/README.md) for details on the installation
* MATLAB: at least MATLAB 2008, for details, see [here](./code-experiments/build/matlab/README.txt)

### Guaranties (None)
We tested the framework on Mac OSX, Ubuntu linux, Fedora linux, and Windows (XP,
7, 10) in various combinations of 32-bit and 64-bit compilers, python versions
etc. Naturally, we cannot guarantee that the framework runs on any combination
of operating system and software installed. In case you experience some incompatibilies,
we will be happy if you can document them in detail on our [issue tracker](https://github.com/numbbo/coco/issues). 

Getting Started
---------------
**Download** the [COCO framework code](https://github.com/numbbo/coco) from
github by clicking [here](https://github.com/numbbo/coco/archive/master.zip), 
**CAVEAT: this code is still under development**, and unzip the `zip` file. 

1. In a system shell, **`cd` into** the `numbbo` (framework root) folder, where the 
   file `do.py` lies. Type, i.e. **execute**, one of the following commands once
  ```
    python do.py run-c
    python do.py run-java
    python do.py run-matlab
    python do.py run-python
  ```  
  depending which language is used to run the experiments. `run-*` will build the 
  respective code and run the example experiment once. The build result and the example
  experiment code can be found under `code-experiments/build/*`. 
  
2. On the computer where experiment data shall be post-processed, run
  ```
    python do.py install-postprocessing
  ```
  to (user-locally) install the post-processing. 
  
3. If the example experiment runs, **connect** your favorite algorithm
  to Coco: copy the `code-experiments/build/YOUR-FAVORITE-LANGUAGE` folder to
  another location. Replace the call to the random search optimizer in the
  example experiment file by a call to your algorithm (the details vary), see
  respective the read-me's and example experiment files:

  - `C` [read me](https://github.com/numbbo/coco/blob/master/coco-experiments/build/c/README.txt) 
    and [example experiment](https://github.com/numbbo/coco/blob/development/code-experiments/build/c/example_experiment.c)
  - `Java` [read me](https://github.com/numbbo/coco/blob/master/code-experiments/build/java/README.txt)
    and [example experiment](https://github.com/numbbo/coco/blob/master/code-experiments/build/java/ExampleExperiment.java)
  - `Matlab` [read me](https://github.com/numbbo/coco/blob/master/code-experiments/build/matlab/README.txt)
    and [example experiment](https://github.com/numbbo/coco/blob/master/code-experiments/build/matlab/exampleexperiment.m) 
  - `Python` [read me](https://github.com/numbbo/coco/blob/master/code-experiments/build/python/README.md)
    and [example experiment`](https://github.com/numbbo/coco/blob/master/code-experiments/build/python/example_experiment.py)

  Another entry point for your own experiments can be
  the `code-experiments/examples` folder. In any case, update the output
  (observer options) result_folder and the algorithm_name and info in the
  experiment file.

4. Now you can **run** your favorite algorithm on the `bbob-biobj` (for
  multi-objective algorithms) or on the `bbob` suite (for single-objective
  algorithms). Output is automatically generated in the specified data 
  `result_folder`.

5. **Postprocess** that data from the results folder by typing

    ```
    python -m bbob_pproc YOURDATAFOLDER [MORE_FOLDERS]
    ```

  The name `bbob_pproc` will become `cocopp` in future. Any subfolder in the
  folder arguments will be search for logged data. That is, experiments from
  different batches can be in different folders collected under a single "root" 
  folder. We can also compare more than one algorithm by specifying
  several data result folders generated by different algorithms.
  
  A folder named `ppdata` by default will be generated (the folder name can be
  changed by the `-o FOLDERNAME` option), which contains all output from the 
  post-processing. 

  Within the postprocessing's output folder, you will find pdfs of all kinds
  of plots (e.g. data profiles). With the `--svg` option, figures for the
  `template*.html` file are generated, which can be explored in a browser. 
  
  For the single-objective `bbob` suite, a summary pdf can be produced via <commit_msg>minor corrections in README.md<commit_after>numbbo/coco: Comparing Continuous Optimizers
============================================

This code reimplements the original Comparing Continous Optimizer platform (http://coco.gforge.inria.fr/),
now rewritten fully in ANSI C with the other languages calling the C code. Languages currently available 
are C, Java, MATLAB, and Python. Languages available in near future are C++ and Octave. Contributions to 
link further languages are more than welcome.

Requirements
------------
1. For a machine running experiments 
  - A `C` compiler, such as gcc
  - make, such as GNU make
  - Python >=2.6 with `setuptools` installed
2. For a machine running the post-processing
  - Python 2.6 or 2.7 with `numpy` (preferably >=1.7) and `matplotlib` installed. 
    We recommend to install the [Anaconda library](https://www.continuum.io/downloads). 
    Python 3 is not yet supported with the post-processing part of NumBBO/CoCO!

### Windows Specifics
Under Windows, two alternative compile toolchains can be used: 

1. [Cygwin](https://www.cygwin.com/) which comes with gcc and make, available in 32- and 64-bit versions.  
2. MinGW's gcc (http://www.mingw.org/) and GNU make (http://gnuwin32.sourceforge.net/packages/make.htm).
  MinGW only comes in 32-bit, but also runs on 64-bit machines. 

For using `git` under Windows (optional), we recommend installing [TortoiseGit](https://tortoisegit.org/).

### Language Specifics
Additional requirements for running an algorithm in a specific language.

* Java: none, but see [here](./code-experiments/build/java/README.txt) for details on the compilation
* Python: none, see [here](./code-experiments/build/python/README.md) for details on the installation
* MATLAB: at least MATLAB 2008, for details, see [here](./code-experiments/build/matlab/README.txt)

### Guaranties (None)
We tested the framework on Mac OSX, Ubuntu linux, Fedora linux, and Windows (XP,
7, 10) in various combinations of 32-bit and 64-bit compilers, python versions
etc. Naturally, we cannot guarantee that the framework runs on any combination
of operating system and software installed. In case you experience some incompatibilies,
we will be happy if you can document them in detail on our [issue tracker](https://github.com/numbbo/coco/issues). 

Getting Started
---------------
**Download** the [COCO framework code](https://github.com/numbbo/coco) from
github by clicking [here](https://github.com/numbbo/coco/archive/master.zip), 
**CAVEAT: this code is still under development**, and unzip the `zip` file. The latest official releases can be furthermore
found [here](https://github.com/numbbo/coco/releases).

1. In a system shell, **`cd` into** the `coco-*` (framework root) folder, where the 
   file `do.py` lies. Type, i.e. **execute**, one of the following commands once
  ```
    python do.py run-c
    python do.py run-java
    python do.py run-matlab
    python do.py run-python
  ```  
  depending on which language is used to run the experiments. `run-*` will build the 
  respective code and run the example experiment once. The build result and the example
  experiment code can be found under `code-experiments/build/*`. 
  
2. On the computer where experiment data shall be post-processed, run
  ```
    python do.py install-postprocessing
  ```
  to (user-locally) install the post-processing. 
  
3. If the example experiment runs, **connect** your favorite algorithm
  to Coco: copy the `code-experiments/build/YOUR-FAVORITE-LANGUAGE` folder to
  another location. Replace the call to the random search optimizer in the
  example experiment file by a call to your algorithm (the details vary), see
  respective the read-me's and example experiment files:

  - `C` [read me](https://github.com/numbbo/coco/blob/master/coco-experiments/build/c/README.txt) 
    and [example experiment](https://github.com/numbbo/coco/blob/development/code-experiments/build/c/example_experiment.c)
  - `Java` [read me](https://github.com/numbbo/coco/blob/master/code-experiments/build/java/README.txt)
    and [example experiment](https://github.com/numbbo/coco/blob/master/code-experiments/build/java/ExampleExperiment.java)
  - `Matlab` [read me](https://github.com/numbbo/coco/blob/master/code-experiments/build/matlab/README.txt)
    and [example experiment](https://github.com/numbbo/coco/blob/master/code-experiments/build/matlab/exampleexperiment.m) 
  - `Python` [read me](https://github.com/numbbo/coco/blob/master/code-experiments/build/python/README.md)
    and [example experiment`](https://github.com/numbbo/coco/blob/master/code-experiments/build/python/example_experiment.py)

  Another entry point for your own experiments can be
  the `code-experiments/examples` folder. In any case, update the output
  (observer options) result_folder and the algorithm_name and info in the
  experiment file.

4. Now you can **run** your favorite algorithm on the `bbob-biobj` (for
  multi-objective algorithms) or on the `bbob` suite (for single-objective
  algorithms). Output is automatically generated in the specified data 
  `result_folder`.

5. **Postprocess** that data from the results folder by typing

    ```
    python -m bbob_pproc YOURDATAFOLDER [MORE_FOLDERS]
    ```

  The name `bbob_pproc` will become `cocopp` in future. Any subfolder in the
  folder arguments will be searched for logged data. That is, experiments from
  different batches can be in different folders collected under a single "root" 
  folder. We can also compare more than one algorithm by specifying
  several data result folders generated by different algorithms.
  
  A folder named `ppdata` by default will be generated (the folder name can be
  changed by the `-o FOLDERNAME` option), which contains all output from the 
  post-processing. 

  Within the postprocessing's output folder, you will find pdfs of all kinds
  of plots (e.g. data profiles). With the `--svg` option, figures for the
  `template*.html` file are generated, which can be explored in a browser. 
  
  For the single-objective `bbob` suite, a summary pdf can be produced via 
{'fraction_non_alphanumeric': 0.10773937489664297, 'fraction_numerical': 0.006449479080535803, 'mean_word_length': 4.031198003327787, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 7, 'https://': 29, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2689684', 'n_tokens_mistral': 3646, 'n_tokens_neox': 3461, 'n_words': 1353}