java-genetic-programming

java-genetic-programming is a library of java implementation for algorithms in the fields of Genetic Programming.

The main purpose of this library is to provide java developers with a tool set of genetic programming techniques

Installation:

To install the package using maven, add the following dependency to your POM file:

<dependency>
  <groupId>com.github.chen0040</groupId>
  <artifactId>java-genetic-programming</artifactId>
  <version>1.0.7</version>
</dependency>

Usage

To use the algorithms or data structures in your java code:

import com.github.chen0040.gp.lgp.LGP;
import com.github.chen0040.gp.commons.BasicObservation;
import com.github.chen0040.gp.commons.Observation;
import com.github.chen0040.gp.lgp.gp.Population;
import com.github.chen0040.gp.lgp.program.operators.*;

LGP lgp = new LGP();
lgp.getOperatorSet().addAll(new Plus(), new Minus(), new Divide(), new Multiply(), new Power());
lgp.getOperatorSet().addIfLessThanOperator();
lgp.addConstants(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0);
lgp.setRegisterCount(6);

lgp.setCostEvaluator((program, observations)->{
 double error = 0;
 for(Observation observation : observations){
    program.execute(observation);
    error += Math.pow(observation.getOutput(0) - observation.getPredictedOutput(0), 2.0);
 }

 return error;
});

Program program = lgp.fit(trainingData);

logger.info("best solution found: {}", program);

Features

  • Linear Genetic Programming
  • Tree Genetic Programming (Coming Soon)
  • Grammatical Evolution (Coming Soon)
  • Gene Experssion Programming (Coming Soon)
  • NSGA-II Genetic Programming for multi-objective optimization

Tests:

the unit tests of all algorithms and data structures can be run with the following command from the root folder:

$ /mvnw test -Punit-test

Contributing:

Contributions are always welcome. Check out the contributing guidelines to get started.