Class AlgorithmProvider

java.lang.Object
org.moeaframework.core.spi.AlgorithmProvider
Direct Known Subclasses:
RegisteredAlgorithmProvider

public abstract class AlgorithmProvider extends Object
Defines a SPI for algorithms.

To create a custom AlgorithmProvider:

  1. Extend this class and implement the abstract methods.
  2. Create the file META-INF/services/org.moeaframework.core.spi.AlgorithmProvider with a line identifying the fully-qualified class name of the custom provider.
  3. Compile and bundle the .class file(s) along with the META-INF folder into a JAR.
  4. Include this JAR on the classpath.
Providers can also be registered directly with AlgorithmFactory.

As algorithm names are often used in file names, it is best to avoid characters which are not compatible with the file system. It is suggested that names match the following regular expression: ^[a-zA-Z0-9()\-,]+$.

  • Constructor Details

    • AlgorithmProvider

      public AlgorithmProvider()
      Constructs an algorithm provider.
  • Method Details

    • getDiagnosticToolAlgorithms

      public Set<String> getDiagnosticToolAlgorithms()
      Returns the algorithms names to appear in the diagnostic tool. If there are multiple aliases for the same algorithm, provide only the canonical name.
      Returns:
      the algorithm names
    • getAlgorithm

      public abstract Algorithm getAlgorithm(String name, TypedProperties properties, Problem problem)
      Returns the algorithm with the specified name, or null if this provider does not support the algorithm. An optional set of properties may be provided to further define the algorithm; however, the provider is expected to supply default properties if none are provided.
      Parameters:
      name - the algorithm name
      properties - optional properties for the algorithm
      problem - the problem
      Returns:
      the algorithm instance or null
      Throws:
      ProviderException - if the creation of the algorithm failed for any reason