Package org.moeaframework.core.variable
Class Grammar
java.lang.Object
org.moeaframework.core.variable.Grammar
- All Implemented Interfaces:
Serializable
,Variable
Decision variable for grammars. This class represents the grammar as a variable-length integer codon which is
subsequently converted into a grammar using
ContextFreeGrammar.build(int[])
.- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptioncopy()
Returns an independent copy of this decision variable.int[]
cut
(int start, int end) Removes the indices in the range[start, end]
from the integer codon representation, returning array of the values removed by this cut operation.void
Parses and loads the value of this variable from a string.encode()
Encodes the value of this variable as a string.boolean
void
fromArray
(int[] codon) Sets the integer codon representation of this grammar.int
get
(int index) Returns the value at the specified index in the integer codon representation of this grammar.int
Returns the number of values that each codon can represent.int
hashCode()
void
insert
(int insertIndex, int[] array) Inserts the specified array into this grammar's integer codon representation at the specified insert index.void
Randomly assign the value of this variable.void
set
(int index, int value) Sets the specified index in the integer codon representation of this grammar to the specified value.void
setMaximumValue
(int maximumValue) Sets the number of values that each codon can represent.int
size()
Returns the length of the integer codon representation of this grammar.int[]
toArray()
Returns the integer codon representation of this grammar.toString()
Returns a human-readable representation of this value.
-
Constructor Details
-
Grammar
public Grammar(int size) Constructs a grammar variable with the specified initial size.- Parameters:
size
- the initial size of this grammar
-
Grammar
public Grammar(int[] codon) Constructs a grammar variable with the specified integer codon representation.- Parameters:
codon
- the integer codon representation for this grammar
-
-
Method Details
-
getMaximumValue
public int getMaximumValue()Returns the number of values that each codon can represent. Each index in the codon array can be assigned a value in the range[0, maximumValue-1]
- Returns:
- the number of values that each codon can represent
-
setMaximumValue
public void setMaximumValue(int maximumValue) Sets the number of values that each codon can represent. Each index in the codon array can be assigned a value in the range[0, maximumValue-1]
.- Parameters:
maximumValue
- the number of values that each codon can represent
-
toArray
public int[] toArray()Returns the integer codon representation of this grammar. The returned object is a clone of the internal storage, and thus can be modified independently of this instance.- Returns:
- the integer codon representation of this grammar
-
fromArray
public void fromArray(int[] codon) Sets the integer codon representation of this grammar. The stored object is a clone of the argument, and thus can be modified independently of this instance.- Parameters:
codon
- the new integer codon representation for this grammar- Throws:
IllegalArgumentException
- if any codon value is out of range ((value < 0) || (value >= getMaximumValue())
)
-
size
public int size()Returns the length of the integer codon representation of this grammar.- Returns:
- the length of the integer codon representation of this grammar
-
set
public void set(int index, int value) Sets the specified index in the integer codon representation of this grammar to the specified value.- Parameters:
index
- the index of the codon to be assignedvalue
- the new value for the specified index- Throws:
ArrayIndexOutOfBoundsException
- if the index is out of range ((index < 0) || (index >= size())
)IllegalArgumentException
- if the value is out of range ((value < 0) || (value >= getMaximumValue())
)
-
get
public int get(int index) Returns the value at the specified index in the integer codon representation of this grammar.- Parameters:
index
- the index of the codon value to be returned- Returns:
- the value at the specified index in the integer codon representation of this grammar
- Throws:
ArrayIndexOutOfBoundsException
- if the index is out of range ((index < 0) || (index >= size())
)
-
copy
Description copied from interface:Variable
Returns an independent copy of this decision variable. It is required thatx.copy()
is completely independent fromx
. This means any method invoked onx.copy()
in no way alters the state ofx
and vice versa. It is typically the case thatx.copy().getClass() == x.getClass()
andx.copy().equals(x)
. -
cut
public int[] cut(int start, int end) Removes the indices in the range[start, end]
from the integer codon representation, returning array of the values removed by this cut operation. For example,Grammar grammar = new Grammar(new int[] { 0, 1, 2, 3, 4, 5 }); int[] removed = grammar.cut(2, 4);
results in grammar representing the array[2, 3, 4]
and removed containing[0, 1, 5]
.- Parameters:
start
- the start index of the cut operationend
- the end index of the cut operation- Returns:
- the array of values removed by this cut operation
-
insert
public void insert(int insertIndex, int[] array) Inserts the specified array into this grammar's integer codon representation at the specified insert index. For example,Grammar grammar = new Grammar(new int[] { 0, 1, 2, 3, 4, 5 }); grammar.insert(2, new int[] { 6, 7 });
results in grammar representing the array[0, 1, 6, 7, 2, 3, 4, 5]
.- Parameters:
insertIndex
- the index where the specified array is to be insertedarray
- the array of integer codons to be inserted
-
hashCode
public int hashCode() -
equals
-
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. -
toString
Description copied from interface:Variable
Returns a human-readable representation of this value. -
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, useVariable.toString()
if a human-readable format is required. This method along withVariable.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.) -
decode
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 byVariable.encode()
.
-