Class GoalAttainmentDomination

java.lang.Object
org.opt4j.core.domination.GoalAttainmentDomination
All Implemented Interfaces:
DominationStrategy

public class GoalAttainmentDomination extends Object implements DominationStrategy
This class implements DominationStrategy. 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 on ParetoDomination and uses its array based method ParetoDomination.dominates(double[], double[]).

It is essential to provide a goal vector (reference point) by a number of SatisfactionConstraints on Objectives! If no satisfaction for an Objective o exists, the constraint is consequently o < negative infinity or o > positive infinity". Semantically, a satisfaction constraint x < a will mean, that the attribute x satisfies the goal, if its value v(x) is less than a.
See Also:
  • Field Details

  • Constructor Details

    • GoalAttainmentDomination

      @Inject public GoalAttainmentDomination(ParetoDomination paretoDomination)
  • Method Details

    • dominates

      public boolean dominates(Objectives o1, Objectives o2)
      Checks two Objectives 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 no SatisfactionConstraints are present, this method just passes the parameters on to its internal strategy for Pareto Domination.
      Specified by:
      dominates in interface DominationStrategy
      Parameters:
      o1 - the objectives to check
      o2 - the objectives to compare with
      Returns:
      true, if o1 dominates o2
      false, otherwise
    • listToArray

      protected double[] listToArray(List<Double> list)
    • 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 two Objectives for weak domination. The dominance relation is Goal-Attainment-Domination.
      Specified by:
      weaklyDominates in interface DominationStrategy
      Parameters:
      o1 - the objectives to check
      o2 - the objectives to compare with
      Returns:
      true, if o1 weakly dominates o2
      false, otherwise