What's new in Jenetics 7.2.0
Aug 31, 2023
- Improvemments:
- 862: Add a method, which allows to create a sliced (chromosome) view onto a given Genotype.
- 866: Allow specifying the default RandomGenerator used by the library.
- java -Dio.jenetics.util.defaultRandomGenerator=L64X1024MixRandom
- cp jenetics-@[email protected]:app.jar
- com.foo.bar.MyJeneticsAppjava
- 872: Improve generic type parameters for some argument types in io.jenetics.prog module.
- 876: Fix compiler warnings with Java 21.
- Bugs:
- 865, #867: Fixing typos in documentation.
- 868: Fix execution script ./jrun.cmd
New in Jenetics 7.1.0 (Jun 15, 2022)
- Improvements:
- #813: Re-implementation of MathExpr class. Replace ad-hoc parsing implementation.
- #815: Implement Grammatical-Evolution.
- #820: Additional BitChromosome methods: and, or, xor, not, shiftRight, shiftLeft.
- Bugs:
- #831: Error while parsing parentheses trees.
- #836: Fix BitChromosome(Test).
New in Jenetics 7.0.0 (Feb 21, 2022)
- Improvements:
- Convert data classes to records.
- Convert libraries to JPMS modules.
- Improve BitChromosome.
- Breaking change Update to Java 17.
- Incubator - Grammar-based evolution.
- Incubator - Simplify and unify parsing code for MathExpr class.
- Using RandomGenerator instead of Random class.
- Breaking change - Change upper limit of Integer/LongeGenes from inclusively to exclusively.
- Make AbstractChromosome non-Serializable.
- Use InstantSource instead of Clock for measuring evolution durations.
- Performance improve of subset creation method.
- Introduce Self interface.
- Add Sudoku example (by alex-cornejo).
- Bugs:
- Fix possible overflow in Integer/LongGene mean method.
- Fix possible underflow in DoubleGene mean method.
- Bug checking Sample arity in class SampleList.
New in Jenetics 6.3.0 (Aug 29, 2021)
- Improvements:
- ProxySorter is now able to sort array slices.
- Implement Ordered class. Currently, it is required that the return value of the fitness function to be Comparable. But sometimes you might want to change the order of a given type or add some order to a type. The Ordered class makes this possible.
New in Jenetics 6.2.0 (Feb 9, 2021)
- Improvements:
- #754: Make Optimize.best method null friendly.
- Bugs:
- #742: Fix compile error with Java 15.
- #746: Const<Double> equals doesn't conform with Double.compare.
- #748: Fix broken formulas in Javadoc.
- #752: StreamPublisher doesn't close underlying Stream on close.
New in Jenetics 6.1.0 (Sep 15, 2020)
- Improvements:
- #323: Fix leaky abstraction of CompositeCodec.
- #434: Rewrite build scripts using Kotlin.
- #695: Simplify MOEA for continious optimization.
- #704: Add FlatTreeNode.ofTree factory method, for cleaner Tree API.
- #706: The Constraint is now part of the Problem interface. If defined, it will automatically be part of the created Engine: default Optional<Constraint<G, C>> constraint() {return Optional.empty();}
- #708: Additional Chromosome.map(Function) methods. This allows a more efficient mapping of chromosomes.
- #731: Improve creation of constrained individuals, as defined in the Constraint interface.
- #739: Add jenetics.incubator module. This module will contain classes which might be part of one of the main module.
- Bugs:
- #700: GaussianMutator violates the DoubleGene's upper bound.
- #707: Fix conversion of BitChromosome <-> BitSet.
New in Jenetics 6.0.1 (Sep 14, 2020)
- Bugs:
- Invalid DoubleGene.isValid method.
- Fix numeric instability of RouletteWheleSelectorclass.
- IntermediateCrossover is not terminating for invalid genes.
New in Jenetics 3.1.0 (May 5, 2015)
- Improvements:
- Additional termination strategies in org.jenetics.engine.limit class.
- Add EvolutionStream.of factory method. This allows to use other evolution functions than the Engine class.
- org.jenetics.stat.Quantile has now a combine method which lets them use in a parallel stream.
- Fix typos in user manual.
- Add link to Javadoc and manual to README file.
- Remove Serializable interface from Gene and Chromosome.
- Make code examples in Javadoc standard conform.
- Improve recombination section in manual.
- Advance Genotype validity checks.
New in Jenetics 3.0.0 (Jan 6, 2015)
- Rewrite of engine classes to make use of Java 8 Stream API.
New in Jenetics 2.0.2 (Oct 4, 2014)
- Stabilization of ProbabilitySelector.probabilities method when minimizing the fitness function.
New in Jenetics 2.0.1 (Aug 12, 2014)
- Fix bug in ProbabilitySelector class. The inverted probabilities are not correctly calculated when minimizing the fitness function.
New in Jenetics 2.0.0 (Apr 17, 2014)
- Add IntegerGene/Chromosome classes.
- Remove all deprecated classes and methods.
- Remove dependency to the JScience library.
- All concurrency classes are now internal. GeneticAlgorithm class takes an Executor as additional parameter, which is used for parallelizable code.
- Library can now be downloaded via the maven central repository: `org.bitbucket.fwilhelm:org.jenetics:2.0.0`
New in Jenetics 1.6.0 (Apr 17, 2014)
- Add JAXB base XML serialization mechanism to the Gene/Chromosome/Genotype/Phenotype classes. Mark the XMLSerializable based XML serialization as deprecated. org.jenetics.util.IO.xml is now deprecated.
- Add Double/Long genes/chromosomes which will replace the Float64/Integer64 genes/chromosomes.
- Generalize the fitness function to 'Function
New in Jenetics 1.5.0 (Apr 17, 2014)
- Minor fixes in Gradle build script.
- Mark some 'arrays' class methods as deprecated.
- Fix/streamline BitChromosome constructors.
- Improve Gradle build scripts.
- Simplify statistics test classes.
New in Jenetics 1.4.1 (Oct 10, 2013)
- Fix bug in ListIterator implementation of the 'Seq' classes.
New in Jenetics 1.4.0 (Oct 10, 2013)
- Performance improvements of 'BitChromosome' class.
- Add method 'BitChromosome.bitCount()'.
- Mark 'arrays.subset' methods as deprecated; methods has been moved to 'org.jenetics.util.math' class.
- Improve Gradle build scripts.
- Change license from LGPL to Apache 2.0.
New in Jenetics 1.3.0 (Jun 15, 2013)
- Add abstract 'Random64' class, respectively make it public.
- Mark 'object.nonNull' methods as deprecated; functionality is now available in 'java.util.Objects.requireNonNull'.
- Mark 'arrays.indexWhere' methods as deprecated.
- Mark method 'object.str(Object)' as deprecated.
- Mark method 'object.str(byte[])' as deprecated; functionality has moved to 'bit.toString(byte[])'.
- Mark method 'math.min/max' as deprecated; functionality has moved to 'math.statistics' class.
- Mark method 'math.sum' as deprecated; functionality has moved to 'math.statistics' class.
- Mark 'arrays.foreach' method as deprecated. Replaced by 'arrays.forEach'.
- Mark 'Seq.forall' method as deprecated. Replaced by 'Seq.forAll'.
- Mark 'Seq.foreach' method as deprecated. Replaced by 'Seq.forEach'.
- Mark non-array methods in 'arrays' class as deprecated.
- Mark 'arrays.permutation' methods as deprecated.
- Add 'Array.shuffle()' method.
- Fix thread-safe version of the 'LCG64ShiftRandom' class.
- Implement 'Comparable' interface for 'EnumGene'.
- Add Array boxing/unboxing methods for short/Short.
- Needed Gradle version (for building the library) is now 1.6.
New in Jenetics 1.2.0 (Mar 26, 2013)
- Marking some Array constructors as deprecated.
- Add some additional random helper functions.
- Implement MultiplePointCrossover class.
- Some code streamlining.
- Prepare Selectors for parallelization.
- The 'org.jenetics' project is now an OSGi module.
New in Jenetics 1.1.1 (Feb 18, 2013)
- Fix bug in SinglePointCrossover, will just swap the whole Genotypes.
New in Jenetics 1.1.0 (Dec 27, 2012)
- Add 'LCG64ShiftRandom' PRNG.
- Speedup of 'IndexStream.Random' class. Uses internally now int values instead of doubles.
- Add 'IndexStream.foreach' method.
- Some minor code improvements.
- Preparation for converting Jenetics into OSGi modules.
- Switch build system from 'Ant' to 'Gradle'.
- Switch SCM from 'Subversion' to 'Mercurial'.
- Update documentation; describing new repository.
New in Jenetics 1.0.1 (Sep 5, 2012)
- Fix bug in RouletteWheelSelector. The selection probabilities was not correctly calculated
New in Jenetics 1.0 (Sep 5, 2012)
- Rename 'RandomRegistry.setDefault()' method to 'RandomRegistry.reset()'.
- Rename 'MappableAccumulator' to 'MappedAccumulator'.
- Optimize ProbabilitySelector. The selection complexity is now O(n + log(n)),
- instead of O(n^2).
- Remove NumberGene.asFactory method; no longer needed.
- Rename method MSeq.fill(T[]) to MSeq.setAll(T[]).
- Rename method MSeq.fill(Iterator) to MSeq.setAll(Iterator).
- Rename method MSeq.fill(T) to MSeq.setAll(T).
- Add org.jenetics.util.Seq.forall(Function) method.
- Rename org.jenetics.util.Seq.indexOf(Function) to Seq.indexWhere(Function).
- Rename org.jenetics.util.Seq.lastIndexOf(Function) to Seq.lastIndexWhere(Function).
- Remove org.jenetics.util.CompositeFunction. Functionality moved to
- org.jenetics.util.functions object.
- Add Ant to build libraries.
- Rename org.jenetics.util.CharSet to org.jenetics.util.CharSeq.
- Some javadoc fixes.
New in Jenetics 0.9.0.0 (Sep 5, 2012)
- Rename org.jenetics.Until class to org.jenetics.termination.
- Remove ConstantFitnessFunction.
- Mark GeneticAlgorithm.addAlterer(Alterer) method as deprecated.
- Add GeneticAlgorithm.setAlterers(final Alterer) method.
- Add GeneticAlgorithm.setup(Collection) method.
- Rename Recombinator.recombinate to Recombinator.recombine.
- Add IO.read methods without Class argument.
- Rename Recombination to Recombinator.
- Rename Array.append methods to Array.add.
- Add an 'IO' class with IO helper methods.
- Remove EnumGene, can be replaced by Integer64Gene.
- Update JScience library from 4.3 to 4.3.1.
- Simplify 'Accumulator' class hierarchy. Remove 'AdaptableAccumulator' and
- rename 'AbstractAccumulator' to 'MappableAccumulator'.
- Convert BitChromosome.valueOf() to constructors.
- Remove GeneticAlgorithm.valueOf methods. They are no longer needed due to the extended type inference capabilities of Java 7 (diamond operator ).
- Move the static 'concurrency' methods from the 'GeneticAlgorithm' class to a
- new 'Concurrency' class.
- The new org.jenetics.util.Function interfaces replaces the FitnessFunction,
- Predicate and Converter interface.
- Convert source to Java 7.
New in Jenetics 0.8.0.0 (Jun 2, 2011)
- Add Array.sort() methods.
- Add performance tests.
- Rename the Array.seal() method to Array.toISeq() and remove the Array.isSealed()
- method.
- Add new TestNG version 6.0.
- The EvaluatorRegistry is no longer used. Only the GA directly was using it, so
- remove the registry and add the Evaluator as member to the GA.
- Rename Genotype.toArray to Genotype.toSeq and Chromosome.toArray to
- Chromosome.toSeq.
- Add interfaces Seq, ISeq and MSeq to make the (im)mutable state of the Array
- class more explicit.
- Making org.jenetics.Statisitcs.Builder constructor protected and add static
- factory method which creates an new builder instance.
- Change the signature of the Statistics.Calculator.evaluate method to work with
- Iterable
New in Jenetics 0.7.0.0 (Jun 2, 2011)
- Change the signature of the org.jenetics.Statistics.Calculator.evaluate
- methods so that it returns a Statistics.Builder instead of a Statistics object.
- Add builder classes for Statistics and NumberStatistics classes.
- Rename org.jenetics.util.TransitiveConverter to org.jenetics.util.CompositeConverter.
- Fix documentation and behavior of org.jenetics.GaussianMutator class.
- Fix the org.jenetics.Mutator class. The mutation probability is (now) the
- probability that a given gene is mutated. (Should have been always the case.)
- Add org.jenetics.stat.NormalDistribution class for creating statistical tests
- for the org.jenetics.Mutator class.
- The org.jenetics.Alterer.alter method now returns the number of altered genes.
- Refactoring: Move Accumulators.Variance and Accumulators.Mean class to
- org.jenetics.stat package.
- Create org.jenetics.stat package.
- Change type signature from 'C extends Comparable' to
- C extends Comparable
New in Jenetics 0.6.1.0 (Sep 16, 2010)
- Selectors and Alterers are no longer Serializable.
- Implement readObject and writeObject methods in gene and chromosome implementations.
- Making CharSet class final.
- Fixing bug in the ArrayUtils.sort(Array) method. This method doesn't sort
- Arrays created with Array.subArray not the right way.
- Fixing bug in SinglePointCrossover class. It was only a 'half' crossover performed.
- Add org.jenetics.util.Array.subArray(int) method.
- Add org.jenetics.util.Array.map(Converter) method.
- Change the method signature of the org.jenetics.utils.IOUtils.writeXXX methods.
- Now the parameter order is , .
- Add org.jenetics.utils.Array.toString(String, String, String) method.
New in Jenetics 0.6.0.0 (May 25, 2010)
- Change structure to Maven standard directory layout.
- BitChromosome implements now org.jscience.mathematics.number.Number instead of org.jscience.mathematics.number.Number.
- Add BitChromosome.invert() method.
- Fixing bug in CharSet class. The constructor CharSet(String) now creates a distinct CharSet.
- Fixing bug in Array.equals(Object) method.
- Add Array.fill(Factory) method.
- Jenetics now allows fitness minimization.
New in Jenetics 0.5.1.0 (May 25, 2010)
- Add org.jenetics.util.Predicates which contains some general purpose predicates like Not, And, Or, Nil.
- Add incremental Quantile class.
- Add ConverterAdapter class.
- Removed Genotype.chromosomes() method. Use Genotype.length() instead.
- Add Accumulator classes for statistics calculation.
- Rename org.jenetics.utils.Serializer to org.jenetics.utils.IOUtils.
- Change method signature from ArrayUtils.foreach(Collection) to
- ArrayUtils.foreach(Iterable).
- Add Array.toArray() and Array.toArray(Object[]) methods.
- Add 'divide' method to Float64Gene and Integer64Gene.
- Add factory methods CharSet.valueOf(CharSequence) and CharSet.valueOf(char, char).
New in Jenetics 0.5.0.0 (May 25, 2010)
- Rename Validator.notNull() to Validator.nonNull(). It's the same name as in the
- new Objects.nonNull() method in Java 1.7.
- Remove the org.jenetics.Propability class. It's not worth the effort.
- Refactoring of the Alterer class. The Alterer is now an interface with one
- "alter" method. To combine different alterers to one alterer you have to use
- the CompositeAlterer class.
- Rename Mutation to Mutator.
- Rename DoubleGene(Chromosome) to Float64Gene(Chromosome).
- Rename IntegerGene(Chromosome) to Integer64Gene(Chromosome).
- Rename org.jenetics.util.XMLSerializer to org.jenetics.util.Serializer.
- Move Mean class from org.jenetics to org.jenetics.util package.
- Rename PowerScaler to ExponentialScaler.
- Add new selector, MonteCarloSelector. This selector can be used to evaluate
- the performance of an other selector.
- Rename GeneticAlgorithm.getBestStatistic() method to
- GeneticAlgorithm.getBestStatistics()
- Change org.jenetics.util.Timer to nano second resolution.
- Rename method Statistics.getTimes() to Statistics.getTime().
- Replace the Statistics.Time properties with "final" javolution.lang.References.
- Instead of statistics.getTimes().getAlterTime() you write statistics.getTimes().alter.get().
- Adding fork-join library from Doug Lea and ForkJoinEvaluator.
- Adding UmlGraph for javadoc generation.
- Making the Array class cloneable.
- Fix external javadoc references in build script.
- The characters which are used by the CharacterGene can now be changed.
- Adding adapter class for jscience Function object.
- Adding method getParallelTasks to Evaluator interface.
- The GeneticAlgorithm.getLock() method now returns a fair lock.
- Make the static helper method ArrayUtils.asList() a member method of the Array
- class.
- Make the Array class Serializable.
- Making the StatisticsCalculator a static inner class of the Statistics.
New in Jenetics 0.4.0.1 (May 25, 2010)
- Fix bug in the GeneticAlgoritm.setPopulation/setGenotypes function. The fitness scaler was not set.
- The examples are packed in separate jar file (Jenetics examples-.jar).
- Some Fixing javadoc.
New in Jenetics 0.4.0.0 (May 25, 2010)
- Remove the survivor fraction probability from the GA. This can lead to
- inconsistencies with the offspring fraction. The survivor fraction is deduced
- from the offspring fraction (sf := 1 - of).
- Adding additional example.
- Removing the static factory methods from the Array class.
- Refactoring GA statistic classes.
- Adding TruncationSelector.
- Adding SwapMutation class, needed for TSP (and other combinatorial) problem.
- Rename NumberGene.getMinValue() to NumberGene.getMaxValue() to
- NumberGene.getMin() and NumberGene.getMax().
- Remove the mutation method from the Chromosomes interface. The mutation is
- solely done by the Mutation class. This requires a new method in the Gene
- interface, Gene.newInstance(). To not be forced to cast the newly generated
- gene to its concrete type, an additional type parameter has been added to the
- Gene interface. As side effect, no @SuppressWarnin annotation are needed.
- Adding GaussianMutation class.
- Fixing Mutation class. After an previous refactoring no mutation was performed.
- Fixing mutation probability calculation in Mutation class.
- Making mutation a little bit faster.
- The methods of the Array class throw an ArrayIndexOutOfBoundsException instead
- of an IndexOutOfBoundsException.
- Fixing again bugs in the Array(Utils) class concerning the sealed state.
- Adding ArrayUtils.sealedArray() method.
- Rename Chromosome.getGenes() to Chromosome.toArray().
- Making all method parameters final.
New in Jenetics 0.3.2.1 (May 25, 2010)
- Adding and extending javadoc comments.
- Finish NumericStatistic/Calculator implementation.
- Fixing minor flaws of the Arrays sealed state.
- Adding method Array.subArray(int, int).
- Generalize the method Array.clear() to Array.fill(T value).
New in Jenetics 0.3.2.0 (May 25, 2010)
- The PropabilitySelector no longer sorts the population before calling the ProbabilitySelector.probabilities() method. The subclass must sort the population if needed.
- Move Verifiyble interface to util package.
- Change signature of the Alterer.alter(Population, int) method. Adding the generation of the altered phenotype.
- Add new abstract Alterer class Recombination.
- Move RandomRegistry into org.jenetics.util package.
- Add org.jenetics.util.EvaluatorRegistry class.
- Parallelize the recombination in the Recombination class.
New in Jenetics 0.3.1.0 (May 25, 2010)
- Deleting ConcurrentStatisticCalculator
- Adding concurrence support on the level of the fitness calculation of the
- phenotypes of the population. This will the job of the
- (Concurrent)Evaluator.
- CharacterChromosome implements java.lang.CharSequence interface.
- Adding method org.jenetics.util.Array.subArray(start, end).
- Adding timer which measures the time spend for selecting, altering and
- calculating the fitness of a population.
New in Jenetics 0.3.0.0 (May 25, 2010)
- Adding javadoc to exported zip file.
- Moving classes
- Array
- ArrayIterator
- ArrayUtils
- BitUtils
- Probability
- Validator
- into new org.jenetics.util package.
- Changing interface 'FitnessFunction'. It converts a given Genotyp to an
- (more general) java.lang.Comparable instead of a double value. An additional
- generic parameter (C extends Comparable) was therefor introduced in the
- FitnessScaler, Phenotype, Population, Selector and GeneticAlgorithm class.
- Adding NumericStatistic and NumericStatisticCalculator. Move functionality
- from old Statistic class into the new NumericStatistic class.
- Some additional helper methods in the ArrayUtils class.
- Remove method CharacterGene.getCharacter(), use CharacterGene.getAllele()
- instead.
- adding interface org.jenetics.util.Copyable.
- Streamline XML-Serialization.
- Streamline toString methods and examples.
New in Jenetics 0.2.0.0 (May 25, 2010)
- Removing Randomizable interface.
- Changing the template method return value of the ProbabilitySelector.probabilities(Population,int) from Probabilities[] to double[].
- Replace array types (e.g. IntegerGene[]) with Array class (e.g. Array). This moves all the 'unchecked' stuff in the new Array class.
- Only add valid phenotypes to surviving phenotypes.
- Caching the isValid value in AbstractChromosome and Genotype.
- Rename util class org.jenetics.Arrays to org.jenetics.ArrayUtils.
- Adding StatisticTest class.
- Adding the (shortcut)method Genotype.getGene()
- Adding the method Chromosome.getGene() to the Chromosome interface.
- Adding the ConcurrentStatisticCalculator class.
- Making the StatisticsCalculator class public.
New in Jenetics 0.1.0.4 (May 25, 2010)
- Adding @Override annotation where possible.
- The factory method IntegerGene.valueOf(long min, long max) and the DoubleGene.valueOf(double min, double max) now creates a Gene with a random value within the given range. Adding comments to this methods
New in Jenetics 0.1.0.3 (May 25, 2010)
- Using javolution.context.LocalContext.Reference in RandomRegistry.
- New version of the private PermutationChromosome.randomize method.
- Adding private helper class Arrays.