Genetic Perceptron

Initializing a Genetic Perceptron

int num_inputs = 2;
int num_outputs = 1;
int population_size = 100;
int random_per_generation = 10;
Genetic_Perceptron gpnn = new Genetic_Perceptron(population_size, random_per_generation, num_inputs, num_outputs);

Feeding Data through a Genetic Perceptron and receiving the Output

float[] inputs = new float[] {1, 0};
float[] outputs = gpnn.overall_best.feedforward(inputs);
System.out.println(outputs);
// gives : [0.5345]

Training a Genetic Perceptron

float[] answers = new float[] {1};
int total_generations = 1000;
for (int generation = 0; generation < total_generations; generation++) {
  Perceptron[] current_generation = gpnn.get_current_generation();
  float[] current_fitness = new float[current_generation.length];
  for (int aspect = 0; aspect < current_generation.length; aspect++) {
    current_fitness[aspect] = answers[0] - current_generation[aspect].feedforward(inputs));
  }
  gpnn.evolve_best(current_fitness);
}

System.out.println(gpnn.overall_best.feedforward(inputs));
// gives : [0.98799]

Setting extra Variables

gpnn.set_mutation_rate(float);
gpnn.set_evolution_rate(float);
gpnn.set_offspring_mutation_rate(float);