Vita is a scalable, high performance framework for genetic programming and genetic algorithms.
- flexible and fast
- easy integration with other systems
- simple addition of features and modules
- fast experimentation with detailed run-log
- modern, standard ISO C++17 source code
This software was originally developed by EOS without open source in mind. Later (early 2011) the code has been commented, restructured, documented and released as open source.
Although the core development team is still anchored at EOS, Vita is now open source and we would like it to be run by an international team of AI enthusiasts.
Symbolic regression example
// DATA SAMPLE // (the target function is `x + sin(x)`) std::istringstream training(R"( -9.456,-10.0 -8.989, -8.0 -5.721, -6.0 -3.243, -4.0 -2.909, -2.0 0.000, 0.0 2.909, 2.0 3.243, 4.0 5.721, 6.0 8.989, 8.0 )"); // READING INPUT DATA vita::src_problem prob(training); // SETTING UP SYMBOLS prob.insert<vita::real::sin>(); prob.insert<vita::real::cos>(); prob.insert<vita::real::add>(); prob.insert<vita::real::sub>(); prob.insert<vita::real::div>(); prob.insert<vita::real::mul>(); // SEARCHING vita::src_search s(prob); auto result(s.run());
It's pretty straightforward (further details in the specific tutorial).
Vita is designed to have fairly minimal requirements to build and use with your projects, but there are some. Currently, we support Linux and Windows. We will also make our best effort to support other platforms (e.g. Mac OS X, Solaris, AIX). However, since core members of the Vita project have no access to these platforms, Vita may have outstanding issues there. If you notice any problems on your platform, please use the issue tracking system; patches for fixing them are even more welcome!
- A C++17-standard-compliant compiler
- Python v3 for additional functionalities
Getting the source
There are two ways of getting Vita's source code: you can download a stable source release in your preferred archive format or directly clone the source from a repository.
Cloning a repository requires a few extra steps and some extra software packages on your system, but lets you track the latest development and make patches much more easily, so we highly encourage it.
Run the following command:
git clone https://github.com/morinim/vita.git
The Vita distribution
This is a sketch of the resulting directory structure:
vita/ doc/ misc/ src/ CMakeLists.txt examples/ .............Various examples forex/ ..............Forex example sr/ .................Symbolic regression and classification utility kernel/ ...............Vita kernel (core library) test/ .................Test-suite third_party/ ..........Third party libraries utility/ ..............Support libraries / files tools/ ..................C++ lint checker and other tools CODE_OF_CONDUCT.md.......Standards for how to engage in this community CONTRIBUTING.md LICENSE NEWS.md..................Don't let your friends dump git logs into NEWS README.md
Setting up the build
cd vita cmake -B build/ src/
To suggest a specific compiler you can write:
CXX=clang++ cmake -B build/ src/
You're now ready to build using the underlying build system tool:
cmake --build build/
- kernel library (
cmake --build build/ --target vita
cmake --build build/ --target sr
cmake --build build/ --target tests
- the ABC example:
cmake --build build/ --target ABC
- for a list of valid targets:
cmake --build build/ --target help
All the output files will be stored in subdirectories of
build/ (out of source builds).
Windows may need various expedients about which you can read in the Windows walkthrough.
Vita uses semantic versioning. Releases are tagged.
Note that the major version will change rapidly and API changes are fairly common. Read the NEWS.md file for details about the breaking changes.