Package org.jacop.constraints.geost
Class PredefinedOrder
- java.lang.Object
-
- org.jacop.constraints.geost.PredefinedOrder
-
- All Implemented Interfaces:
LexicographicalOrder
public class PredefinedOrder extends java.lang.Object implements LexicographicalOrder
- Version:
- 4.8
It provides a very simple lexicographical order based on the dimension ordering, with the possibility to choose the most significant dimension
-
-
Field Summary
Fields Modifier and Type Field Description (package private) int[]actualDimensionOrderIt stores the position of dimensions in the ordering starting from most significant dimension to the least significant one.(package private) int[]dimensionPositionIt stores the initial position of dimensions in the ordering array.(package private) int[]masterOrderingIt stores the ordering of dimensions without taking most significant dimension into account.(package private) intmostSignificantDimensionIt stores currently the most significant dimension.
-
Constructor Summary
Constructors Constructor Description PredefinedOrder(int[] ordering, int mostSignificantDimension)It specifies the comparison of k-dimensional point comparator based on the dimension ordering and the most significant dimension.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.StringcheckInvariants()It checks the invariants for this order.intcompare(int[] p1, int[] p2)It compares two k-dimensional points.intdimensionAt(int precedenceLevel)It provides the dimension corresponding to the given precedence levelintgetMostSignificantDimension()This is equivalent to the call precedenceOf(0).int[]masterOrdering()It returns the ordering of dimensions used when no shift is applied (i.e.intprecedenceOf(int dimension)It provides the precedence level of the given dimension.private voidrecomputeActualDimensionOrder()voidsetMostSignificantDimension(int d)It shifts the lexicographical order so that the most significant dimension is set to d.java.lang.StringtoString()
-
-
-
Field Detail
-
mostSignificantDimension
int mostSignificantDimension
It stores currently the most significant dimension.
-
masterOrdering
final int[] masterOrdering
It stores the ordering of dimensions without taking most significant dimension into account.
-
dimensionPosition
final int[] dimensionPosition
It stores the initial position of dimensions in the ordering array. It does not reflect shift due to most significant dimension.
-
actualDimensionOrder
final int[] actualDimensionOrder
It stores the position of dimensions in the ordering starting from most significant dimension to the least significant one.
-
-
Constructor Detail
-
PredefinedOrder
public PredefinedOrder(int[] ordering, int mostSignificantDimension)It specifies the comparison of k-dimensional point comparator based on the dimension ordering and the most significant dimension.- Parameters:
ordering- how dimensions are stored within each compared point.mostSignificantDimension- the most significant dimension
-
-
Method Detail
-
checkInvariants
public java.lang.String checkInvariants()
It checks the invariants for this order.- Returns:
- it returns string describing the violated invariant, or null if everything is in order.
-
recomputeActualDimensionOrder
private void recomputeActualDimensionOrder()
-
compare
public int compare(int[] p1, int[] p2)Description copied from interface:LexicographicalOrderIt compares two k-dimensional points.- Specified by:
comparein interfaceLexicographicalOrder- Parameters:
p1- point 1p2- point 2- Returns:
- comparison result: a negative value if p1 is smaller than p2, 0 if p1 is equal to p2, and a positive value if p1 is larger than p2.
-
dimensionAt
public int dimensionAt(int precedenceLevel)
Description copied from interface:LexicographicalOrderIt provides the dimension corresponding to the given precedence level- Specified by:
dimensionAtin interfaceLexicographicalOrder- Parameters:
precedenceLevel- the given precedence level- Returns:
- an integer value of the dimension.
-
precedenceOf
public int precedenceOf(int dimension)
Description copied from interface:LexicographicalOrderIt provides the precedence level of the given dimension. 0 is the most significant.- Specified by:
precedenceOfin interfaceLexicographicalOrder- Parameters:
dimension- the given dimension- Returns:
- integer value of the precedence level.
-
setMostSignificantDimension
public void setMostSignificantDimension(int d)
Description copied from interface:LexicographicalOrderIt shifts the lexicographical order so that the most significant dimension is set to d.- Specified by:
setMostSignificantDimensionin interfaceLexicographicalOrder- Parameters:
d- the dimension to be considered most significant
-
getMostSignificantDimension
public int getMostSignificantDimension()
Description copied from interface:LexicographicalOrderThis is equivalent to the call precedenceOf(0).- Specified by:
getMostSignificantDimensionin interfaceLexicographicalOrder- Returns:
- the most significant dimension
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
masterOrdering
public int[] masterOrdering()
Description copied from interface:LexicographicalOrderIt returns the ordering of dimensions used when no shift is applied (i.e. when the most significant dimension is not changed)- Specified by:
masterOrderingin interfaceLexicographicalOrder- Returns:
- the ordering of dimensions without a shift.
-
-