Package org.opt4j.core.domination
Class GoalAttainmentDomination
- java.lang.Object
-
- org.opt4j.core.domination.GoalAttainmentDomination
-
- All Implemented Interfaces:
DominationStrategy
public class GoalAttainmentDomination extends Object implements DominationStrategy
This class implementsDominationStrategy
. The dominance relation is based on the goal attainment approach described in Carlos M. Fonseca and Peter J. Fleming: Genetic Algorithms for Multiobjective Optimization: Formulation, Discussion and Generalization. In: Genetic Algorithms: Proceedings of the Fifth International Conference, pp 416-423. Morgan Kaufmann, 1993.
The approach is extended in C.M. Fonseca and P.J. Fleming: Multiobjective optimization and multiple constraint handling with evolutionary algorithms. I. A unified formulation. Systems, Man and Cybernetics, Part A: Systems and Humans, IEEE Transactions on, 28(1):26-37, 1998. Here, it is shown that the relation is transitive.
The strategy is based onParetoDomination
and uses its array based methodParetoDomination.dominates(double[], double[])
.
It is essential to provide a goal vector (reference point) by a number ofSatisfactionConstraints
onObjective
s! If no satisfaction for anObjective o
exists, the constraint is consequentlyo < negative infinity
oro > positive infinity
". Semantically, a satisfaction constraintx < a
will mean, that the attributex
satisfies the goal, if its valuev(x)
is less thana
.- See Also:
DominationStrategy
,SatisfactionConstraint
,ParetoDomination
-
-
Field Summary
Fields Modifier and Type Field Description protected ParetoDomination
paretoDomination
-
Constructor Summary
Constructors Constructor Description GoalAttainmentDomination(ParetoDomination paretoDomination)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
dominates(Objectives o1, Objectives o2)
Checks twoObjectives
for domination.protected List<Constraint>
getAllElibleConstraints(Objectives o)
protected Objective
getObjective(Constraint constraint)
protected boolean
isEligibleConstraint(Constraint constraint)
protected double[]
listToArray(List<Double> list)
boolean
weaklyDominates(Objectives o1, Objectives o2)
Checks twoObjectives
for weak domination.
-
-
-
Field Detail
-
paretoDomination
protected ParetoDomination paretoDomination
-
-
Constructor Detail
-
GoalAttainmentDomination
@Inject public GoalAttainmentDomination(ParetoDomination paretoDomination)
-
-
Method Detail
-
dominates
public boolean dominates(Objectives o1, Objectives o2)
Checks twoObjectives
for domination. The dominance relation is Goal-Attainment-Domination.
The basic idea is to give a higher priority to objectives in which the goal is not fulfilled. Thus, when deciding whether a solution x is preferable to a solution y or not, first, only the objectives in which solution x does not satisfy the goal are considered, and x is preferred to y if it dominates y on these objectives. If x is equal to y in all these objectives, or if x satisfies the goal in all objectives, x is preferred over y either if y does not fulfill some of the objectives fulfilled by x, or if x dominates y on the objectives fulfilled by x. If noSatisfactionConstraint
s are present, this method just passes the parameters on to its internal strategy for Pareto Domination.- Specified by:
dominates
in interfaceDominationStrategy
- Parameters:
o1
- the objectives to checko2
- the objectives to compare with- Returns:
true
, ifo1
dominateso2
false
, otherwise
-
getAllElibleConstraints
protected List<Constraint> getAllElibleConstraints(Objectives o)
-
isEligibleConstraint
protected boolean isEligibleConstraint(Constraint constraint)
-
getObjective
protected Objective getObjective(Constraint constraint)
-
weaklyDominates
public boolean weaklyDominates(Objectives o1, Objectives o2)
Checks twoObjectives
for weak domination. The dominance relation is Goal-Attainment-Domination.- Specified by:
weaklyDominates
in interfaceDominationStrategy
- Parameters:
o1
- the objectives to checko2
- the objectives to compare with- Returns:
true
, ifo1
weakly dominateso2
false
, otherwise
-
-