Class AlgorithmProvider

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

public abstract class AlgorithmProvider extends Object
Defines an SPI for algorithms. Algorithms are identified by a unique name and may be given optional TypedProperties. The methods of the provider must return null if the algorithm is not supported by the provider.

If the provider can supply the algorithm but an error occurred during instantiation, the provider may throw a ProviderNotFoundException along with the details causing the exception.

To provide a custom AlgorithmProvider, first extend this class and implement the abstract method. Next, build a JAR file containing the custom provider. Within the JAR file, create the file META-INF/services/org.moeaframework.core.spi.AlgorithmProvider containing on a single line the class name of the custom provider. Lastly, add this JAR file to the classpath. Once these steps are completed, the algorithms(s) are now accessible via the AlgorithmFactory.getAlgorithm(java.lang.String, org.moeaframework.core.Problem) methods.

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 with the specified name, or null if this provider does not support the algorithm