Package com.artelys.kalis
Class KLinearRelaxation
- java.lang.Object
-
- com.artelys.kalis.KLinearRelaxation
-
public class KLinearRelaxation extends java.lang.ObjectThis class represents a linear relaxation of a domain.
A linear relaxation consists of the following.
- A set of involved variables
- A type for each variable (either continuous or global). The type of a variable in
a relaxation need not be the same as its "intrinsic" type. For instance, a KIntVar
(which is a global variable) can be set continuous in a relaxation. On the contrary,
making a KFloatVar global in a relaxation is forbidden since it would not make much sense
to "relax" the domain of a variable by restricting it.
- A set of linear relations (KLinRel) representing linear (in)equalities with these variables
- Since:
- 2016.1
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanswigCMemOwn
-
Constructor Summary
Constructors Modifier Constructor Description protectedKLinearRelaxation(long cPtr, boolean cMemoryOwn)KLinearRelaxation(KLinearRelaxation arg0)Copy constructor.KLinearRelaxation(KProblem problem)Constructor with a problem.KLinearRelaxation(KProblem problem, java.lang.String name)Constructor with a problem and a name.KLinearRelaxation(com.artelys.kalis.SWIGTYPE_p_KLinearRelaxation_I arg0)KLinearRelaxation(com.artelys.kalis.SWIGTYPE_p_std__vectorT_KLinearRelaxation_p_t instances)Constructor with a list of instances.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(KLinearRelaxation relax)Merge two linear relaxations.
voidadd(KLinRel klr)Add a KLinRel (linear relation).
This method adds a linear (in)equality (and all variables involved) to the relaxation object.voidaddSOS(KLinRel sos)Add a SOS of type 1 or 2.
SOS are stored as KLinRel, the constant of the KLinRel being either 1 or 2 depending on the type of the SOS.
A SOS1 (special ordered set of type 1) is a set of variables with the constraint that
at most one variable in the set may be non-zero.static KLinearRelaxationbigM(KLinearRelaxation arg0, KLinearRelaxation arg1)Big-M method.
Get a new linear relaxation which is the big-M disjunction of the two arguments.
Note: deleting it is user's responsibility.static KLinearRelaxationbigM(com.artelys.kalis.SWIGTYPE_p_p_KLinearRelaxation arg0, int numberOfRelax)Big-M method with any number of arguments.
Get a new linear relaxation which is the big-M disjunction of the arguments.
Note: deleting it is user's responsibility.static KLinearRelaxationconvexHull(KLinearRelaxation arg0, KLinearRelaxation arg1)Convex hull method.
Get a new linear relaxation which is the convex hull of the two arguments.
Note: deleting it is user's responsibility.static KLinearRelaxationconvexHull(com.artelys.kalis.SWIGTYPE_p_p_KLinearRelaxation arg0, int numberOfRelax)Convex hull method, with any number of arguments.
Get a new linear relaxation which is the convex hull of the arguments.
Note: deleting it is user's responsibility.voiddelete()protected voidfinalize()protected static longgetCPtr(KLinearRelaxation obj)com.artelys.kalis.SWIGTYPE_p_KLinearRelaxation_IgetInternalPtr()longgetRank(KAuxVar var)Get the rank of a KAuxVar.
Note that method close() must be called first, otherwise ranks are undefined.longgetRank(KNumVar var)Get the rank of a KNumVar variable.
Note that method close() must be called first, otherwise ranks are undefined.voidinsertVar(KIntVar var)Insert a KIntVar variable.
Inserting a variable "manually" to the list of variables involved in the relaxation is not necessary
in most cases, since variables are added automatically when a constraint in which they are involved
is added to the Relaxation.
Note: if the KIntVar has indicators, they are automatically inserted in the relaxation as well.booleanisExact()Check whether the relaxation is exact or not.
A relaxation is said to be "exact" when it represents exactly the underlying set of constraints
(constraints that were relaxed), so it is not an intrinsic property.voidisExact(boolean arg0)Setter for isRelaxationExact.
Same remark as for the previous getter.voidprint()Print method.
This methods prints all variables, KLinRel and SOS involved in the relaxation to the default outputvoidprint(com.artelys.kalis.SWIGTYPE_p_void ctx, com.artelys.kalis.SWIGTYPE_p_f_p_void_p_q_const__char__int pfp)voidprintStat()Print statistics about the relaxation.
Print only the number of variables (with their type), KLinRel and SOS involved.voidprintStats(com.artelys.kalis.SWIGTYPE_p_void ctx, com.artelys.kalis.SWIGTYPE_p_f_p_void_p_q_const__char__int pfp)voidprintViolated(KHybridSolution arg0)Print KLinRel that are violated by an hybrid solution (if any).
Useful to check whether a solution contained in a KHybridSolution object is valid.voidsetGlobal(KAuxVar var, boolean global)voidsetGlobal(KIntVar var, boolean global)set or unset a KIntVar globalvoidsetName(java.lang.String arg0)set object name
-
-
-
Constructor Detail
-
KLinearRelaxation
protected KLinearRelaxation(long cPtr, boolean cMemoryOwn)
-
KLinearRelaxation
public KLinearRelaxation(com.artelys.kalis.SWIGTYPE_p_std__vectorT_KLinearRelaxation_p_t instances)
Constructor with a list of instances.
-
KLinearRelaxation
public KLinearRelaxation(KProblem problem)
Constructor with a problem.
-
KLinearRelaxation
public KLinearRelaxation(KProblem problem, java.lang.String name)
Constructor with a problem and a name.
-
KLinearRelaxation
public KLinearRelaxation(KLinearRelaxation arg0)
Copy constructor.
-
KLinearRelaxation
public KLinearRelaxation(com.artelys.kalis.SWIGTYPE_p_KLinearRelaxation_I arg0)
-
-
Method Detail
-
getCPtr
protected static long getCPtr(KLinearRelaxation obj)
-
finalize
protected void finalize()
- Overrides:
finalizein classjava.lang.Object
-
delete
public void delete()
-
add
public void add(KLinRel klr)
Add a KLinRel (linear relation).
This method adds a linear (in)equality (and all variables involved) to the relaxation object.
-
add
public void add(KLinearRelaxation relax)
Merge two linear relaxations.
- Parameters:
relax- the linear relaxation to add to the current object
-
addSOS
public void addSOS(KLinRel sos)
Add a SOS of type 1 or 2.
SOS are stored as KLinRel, the constant of the KLinRel being either 1 or 2 depending on the type of the SOS.
A SOS1 (special ordered set of type 1) is a set of variables with the constraint that
at most one variable in the set may be non-zero. Note that the comparator and the coefficients
of the KLinRel plays no role.
A SOS2 (special ordered set of type 2) is a set of variables with the constraint that
at most two variables in the set may be non-zero, and if there are two non-zeros, they must be adjacent.
Adjacency is defined by the weights (coefficients in the KLinRel), which must be unique. Note that the
comparator of the KLinRel plays no role.
- Parameters:
sos- the sos to add
-
insertVar
public void insertVar(KIntVar var)
Insert a KIntVar variable.
Inserting a variable "manually" to the list of variables involved in the relaxation is not necessary
in most cases, since variables are added automatically when a constraint in which they are involved
is added to the Relaxation.
Note: if the KIntVar has indicators, they are automatically inserted in the relaxation as well.- Parameters:
var- variable to add (with its indicators, if any)
-
getRank
public long getRank(KNumVar var)
Get the rank of a KNumVar variable.
Note that method close() must be called first, otherwise ranks are undefined.- Parameters:
var- variable to rank
-
getRank
public long getRank(KAuxVar var)
Get the rank of a KAuxVar.
Note that method close() must be called first, otherwise ranks are undefined.- Parameters:
var- variable to rank
-
isExact
public boolean isExact()
Check whether the relaxation is exact or not.
A relaxation is said to be "exact" when it represents exactly the underlying set of constraints
(constraints that were relaxed), so it is not an intrinsic property. This flag is meant to inform the
user, not the solver ! (it is not used by the solver in any way).
-
isExact
public void isExact(boolean arg0)
Setter for isRelaxationExact.
Same remark as for the previous getter.
-
setName
public void setName(java.lang.String arg0)
set object name
-
print
public void print()
Print method.
This methods prints all variables, KLinRel and SOS involved in the relaxation to the default output
-
print
public void print(com.artelys.kalis.SWIGTYPE_p_void ctx, com.artelys.kalis.SWIGTYPE_p_f_p_void_p_q_const__char__int pfp)
-
printStats
public void printStats(com.artelys.kalis.SWIGTYPE_p_void ctx, com.artelys.kalis.SWIGTYPE_p_f_p_void_p_q_const__char__int pfp)
-
setGlobal
public void setGlobal(KIntVar var, boolean global)
set or unset a KIntVar global
-
setGlobal
public void setGlobal(KAuxVar var, boolean global)
-
printStat
public void printStat()
Print statistics about the relaxation.
Print only the number of variables (with their type), KLinRel and SOS involved.
-
convexHull
public static KLinearRelaxation convexHull(KLinearRelaxation arg0, KLinearRelaxation arg1)
Convex hull method.
Get a new linear relaxation which is the convex hull of the two arguments.
Note: deleting it is user's responsibility.
-
convexHull
public static KLinearRelaxation convexHull(com.artelys.kalis.SWIGTYPE_p_p_KLinearRelaxation arg0, int numberOfRelax)
Convex hull method, with any number of arguments.
Get a new linear relaxation which is the convex hull of the arguments.
Note: deleting it is user's responsibility.
-
bigM
public static KLinearRelaxation bigM(KLinearRelaxation arg0, KLinearRelaxation arg1)
Big-M method.
Get a new linear relaxation which is the big-M disjunction of the two arguments.
Note: deleting it is user's responsibility.
-
bigM
public static KLinearRelaxation bigM(com.artelys.kalis.SWIGTYPE_p_p_KLinearRelaxation arg0, int numberOfRelax)
Big-M method with any number of arguments.
Get a new linear relaxation which is the big-M disjunction of the arguments.
Note: deleting it is user's responsibility.
-
getInternalPtr
public com.artelys.kalis.SWIGTYPE_p_KLinearRelaxation_I getInternalPtr()
-
printViolated
public void printViolated(KHybridSolution arg0)
Print KLinRel that are violated by an hybrid solution (if any).
Useful to check whether a solution contained in a KHybridSolution object is valid.
-
-