home | career | drupal | java | mac | mysql | perl | scala | uml | unix  
<tr> <td>OnePointCrossover <td>A random crossover point is selected and the first part from each parent is copied to the corresponding child, and the second parts are copied crosswise.</td> <tr> <td>1 <td>Always apply crossover <tr> <td>RandomKeyMutation <td>Changes a randomly chosen element of the array representation to a random value uniformly distributed in [0,1]. <tr> <td>.1 <td>Apply mutation with probability 0.1 - that is, 10% of the time. <tr> <td>TournamentSelection <td>Each of the two selected chromosomes is selected based on an n-ary tournament -- this is done by drawing n random chromosomes without replacement from the population, and then selecting the fittest chromosome among them.</td> </table>
The algorithm starts with an <code>initial population of Chromosomes. and executes until the specified <a href="../apidocs/org/apache/commons/math3/genetics/StoppingCondition.html">StoppingCondition is reached. In the example above, a <a href="../apidocs/org/apache/commons/math3/genetics/FixedGenerationCount.html">FixedGenerationCount stopping condition is used, which means the algorithm proceeds through a fixed number of generations. </p> </subsection> </section> </body> </document>

Other Java examples (source code examples)

Here is a short list of links related to this Java genetics.xml source code file:

Java example source code file (genetics.xml)

This example Java source code file (genetics.xml) is included in the alvinalexander.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Learn more about this Java project at its project page.

Java - Java tags/keywords

algorithms, apache, asf, geneticalgorithm, license, onepointcrossover, population, randomkeymutation, stoppingcondition, the, tournamentselection, you

The genetics.xml Java example source code

<?xml version="1.0"?>

<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at
   
         http://www.apache.org/licenses/LICENSE-2.0
   
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
  -->
  
<?xml-stylesheet type="text/xsl" href="./xdoc.xsl"?>
<document url="genetics.html">
  <properties>
    <title>The Commons Math User Guide - Genetic Algorithms
  </properties>
  <body>
    <section name="16 Genetic Algorithms">
      <subsection name="16.1 Overview" href="overview">
        <p>
          The genetics package provides a framework and implementations for 
          genetic algorithms.
        </p>
      </subsection>
      <subsection name="16.2 GA Framework">
      <p>
      <a href="../apidocs/org/apache/commons/math3/genetics/GeneticAlgorithm.html">
      GeneticAlgorithm</a> provides an execution framework for Genetic Algorithms (GA).  
      <a href="../apidocs/org/apache/commons/math3/genetics/Population.html">
      Populations,</a> consisting of 
      Chromosomes</a> are evolved by the GeneticAlgorithm until a 
      <a href="../apidocs/org/apache/commons/math3/genetics/StoppingCondition.html">
      StoppingCondition</a> is reached. Evolution is determined by 
      SelectionPolicy</a>, 
      MutationPolicy</a> and 
      Fitness</a>.
      </p>
      <p>
      The GA itself is implemented by the <code>evolve method of the
      <code>GeneticAlgorithm class,
      which looks like this:
      <source>public Population evolve(Population initial, StoppingCondition condition) {
    Population current = initial;
    while (!condition.isSatisfied(current)) {
        current = nextGeneration(current);
    }
    return current;
}
          </source>
          The <code>nextGeneration method implements the following algorithm:
          <ol>
          <li>Get nextGeneration population to fill from current
             generation, using its nextGeneration method</li>
          <li>Loop until new generation is filled:
          <ul>
  • Apply configured SelectionPolicy to select a pair of parents from <code>current
  • <li>With probability = <a href="../apidocs/org/apache/commons/math3/genetics/GeneticAlgorithm.html#getCrossoverRate()"> getCrossoverRate()</a>, apply configured CrossoverPolicy to parents <li>With probability = <a href="../apidocs/org/apache/commons/math3/genetics/GeneticAlgorithm.html#getMutationRate()"> getMutationRate()</a>, apply configured <code>MutationPolicy to each of the offspring <li>Add offspring individually to nextGeneration, space permitting</li> </ul> <li>Return nextGeneration </ol> </p> </subsection> <subsection name="16.3 Implementation"> <p> Here is an example GA execution: <source> // initialize a new genetic algorithm GeneticAlgorithm ga = new GeneticAlgorithm( new OnePointCrossover<Integer>(), 1, new RandomKeyMutation(), 0.10, new TournamentSelection(TOURNAMENT_ARITY) ); // initial population Population initial = getInitialPopulation(); // stopping condition StoppingCondition stopCond = new FixedGenerationCount(NUM_GENERATIONS); // run the algorithm Population finalPopulation = ga.evolve(initial, stopCond); // best chromosome from the final population Chromosome bestFinal = finalPopulation.getFittestChromosome(); </source> The arguments to the <code>GeneticAlgorithm constructor above are:
    <table> <tr>
    Parametervalue in examplemeaning
    crossoverPolicy
    crossoverRate
    mutationPolicy
    mutationRate
    selectionPolicy


    my book on functional programming

     

    new blog posts

     

    Copyright 1998-2021 Alvin Alexander, alvinalexander.com
    All Rights Reserved.

    A percentage of advertising revenue from
    pages under the /java/jwarehouse URI on this website is
    paid back to open source projects.