Class Permutation

java.lang.Object
org.moeaframework.core.variable.AbstractVariable
org.moeaframework.core.variable.Permutation
All Implemented Interfaces:
Serializable, Copyable<Variable>, Defined, Named, Variable

public class Permutation extends AbstractVariable
Decision variable for permutations.
See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.moeaframework.core.Defined

    Defined.ConstructorComparator
  • Field Summary

    Fields inherited from class org.moeaframework.core.variable.AbstractVariable

    name
  • Constructor Summary

    Constructors
    Constructor
    Description
    Permutation(int size)
    Constructs a permutation variable with the specified number of elements.
    Permutation(String name, int size)
    Constructs a permutation variable with the specified number of elements.
  • Method Summary

    Modifier and Type
    Method
    Description
    Creates and returns a copy of this object.
    void
    decode(String value)
    Parses and loads the value of this variable from a string.
    Encodes the value of this variable as a string.
    boolean
     
    void
    fromArray(int[] permutation)
    Sets the permutation array.
    int
    get(int index)
    Returns the value of the permutation at the specified index.
    Returns the string representation, or definition, of this object.
    static int[]
    Returns the value stored in a permutation decision variable.
    int
     
    void
    insert(int i, int j)
    Removes the i-th element and inserts it at the j-th position.
    static boolean
    isPermutation(int[] permutation)
    Returns true if the specified permutation is valid; false otherwise.
    void
    Randomly assign the value of this variable.
    static void
    setPermutation(Variable variable, int[] values)
    Sets the value of a permutation decision variable.
    int
    Returns the number of elements in this permutation.
    void
    swap(int i, int j)
    Swaps the i-th and j-th elements in this permutation.
    int[]
    Returns a copy of the permutation array.
    Returns a human-readable representation of this value.
    protected static void
    validatePermutation(int[] permutation)
    Validate the given array is a permutation.

    Methods inherited from class org.moeaframework.core.variable.AbstractVariable

    getName

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • Permutation

      public Permutation(int size)
      Constructs a permutation variable with the specified number of elements.
      Parameters:
      size - the number of elements in the permutation
    • Permutation

      public Permutation(String name, int size)
      Constructs a permutation variable with the specified number of elements.
      Parameters:
      name - the name of this decision variable
      size - the number of elements in the permutation
  • Method Details

    • copy

      public Permutation copy()
      Description copied from interface: Copyable
      Creates and returns a copy of this object. It is required that x.copy() is completely independent from x. This means any method invoked on x.copy() in no way alters the state of x and vice versa. It is typically the case that x.copy().getClass() == x.getClass() and x.copy().equals(x).
      Returns:
      the copy
    • size

      public int size()
      Returns the number of elements in this permutation.
      Returns:
      the number of elements in this permutation
    • get

      public int get(int index)
      Returns the value of the permutation at the specified index.
      Parameters:
      index - the index of the permutation value to be returned
      Returns:
      the permutation element at the specified index
      Throws:
      ArrayIndexOutOfBoundsException - if the index is out of range [0, size()-1]
    • swap

      public void swap(int i, int j)
      Swaps the i-th and j-th elements in this permutation.
      Parameters:
      i - the first index
      j - the second index
      Throws:
      ArrayIndexOutOfBoundsException - if i or j is out or range @{code [0, size()-1]}
    • insert

      public void insert(int i, int j)
      Removes the i-th element and inserts it at the j-th position.
      Parameters:
      i - the first index
      j - the second index
      Throws:
      ArrayIndexOutOfBoundsException - if i or j is out or range @{code [0, size()-1]}
    • toArray

      public int[] toArray()
      Returns a copy of the permutation array.
      Returns:
      a copy of the permutation array
    • fromArray

      public void fromArray(int[] permutation)
      Sets the permutation array.
      Parameters:
      permutation - the permutation array
      Throws:
      IllegalArgumentException - if the permutation array is not a valid permutation
    • validatePermutation

      protected static void validatePermutation(int[] permutation)
      Validate the given array is a permutation.
      Parameters:
      permutation - the permutation array
      Throws:
      IllegalArgumentException - if the permutation array is not a valid permutation
    • isPermutation

      public static boolean isPermutation(int[] permutation)
      Returns true if the specified permutation is valid; false otherwise.
      Parameters:
      permutation - the permutation array
      Returns:
      true if the specified permutation is valid; false otherwise
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class AbstractVariable
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class AbstractVariable
    • randomize

      public void randomize()
      Description copied from interface: Variable
      Randomly assign the value of this variable.
    • getDefinition

      public String getDefinition()
      Description copied from interface: Defined
      Returns the string representation, or definition, of this object.
      Returns:
      the definition
    • toString

      public String toString()
      Description copied from interface: Variable
      Returns a human-readable representation of this value.
      Specified by:
      toString in interface Variable
      Overrides:
      toString in class Object
      Returns:
      the value of this variable formatted as a string
    • encode

      public String encode()
      Description copied from interface: Variable
      Encodes the value of this variable as a string. This should reflect the internal representation of the value and not necessarily the actual value. For example, a binary-encoded integer should display the bits and not the integer value.

      Implementations should make an effort to display the value in a meaningful format, but that is not required. Instead, use Variable.toString() if a human-readable format is required.

      This method along with Variable.decode(String) are used primarily for storing values in text files. To make parsing easier, the resulting string must:

      1. Only contain ASCII characters
      2. Contain no whitespace (no spaces, tabs, newlines, etc.)
      Returns:
      the encoded value as a string
    • decode

      public void decode(String value)
      Description copied from interface: Variable
      Parses and loads the value of this variable from a string. This must be able to process any string produced by Variable.encode().
      Parameters:
      value - the value as a string
    • getPermutation

      public static int[] getPermutation(Variable variable)
      Returns the value stored in a permutation decision variable.
      Parameters:
      variable - the decision variable
      Returns:
      the value stored in a permutation decision variable
      Throws:
      IllegalArgumentException - if the decision variable is not of type Permutation
    • setPermutation

      public static void setPermutation(Variable variable, int[] values)
      Sets the value of a permutation decision variable.
      Parameters:
      variable - the decision variable
      values - the permutation to assign the permutation decision variable
      Throws:
      IllegalArgumentException - if the decision variable is not of type Permutation
      IllegalArgumentException - if values is not a valid permutation