All Implemented Interfaces:
Configurable, Mutation, Variation

public class PM extends TypeSafeMutation<RealVariable>
Polynomial mutation (PM) operator. PM attempts to simulate the offspring distribution of binary-encoded bit-flip mutation on real-valued decision variables. Similar to SBX, PM favors offspring nearer to the parent.

The distribution index controls the shape of the offspring distribution. Larger values for the distribution index generates offspring closer to the parents.

It is recommended each decision variable is mutated with a probability of 1 / L, where L is the number of decision variables. This results in one mutation per offspring on average.

This operator is type-safe.

References:

  1. Deb, K. and Goyal, M. "A combined genetic adaptive search (GeneAS) for engineering design." Computer Science and Informatics, 26(4):30-45, 1996.
  • Constructor Details

    • PM

      public PM()
      Constructs a polynomial mutation operator with the default settings. This includes a mutation probability of 0.1 and a distribution index of 20.0.
    • PM

      public PM(double probability, double distributionIndex)
      Constructs a polynomial mutation operator with the specified probability and distribution index.
      Parameters:
      probability - the probability this operator is applied to each decision variable
      distributionIndex - the distribution index controlling the shape of the polynomial mutation.
  • Method Details

    • getName

      public String getName()
      Description copied from interface: Variation
      Returns the name of this variation operator. This name should also be used as the prefix for any parameters. As such, the name should only contain alphanumeric characters, avoid using whitespace and other symbols.
      Returns:
      the name of this variation operator
    • getDistributionIndex

      public double getDistributionIndex()
      Returns the distribution index controlling the shape of the polynomial mutation.
      Returns:
      the distribution index controlling the shape of the polynomial mutation
    • setDistributionIndex

      public void setDistributionIndex(double distributionIndex)
      Sets the distribution index controlling the shape of the polynomial mutation.
      Parameters:
      distributionIndex - the distribution index controlling the shape of the polynomial mutation
    • mutate

      public void mutate(RealVariable v)
      Mutates the specified variable using polynomial mutation.
      Specified by:
      mutate in class TypeSafeMutation<RealVariable>
      Parameters:
      v - the variable to be mutated