Class Permutation

java.lang.Object
org.moeaframework.core.variable.Permutation
All Implemented Interfaces:
Serializable, Variable

public class Permutation extends Object implements Variable
Decision variable for permutations.
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    Permutation(int size)
    Constructs a permutation variable with the specified number of elements.
    Permutation(int[] permutation)
    Constructs a permutation variable using the specified permutation array.
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns an independent copy of this decision variable.
    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.
    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.
    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 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(int[] permutation)
      Constructs a permutation variable using the specified permutation array.
      Parameters:
      permutation - the permutation array
      Throws:
      IllegalArgumentException - if the permutation array is not a valid permutation
  • Method Details

    • copy

      public Permutation copy()
      Description copied from interface: Variable
      Returns an independent copy of this decision variable. 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).
      Specified by:
      copy in interface Variable
      Returns:
      an independent copy of this decision variable
    • 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 Object
    • equals

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

      public void randomize()
      Description copied from interface: Variable
      Randomly assign the value of this variable. In general, the randomization should follow a uniform distribution.
      Specified by:
      randomize in interface Variable
    • 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.)
      Specified by:
      encode in interface Variable
      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().
      Specified by:
      decode in interface Variable
      Parameters:
      value - the value as a string