Class 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:
    DominationStrategy, SatisfactionConstraint, ParetoDomination
    • Constructor Detail

      • GoalAttainmentDomination

        @Inject
        public GoalAttainmentDomination​(ParetoDomination paretoDomination)
    • Method Detail

      • 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)
      • isEligibleConstraint

        protected boolean isEligibleConstraint​(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