Package net.sf.tweety.math.opt.problem
Class OptimizationProblem
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractSet<E>
-
- java.util.HashSet<Statement>
-
- net.sf.tweety.math.opt.problem.ConstraintSatisfactionProblem
-
- net.sf.tweety.math.opt.problem.OptimizationProblem
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,java.lang.Iterable<Statement>
,java.util.Collection<Statement>
,java.util.Set<Statement>
public class OptimizationProblem extends ConstraintSatisfactionProblem
This class models a general optimization problem.- Author:
- Matthias Thimm
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description OptimizationProblem()
Creates an empty optimization problem.OptimizationProblem(int type)
Creates an empty optimization problem of the given type.
-
Method Summary
Modifier and Type Method Description OptimizationProblem
clone()
void
collapseAssociativeOperations()
This method collapses all associative operations appearing in the target function and the constraints, e.g.java.lang.String
convertToCplexLpFormat()
Converts the this optimization problem into a string in the commonly used CPLEX LP-format for mixed integer linear programming.java.lang.String
convertToLpFormat()
Converts the this optimization problem into a string in the commonly used LP-format for mixed integer linear programming.java.util.Set<Minimum>
getMinimums()
Returns all minimums appearing in this problem.Term
getTargetFunction()
Returns the target function of this problem.int
getType()
Returns the type of this problem.java.util.Set<Variable>
getVariables()
Returns all variables of this problem.boolean
isLinear()
Checks whether every constraint of this problem is linear.boolean
isMinimumFree()
Checks whether this problem uses no minimum function.boolean
isTargetLinear()
Checks whether the target function is linear.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"void
resolveMaximums()
Resolves all occurrences of maximums by substituting a maximum "max{a,b}" by "0.5 a + 0.5 b + abs(a-b)".void
resolveMinimums()
Resolves all occurrences of minimums by substituting a minimum "min{a,b}" by "0.5 a + 0.5 b - abs(a-b)".void
setPenalty(int penalty)
Sets the penalty for violated minimum.void
setTargetFunction(Term targetFunction)
Sets the target function of this problem.void
setType(int type)
Sets the type of this problem, either OptimizationProblem.MINIMIZE or OptimizationProblem.MAXIMIZE.java.lang.String
toString()
-
Methods inherited from class net.sf.tweety.math.opt.problem.ConstraintSatisfactionProblem
isInteger, toNormalizedForm
-
Methods inherited from class java.util.HashSet
add, clear, contains, isEmpty, iterator, remove, size, spliterator
-
-
-
-
Field Detail
-
EPSILON
public static final double EPSILON
Some value to represent a very small number- See Also:
- Constant Field Values
-
MINIMIZE
public static final int MINIMIZE
Static constant for the type "minimization"- See Also:
- Constant Field Values
-
MAXIMIZE
public static final int MAXIMIZE
Static constant for the type "maximization"- See Also:
- Constant Field Values
-
-
Constructor Detail
-
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 Detail
-
setTargetFunction
public void setTargetFunction(Term targetFunction)
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:ConstraintSatisfactionProblem
Checks whether every constraint of this problem is linear.- Overrides:
isLinear
in classConstraintSatisfactionProblem
- Returns:
- "true" if every constraint of this problem is linear.
-
isMinimumFree
public boolean isMinimumFree()
Description copied from class:ConstraintSatisfactionProblem
Checks whether this problem uses no minimum function.- Overrides:
isMinimumFree
in classConstraintSatisfactionProblem
- Returns:
- "true" if this problem uses no minimum function.
-
resolveMinimums
public void resolveMinimums()
Description copied from class:ConstraintSatisfactionProblem
Resolves all occurrences of minimums by substituting a minimum "min{a,b}" by "0.5 a + 0.5 b - abs(a-b)".- Overrides:
resolveMinimums
in classConstraintSatisfactionProblem
-
resolveMaximums
public void resolveMaximums()
Description copied from class:ConstraintSatisfactionProblem
Resolves all occurrences of maximums by substituting a maximum "max{a,b}" by "0.5 a + 0.5 b + abs(a-b)".- Overrides:
resolveMaximums
in 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
public java.lang.String 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
public java.lang.String 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
public java.util.Set<Variable> getVariables()
Description copied from class:ConstraintSatisfactionProblem
Returns all variables of this problem.- Overrides:
getVariables
in classConstraintSatisfactionProblem
- Returns:
- all variables of this problem.
-
getMinimums
public java.util.Set<Minimum> getMinimums()
Description copied from class:ConstraintSatisfactionProblem
Returns all minimums appearing in this problem.- Overrides:
getMinimums
in classConstraintSatisfactionProblem
- Returns:
- all minimums appearing in this problem.
-
collapseAssociativeOperations
public void collapseAssociativeOperations()
Description copied from class:ConstraintSatisfactionProblem
This 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:
collapseAssociativeOperations
in 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
public Term getTargetFunction()
Returns the target function of this problem.- Returns:
- the target function of this problem.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classConstraintSatisfactionProblem
-
clone
public OptimizationProblem clone()
- Overrides:
clone
in classConstraintSatisfactionProblem
-
-