/*
* This file is part of JGAP.
*
* JGAP offers a dual license model containing the LGPL as well as the MPL.
*
* For licensing information please see the file license.txt included with JGAP
* or have a look at the top of class org.jgap.Chromosome which representatively
* includes the JGAP license policy applicable for any file delivered with JGAP.
*/
package org.jgap.distr;
import org.jgap.*;
/**
* A problem to be solved by a worker.
*
* @author Klaus Meffert
* @since 3.0
*/
public class Problem {
/** String containing the CVS revision. Read out via reflection!*/
private final static String CVS_REVISION = "$Revision: 1.3 $";
private FitnessFunction m_fitFunc;
private int m_populationSize;
private Object m_ID;
private Chromosome[] m_initialChroms;
public Problem() {
}
/**
* @param a_fitFunc the fitness function to use
* @param a_popSize the population size to use by/suggest to the worker
* @param a_initialChroms initial chromosomes to use (e.g. from previous
* evolutions), or empty
* @throws IllegalArgumentException
*
* @author Klaus Meffert
* @since 3.0
*/
public Problem(FitnessFunction a_fitFunc, int a_popSize,
Chromosome[] a_initialChroms) throws IllegalArgumentException {
if (a_fitFunc == null) {
throw new IllegalArgumentException("Fitness function must not be null!");
}
if (a_popSize <= 0) {
throw new IllegalArgumentException("Population size must be greater zero.");
}
m_fitFunc = a_fitFunc;
m_populationSize = a_popSize;
m_initialChroms = a_initialChroms;
}
/**
* @param a_ID internal ID of the problem, should be unique
*
* @author Klaus Meffert
* @since 3.0
*/
public void setID(Object a_ID) {
m_ID = a_ID;
}
/**
* @return internal ID of the problem, should be unique
*
* @author Klaus Meffert
* @since 3.0
*/
public Object getID() {
return m_ID;
}
/**
* @return population size to use
*
* @author Klaus Meffert
* @since 3.0
*/
public int getPopulationSize() {
return m_populationSize;
}
/**
* @return FitnessFunction to use
*
* @author Klaus Meffert
* @since 3.0
*/
public FitnessFunction getFitnessFunction() {
return m_fitFunc;
}
/**
* @return Chromosome[] initial chromosomes to use, may be empty
*
* @author Klaus Meffert
* @since 3.0
*/
public Chromosome[] getChromosomes() {
return m_initialChroms;
}
}