Skip to content

Releases: MOEAFramework/MOEAFramework

Version 4.2

26 May 23:15
Compare
Choose a tag to compare
  • Adds the U-NSGA-III algorithm, which replaces NSGA-III's random selection with niche-based tournament selection
    to increase selection pressure.

  • Adds the AGE-MOEA-II algorithm, which uses the (estimated) geometry of the Pareto front when assigning survival
    scores / fitness to solutions.

  • Adds the 15 problems from the MaF test problem suite.

  • Adds classes in org.moeaframework.core.attribute for reading and writing attributes.

  • Improves argument validation with the new Validate class, enabling simpler and more expressive conditions along
    with detailed error messages:

    Validate.that("arg", arg).isGreaterThan(0);
    

Version 4.1

06 May 17:48
Compare
Choose a tag to compare
  • Adds DefaultNormalizer and DefaultEpsilons classes with the ability to override the defaults with
    problem-specific, custom settings. These settings can be set either by calling override or loaded from the
    properties file.

  • ThreadLocalMersenneTwister is now the default random number generator used by PRNG. Consequently,
    PRNG can be used by multi-threaded or parallel codes directly.

  • Markdown and Latex support when saving or displaying tables:

    algorithm.getResult().save(TableFormat.Latex, new File("result.tex"));
    
  • Expands CI testing to include Windows and MacOS.

  • Improvements to ExternalProblem, including:

    • Adds Builder to simplify configuring the executable, optional sockets, and other settings:

      new ExternalProblem.Builder().withCommand("problem.exe").withDebugging()
      
    • Added retries and shutdown timeout, which can be configured through the builder or the global properties:

      org.moeaframework.problem.external.enable_debugging = true
      org.moeaframework.problem.external.retry_attempts = 5
      org.moeaframework.problem.external.retry_delay = 1
      org.moeaframework.problem.external.shutdown_timeout = 10
      
    • Adds Winsock support on Windows, enabling socket communication on all supported platforms.

    • Adds brackets "[0,1,2]" and braces "{0,3}" to permutation and subset string encodings, respectively, for
      improved parsing and validation.

Version 4.0

05 Apr 21:44
Compare
Choose a tag to compare
  • Bumps minimum supported Java version to 17. This is a long-term support (LTS) release with an end-of-life of
    Sept 2029.

  • As this is a major update, a number of breaking changes have been introduced, including removing deprecated
    methods and reorganizing classes. Most classes still exists, but have been moved to different packages.
    Please update imports to fix any compilation issues.

  • Other notable changes include:

    • Adds ProblemBuilder tool that generates templates for writing problems in C, C++, Fortran, Java,
      and Python. See the Writing Native Problems documentation for more details.

    • Adds the Indicators class to simplify calculating performance indicators.

    • Moves all documentation online, replacing the Beginner's Guide PDF.

Version 3.11

04 Mar 19:19
Compare
Choose a tag to compare
  • Removes the setInitialPopulationSize method and corresponding populationSize parameter
    from DBEA. Instead, the population size is dervied from the divisions parameter.

  • Improved online documentation

Version 3.10

18 Jan 18:38
Compare
Choose a tag to compare
  • Fixes bug #394 where changing the aggregate fitness comparator used by a GeneticAlgorithm would
    not update the comparator used by its selection operator.

  • Adds ZCAT test problem suite.

  • Adds feasibility ratio calculator that estimates the difficulty of constrained problems by measuring
    the percentage of randomly-generated solutions that are feasible.

  • Updates all dependencies to their latest versions.

Version 3.9

05 Jan 16:38
Compare
Choose a tag to compare
  • Support BinaryIntegerVariable in externally-defined problems. Namely, this sends the integer value
    to the program which can be read using the new MOEA_Read_int function in our C/C++ library.

  • Allow configuring a custom reference set for the Executor / Analyzer / Instrumenter.

  • Adds LSMOP test problem suite.

  • Adds Constraint class to make calculating constraint values easier:

    solution.setConstraint(0, Constraint.lessThanOrEqual(c1, 0.0));
    
  • Moves initialization and selection operators into separate packages.

Version 3.8

12 Nov 01:24
f8d949d
Compare
Choose a tag to compare
  • Adds termination condition based on distance to target solution.

  • Fixes bug in UniformDesignGenerator

  • Improves implicit conversion from real values to integers when loading properties. This also
    fixes a bug where NormalBoundaryDivisions errored when passing in a real value for the number of
    divisions.

Version 3.7

20 Jul 21:04
Compare
Choose a tag to compare
  • Removes the PISA algorithms and moves them to a separate plugin at https://github.com/MOEAFramework/PISA-Plugin.
    The new plugin supports automatically downloading and configuring the PISA selectors. If you are using PISA
    algorithms and want to upgrade to 3.7, simply add the pisa-plugin Maven dependency to your pom.xml
    or copy the JAR into the lib/ folder.

Version 3.6

24 Apr 15:10
Compare
Choose a tag to compare
  • Fixes bug in R indicators where the approximation set was not being normalized.

  • Redesigns and simplifies how state and resumability work. All algorithms can now be resumed using the
    Checkpoints wrapper.

  • Adds single-objective simulated annealing (SA) algorithm.

Version 3.5

24 Mar 19:36
070ab9e
Compare
Choose a tag to compare
  • Fixes bug causing variation can not be null errors when attempting to setup an algorithm with a problem
    containing mixed decision variable types.

  • Adds DistributedProblem.from(...) method to make it easier to parallelize function evaluations

    try (Problem problem = DistributedProblem.from(new UF1())) {
        NSGAII algorithm = new NSGAII(problem);
        algorithm.run(10000);
    }
    
  • Improvements to online documentation and examples, adds details for parallelization.