es.udc.gii.common.eaf.util
Class MOUtil

java.lang.Object
  extended by es.udc.gii.common.eaf.util.MOUtil

public class MOUtil
extends java.lang.Object

Utility class for genetic algorithms for multiple objectives.

Since:
1.0
Author:
Grupo Integrado de IngenierĂ­a (www.gii.udc.es)

Field Summary
static int FIND_ALL
           
static int FIRST_DOMINATES
          The first individual dominates the second one.
static int NOT_DOMINATED
          The individuals are not-dominated by each other.
static int SECOND_DOMINATES
          The second individual dominates the first one.
 
Constructor Summary
MOUtil()
          Creates a new instance of MOUtil
 
Method Summary
static int checkDominance(Individual first, Individual second)
          Checks the dominance between two individuals.
static java.util.List<Individual> findNonDominatedIndividuals(java.util.List<Individual> individuals, int number)
          Finds a number of non-dominated individuals.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FIND_ALL

public static final int FIND_ALL
See Also:
Constant Field Values

FIRST_DOMINATES

public static final int FIRST_DOMINATES
The first individual dominates the second one.

See Also:
Constant Field Values

SECOND_DOMINATES

public static final int SECOND_DOMINATES
The second individual dominates the first one.

See Also:
Constant Field Values

NOT_DOMINATED

public static final int NOT_DOMINATED
The individuals are not-dominated by each other.

See Also:
Constant Field Values
Constructor Detail

MOUtil

public MOUtil()
Creates a new instance of MOUtil

Method Detail

checkDominance

public static int checkDominance(Individual first,
                                 Individual second)
Checks the dominance between two individuals. Dominance is defined as follows: If both individuals violate constraints, the one who violates less constraints is dominant. Otherwise dominance as defined by Pareto is computed.

IMPORTANT: All objectives are considered to be minimized.

Parameters:
first - First individual.
second - Second individual.
Returns:
FIRST_DOMINATES if the first individual dominates the second one. SECOND_DOMINATES if the second individual dominates the first one. NOT_DOMINATED if the individuals are not-dominated.

findNonDominatedIndividuals

public static java.util.List<Individual> findNonDominatedIndividuals(java.util.List<Individual> individuals,
                                                                     int number)
Finds a number of non-dominated individuals. If number is FIND_ALL, this method returns all non-dominated individuals.

Parameters:
individuals - The list of individuals.
number - Number of not-dominated individuals to find. This is the maximum number of individuals returned, since it might be that there are not as many not-dominated individuals in the passed list.
Returns:
An empty list if no not-dominated individuals haven been found or a list of at most number individuals.