-
Notifications
You must be signed in to change notification settings - Fork 13
Documentation
-
buildempty folder to be used for building executables -
cfgcontains configuration files for initialising parameters -
doccontains files for generating Doxygen documentation -
envcontains data files for problem environments -
libcontains third-party libraries for random number generation, unit testing, pybind, etc. -
pythoncontains example Python scripts -
testcontains unit tests -
xcsfcontains XCSF source code
To build locally see Compiling and Running.
The github-pages contains prebuilt documentation, including:
The main data structure XCSF located within xcsf.h is passed to almost all functions, enabling access to parameters. This structure directly contains general parameters, e.g., double BETA; which can be accessed with xcsf->BETA. It also contains sub-structures containing groups of parameters, e.g., for the EA with struct ArgsEA *ea;
The sub-structures containing groups of parameters are:
- Condition parameters defined within
struct ArgsCondlocated withincondition.h. - Action parameters defined within
struct ArgsActlocated withinaction.h. - Prediction parameters defined within
struct ArgsPredlocated withinprediction.h. - EA parameters defined within
struct ArgsEAlocated withinea.h.
Every parameter needs its own functions for each of the following tasks:
- setting the parameter value - this provides a single point at which the values change and minimums and maximums can be defined to help users and avoid undefined behaviour;
- setting the default parameter value;
- printing the parameter value;
- saving the parameter value to persistent storage;
- loading the parameter value from persistent storage;
These functions for general parameters are defined within param.c. For the above-mentioned sub-structures, the functions are located within the respective *.c files. These can then be accessed through the XCSF structure, e.g., xcsf->cond->bits.
To enable the values to be read from the ini configuration file they must also be added to config.c.
Finally, to enable the parameters to be set by Python, they need to be added to pybind_wrapper.cpp.
This project is released under the terms of the GNU General Public License v3.0 (GPLv3).