All Projects → morinim → vita

morinim / vita

Licence: MPL-2.0 license
Vita - Genetic Programming Framework

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to vita

SimpleGP
Simple Genetic Programming for Symbolic Regression in Python3
Stars: ✭ 20 (-16.67%)
Mutual labels:  symbolic-regression, genetic-programming, evolutionary-algorithms
tiny gp
Tiny Genetic Programming in Python
Stars: ✭ 58 (+141.67%)
Mutual labels:  genetic-programming, evolutionary-algorithms
GeneticAlgorithmForFeatureSelection
Search the best feature subset for you classification mode
Stars: ✭ 82 (+241.67%)
Mutual labels:  genetic-programming, evolutionary-algorithms
cartesian
a lightweight implementation of Cartesian genetic programming with symbolic regression in mind.
Stars: ✭ 21 (-12.5%)
Mutual labels:  symbolic-regression, genetic-programming
FEDOT
Automated modeling and machine learning framework FEDOT
Stars: ✭ 312 (+1200%)
Mutual labels:  genetic-programming, evolutionary-algorithms
Sparse Evolutionary Artificial Neural Networks
Always sparse. Never dense. But never say never. A repository for the Adaptive Sparse Connectivity concept and its algorithmic instantiation, i.e. Sparse Evolutionary Training, to boost Deep Learning scalability on various aspects (e.g. memory and computational time efficiency, representation and generalization power).
Stars: ✭ 182 (+658.33%)
Mutual labels:  classification, evolutionary-algorithms
geppy
A framework for gene expression programming (an evolutionary algorithm) in Python
Stars: ✭ 124 (+416.67%)
Mutual labels:  symbolic-regression, genetic-programming
metaheuristic-training-networks
An implementation of various metaheuristics adapted to train neural networks
Stars: ✭ 16 (-33.33%)
Mutual labels:  differential-evolution, genetic-algorithms
geneticalgorithm2
Supported highly optimized and flexible genetic algorithm package for python
Stars: ✭ 36 (+50%)
Mutual labels:  evolutionary-algorithms, genetic-algorithms
ruck
🧬 Modularised Evolutionary Algorithms For Python with Optional JIT and Multiprocessing (Ray) support. Inspired by PyTorch Lightning
Stars: ✭ 50 (+108.33%)
Mutual labels:  evolutionary-algorithms, genetic-algorithms
Optimized-MDVRP
"Using Genetic Algorithms for Multi-depot Vehicle Routing" paper implementation.
Stars: ✭ 30 (+25%)
Mutual labels:  evolutionary-algorithms, genetic-algorithms
biteopt
Derivative-Free Optimization Method for Global Optimization (C++)
Stars: ✭ 91 (+279.17%)
Mutual labels:  evolutionary-algorithms, differential-evolution
helisa
Scala API for jenetics
Stars: ✭ 23 (-4.17%)
Mutual labels:  genetic-programming, genetic-algorithms
MAP-Elites
Python implementation of the genetic algorithm MAP-Elites with applications in constrained optimization
Stars: ✭ 38 (+58.33%)
Mutual labels:  genetic-programming, evolutionary-algorithms
binlex
A Binary Genetic Traits Lexer Framework
Stars: ✭ 303 (+1162.5%)
Mutual labels:  genetic-programming
EC-GAN
EC-GAN: Low-Sample Classification using Semi-Supervised Algorithms and GANs (AAAI 2021)
Stars: ✭ 29 (+20.83%)
Mutual labels:  classification
exact
EXONA: The Evolutionary eXploration of Neural Networks Framework -- EXACT, EXALT and EXAMM
Stars: ✭ 43 (+79.17%)
Mutual labels:  evolutionary-algorithms
NeuroMechFly
A neuromechanical model of adult Drosophila melanogaster.
Stars: ✭ 29 (+20.83%)
Mutual labels:  evolutionary-algorithms
scoruby
Ruby Scoring API for PMML
Stars: ✭ 69 (+187.5%)
Mutual labels:  classification
GARI
GARI (Genetic Algorithm for Reproducing Images) reproduces a single image using Genetic Algorithm (GA) by evolving pixel values.
Stars: ✭ 41 (+70.83%)
Mutual labels:  evolutionary-algorithms

Vita Version

C++17 Build Status Language grade: C/C++ CII License Twitter

Overview

Vita is a scalable, high performance framework for genetic programming and genetic algorithms.

It's suitable for classification, symbolic regression, content base image retrieval, data mining and software agent implementation. Main features:

  • 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
  • more

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).

Documentation

There is a comprehensive wiki. You should probably start with the tutorials.

Build requirements

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!

Mandatory

  • A C++17-standard-compliant compiler
  • CMake

Optional

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:

  • everything: cmake --build build/
  • kernel library (libvita.a): cmake --build build/ --target vita
  • sr tool: cmake --build build/ --target sr
  • tests: cmake --build build/ --target tests
  • the ABC example: cmake --build build/ --target ABC
  • for a list of valid targets: cmake --build build/ --target help

The output files are stored in subdirectories of build/ (out of source build).

Windows may need various expedients about which you can read in the Windows walkthrough.

Installing Vita

To install Vita use the command:

cmake --install build/

(requires superuser, i.e. root, privileges)

Manually installing is also very easy. There are just two files, both inside the build/kernel directory:

  • a static library (e.g. libvita.a under Unix);
  • an automatically generated global/single header (auto_vita.h which can be renamed).

As a side note, the command to build the global header is:

./tools/single_include.py --src-include-dir src/ --src-include kernel/vita.h --dst-include mysingleheaderfile.h

(must be executed from the repository main directory)

License

Mozilla Public License v2.0 (also available in the accompanying LICENSE file).

Versioning

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].