@@ -0,0 +1,2447 @@
+/*%0A * Java Genetic Algorithm Library (@__identifier__@).%0A * Copyright (c) @__year__@ Franz Wilhelmst%C3%B6tter%0A *%0A * Licensed under the Apache License, Version 2.0 (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A *      http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A *%0A * Author:%0A *    Franz Wilhelmst%C3%B6tter (franz.wilhelmstoetter@gmx.at)%0A */%0Apackage org.jenetics.example;%0A%0Aimport java.time.LocalDate;%0A%0Aimport org.jenetics.AnyChromosome;%0Aimport org.jenetics.AnyGene;%0Aimport org.jenetics.Genotype;%0Aimport org.jenetics.Phenotype;%0Aimport org.jenetics.RouletteWheelSelector;%0Aimport org.jenetics.engine.Codec;%0Aimport org.jenetics.engine.Engine;%0Aimport org.jenetics.engine.EvolutionResult;%0Aimport org.jenetics.util.RandomRegistry;%0A%0A/**%0A * This example tries to find a monday with the highest day of month.%0A *%0A * @author %3Ca href=%22mailto:franz.wilhelmstoetter@gmx.at%22%3EFranz Wilhelmst%C3%B6tter%3C/a%3E%0A */%0Apublic class LastMonday %7B%0A%0A%09// First monday of 2015.%0A%09private static final LocalDate MIN_MONDAY = LocalDate.of(2015, 1, 5);%0A%0A%09// The used Codec.%0A%09private static final Codec%3CLocalDate, AnyGene%3CLocalDate%3E%3E CODEC = Codec.of(%0A%09%09Genotype.of(AnyChromosome.of(LastMonday::nextRandomMonday)),%0A%09%09gt -%3E gt.getGene().getAllele()%0A%09);%0A%0A%09// Supplier of random 'LocalDate' objects. The implementation is responsible%0A%09// for guaranteeing the desired allele restriction. In this case we will%0A%09// generate only mondays.%0A%09private static LocalDate nextRandomMonday() %7B%0A%09%09return MIN_MONDAY.plusWeeks(RandomRegistry.getRandom().nextInt(1000));%0A%09%7D%0A%0A%09// The fitness function: find a monday at the end of the month.%0A%09private static int fitness(final LocalDate date) %7B%0A%09%09return date.getDayOfMonth();%0A%09%7D%0A%0A%09public static void main(final String%5B%5D args) %7B%0A%09%09final Engine%3CAnyGene%3CLocalDate%3E, Integer%3E engine = Engine%0A%09%09%09.builder(LastMonday::fitness, CODEC)%0A%09%09%09.offspringSelector(new RouletteWheelSelector%3C%3E())%0A%09%09%09.build();%0A%0A%09%09final Phenotype%3CAnyGene%3CLocalDate%3E, Integer%3E best = engine.stream()%0A%09%09%09.limit(50)%0A%09%09%09.collect(EvolutionResult.toBestPhenotype());%0A%0A%09%09System.out.println(best);%0A%09%7D%0A%0A%7D%0A

Add simple example for 'AnyChromosome' usage.