Class OptimizationProblem
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractSet<E>
java.util.HashSet<OptProbElement>
org.tweetyproject.math.opt.problem.GeneralConstraintSatisfactionProblem
org.tweetyproject.math.opt.problem.ConstraintSatisfactionProblem
org.tweetyproject.math.opt.problem.OptimizationProblem
- All Implemented Interfaces:
Serializable,Cloneable,Iterable<OptProbElement>,Collection<OptProbElement>,Set<OptProbElement>
This class models a general optimization problem.
- Author:
- Matthias Thimm
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCreates an empty optimization problem.OptimizationProblem(int type) Creates an empty optimization problem of the given type. -
Method Summary
Modifier and TypeMethodDescriptionclone()voidThis method collapses all associative operations appearing in the target function and the constraints, e.g.Converts the this optimization problem into a string in the commonly used CPLEX LP-format for mixed integer linear programming.Converts the this optimization problem into a string in the commonly used LP-format for mixed integer linear programming.Returns all minimums appearing in this problem.Returns the target function of this problem.intgetType()Returns the type of this problem.Returns all variables of this problem.booleanisLinear()Checks whether every constraint of this problem is linear.booleanChecks whether this problem uses no minimum function.booleanChecks whether the target function is linear.voidResolves all occurrences of absolute values "abs(X)" by replacing "abs(X)" by a new variable "TMPABS" adding constraints "TMPABS - X>= 0" and "TMPABS + X >= 0" (yielding "TMPABS <= abs(X)") introducing a new variable "TMPABSB" adding constraints "X+PENALTY*TMPABSB - TMPABS >= 0" and "-X-TMPABSB*PENALTY - TMPABS >= -PENALTY" (yielding "TMPABS >= abs(X)") adding constraints "TMPABSB<=1"voidResolves all occurrences of maximums by substituting a maximum "max{a,b}" by "0.5 a + 0.5 b + abs(a-b)".voidResolves all occurrences of minimums by substituting a minimum "min{a,b}" by "0.5 a + 0.5 b - abs(a-b)".voidsetPenalty(int penalty) Sets the penalty for violated minimum.voidsetTargetFunction(Term targetFunction) Sets the target function of this problem.voidsetType(int type) Sets the type of this problem, either OptimizationProblem.MINIMIZE or OptimizationProblem.MAXIMIZE.toString()Methods inherited from class org.tweetyproject.math.opt.problem.ConstraintSatisfactionProblem
isInteger, toNormalizedFormMethods inherited from class java.util.HashSet
add, clear, contains, isEmpty, iterator, remove, size, spliterator, toArray, toArrayMethods inherited from class java.util.AbstractSet
equals, hashCode, removeAllMethods inherited from class java.util.AbstractCollection
addAll, containsAll, retainAllMethods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArray
-
Field Details
-
EPSILON
public static final double EPSILONSome value to represent a very small number- See Also:
-
MINIMIZE
public static final int MINIMIZEStatic constant for the type "minimization"- See Also:
-
MAXIMIZE
public static final int MAXIMIZEStatic constant for the type "maximization"- See Also:
-
-
Constructor Details
-
OptimizationProblem
public OptimizationProblem()Creates an empty optimization problem. -
OptimizationProblem
public OptimizationProblem(int type) Creates an empty optimization problem of the given type.- Parameters:
type- the type of the problem; either OptimizationProblem.MINIMIZE or OptimizationProblem.MAXIMIZE.
-
-
Method Details
-
setTargetFunction
Sets the target function of this problem.- Parameters:
targetFunction- a term.
-
isTargetLinear
public boolean isTargetLinear()Checks whether the target function is linear.- Returns:
- "true" if the target function is linear.
-
isLinear
public boolean isLinear()Description copied from class:ConstraintSatisfactionProblemChecks whether every constraint of this problem is linear.- Overrides:
isLinearin classConstraintSatisfactionProblem- Returns:
- "true" if every constraint of this problem is linear.
-
isMinimumFree
public boolean isMinimumFree()Description copied from class:ConstraintSatisfactionProblemChecks whether this problem uses no minimum function.- Overrides:
isMinimumFreein classConstraintSatisfactionProblem- Returns:
- "true" if this problem uses no minimum function.
-
resolveMinimums
public void resolveMinimums()Description copied from class:ConstraintSatisfactionProblemResolves all occurrences of minimums by substituting a minimum "min{a,b}" by "0.5 a + 0.5 b - abs(a-b)".- Overrides:
resolveMinimumsin classConstraintSatisfactionProblem
-
resolveMaximums
public void resolveMaximums()Description copied from class:ConstraintSatisfactionProblemResolves all occurrences of maximums by substituting a maximum "max{a,b}" by "0.5 a + 0.5 b + abs(a-b)".- Overrides:
resolveMaximumsin classConstraintSatisfactionProblem
-
resolveAbsoluteValues
public void resolveAbsoluteValues()Resolves all occurrences of absolute values "abs(X)" by- replacing "abs(X)" by a new variable "TMPABS"
- adding constraints "TMPABS - X>= 0" and "TMPABS + X >= 0" (yielding "TMPABS <= abs(X)")
- introducing a new variable "TMPABSB"
- adding constraints "X+PENALTY*TMPABSB - TMPABS >= 0" and "-X-TMPABSB*PENALTY - TMPABS >= -PENALTY" (yielding "TMPABS >= abs(X)")
- adding constraints "TMPABSB<=1"
-
convertToLpFormat
Converts the this optimization problem into a string in the commonly used LP-format for mixed integer linear programming.- Returns:
- A string representing this problem in LP-format
-
convertToCplexLpFormat
Converts the this optimization problem into a string in the commonly used CPLEX LP-format for mixed integer linear programming.- Returns:
- A string representing this problem in CPLEX LP-format
-
getVariables
Description copied from class:ConstraintSatisfactionProblemReturns all variables of this problem.- Overrides:
getVariablesin classConstraintSatisfactionProblem- Returns:
- all variables of this problem.
-
getMinimums
Description copied from class:ConstraintSatisfactionProblemReturns all minimums appearing in this problem.- Overrides:
getMinimumsin classConstraintSatisfactionProblem- Returns:
- all minimums appearing in this problem.
-
collapseAssociativeOperations
public void collapseAssociativeOperations()Description copied from class:ConstraintSatisfactionProblemThis method collapses all associative operations appearing in the target function and the constraints, e.g. every min{min{a,b},c} becomes min{a,b,c}- Overrides:
collapseAssociativeOperationsin classConstraintSatisfactionProblem
-
setType
public void setType(int type) Sets the type of this problem, either OptimizationProblem.MINIMIZE or OptimizationProblem.MAXIMIZE.- Parameters:
type- the type of this problem.
-
setPenalty
public void setPenalty(int penalty) Sets the penalty for violated minimum.- Parameters:
penalty- some penalty
-
getType
public int getType()Returns the type of this problem.- Returns:
- the type of this problem.
-
getTargetFunction
Returns the target function of this problem.- Returns:
- the target function of this problem.
-
toString
- Overrides:
toStringin classConstraintSatisfactionProblem
-
clone
- Overrides:
clonein classConstraintSatisfactionProblem
-