public class ObstacleObjectFrame extends InternalConstraint
This version of the ObstacleObject internal constraint allows the use of multiple d-boxes per shape.
TODO, description explaining how it works, what is it good for, etc...
| Modifier and Type | Field and Description |
|---|---|
LinkedList<DBox> |
frame
the frame is the area that is ensured to be covered by the obstacle,
given the domain of its origin variables
|
| Constructor and Description |
|---|
ObstacleObjectFrame(Geost geost,
GeostObject obstacle,
int[] selectedDimensions)
It creates an internal constraint to enforce non-overlapping relation with this
obstacle object.
|
| Modifier and Type | Method and Description |
|---|---|
int[] |
absInfeasible(Geost.SweepDirection minlex)
It provides the largest or smallest point contained in the forbidden area represented by this
constraint.
|
int |
cardInfeasible()
It provides an approximation of the number of infeasible points enforced by this constraint only.
|
String |
checkInvariants()
It checks that this constraint has consistent data structures.
|
Collection<Var> |
definingVariables()
It provides a collection, possibly empty, of variables which define this constraint.
|
DBox |
isFeasible(Geost.SweepDirection min,
LexicographicalOrder order,
GeostObject o,
int currentShape,
int[] c)
It determines whether the given point is a feasible origin of object o, considering
this constraint only.
|
boolean |
isSingleUse()
In some cases, a constraint is used only once per sweep direction on a path
from root to leaf in the search tree.
|
boolean |
isStatic()
It provides information about the constraint future.
|
protected boolean |
timeOnlyCheck(Geost.SweepDirection min,
LexicographicalOrder order,
GeostObject o,
int currentShape,
int[] c) |
String |
toString() |
void |
updateFrame()
updates the frame given the current values of the object coordinate variables.
|
public LinkedList<DBox> frame
public ObstacleObjectFrame(Geost geost, GeostObject obstacle, int[] selectedDimensions)
geost - the geost constraint which this constraint is part of.obstacle - the obstacle object responsible for this internal constraint.selectedDimensions - the dimensions on which the constraint is appliedpublic String checkInvariants()
public void updateFrame()
public int[] absInfeasible(Geost.SweepDirection minlex)
InternalConstraintTODO, is this function potentially still useful? If not remove, if yes then adapt the description about event point series. What is it used now for? I will keep it as it may be used later on, but for sure the code implementing those functions is not tested much or requires some cleaning.
This allows to build an event point series that stays consistent whatever the lexical order is, and whatever the object to place is (some shifting is applied to take the object's shape into account)
The dimension of the point returned is k+1, where k is the object dimension. The last dimension is time.
absInfeasible in class InternalConstraintminlex - defines whether the maximal or minimal point should be returnedpublic int cardInfeasible()
InternalConstraintThis information is used as a heuristic in the sweeping algorithm to decide which constraint to use, so that the constraints that cover the largest space are used first.
cardInfeasible in class InternalConstraintpublic Collection<Var> definingVariables()
InternalConstraintdefiningVariables in class InternalConstraintprotected boolean timeOnlyCheck(Geost.SweepDirection min, LexicographicalOrder order, GeostObject o, int currentShape, int[] c)
public DBox isFeasible(Geost.SweepDirection min, LexicographicalOrder order, GeostObject o, int currentShape, int[] c)
InternalConstraintThe boundaries of the forbidden area must have the following properties: the lower extremum has to be infeasible, but the upper extremum has to be feasible (with respect to this constraint only).
The dimension of the DBox returned is k+1, where k is the object dimension. The last dimension is time.
isFeasible in class InternalConstraintmin - the direction of the sweeporder - the order to be usedo - the object the constraint is applied tocurrentShape - the shape id that is currently considered for oc - the current position of the sweep.public boolean isStatic()
InternalConstraintTODO the description above suggests that it should be called isDynamic as it returns false if the constraint outboxes stay the same.
(not taking placed object into account; i.e. absInfeasible will always return the same points)
isStatic in class InternalConstraintpublic boolean isSingleUse()
InternalConstraintTODO, what is the example of such constraint?
Use this function to provide the information to Geost.
isSingleUse in class InternalConstraintCopyright © 2022. All rights reserved.