Solution object from AbstractStatistics is now a data array.

This commit is contained in:
Marcel Kronfeld 2010-09-22 11:58:35 +00:00
parent 140b56cee2
commit 9ab769275c
3 changed files with 35 additions and 5 deletions

View File

@ -911,6 +911,30 @@ public abstract class AbstractEAIndividual implements IndividualInterface, java.
return getDefaultDataString(individual, ",");
}
/**
* This method returns the default data object of an individual containing the
* individuals solution representation.
*
* @param individual
* @return
*/
public static Object getDefaultDataObject(IndividualInterface individual) {
if (individual instanceof InterfaceDataTypeBinary) {
return ((InterfaceDataTypeBinary)individual).getBinaryData().clone();
} else if (individual instanceof InterfaceDataTypeInteger) {
return ((InterfaceDataTypeInteger)individual).getIntegerData().clone();
} else if (individual instanceof InterfaceDataTypeDouble) {
return ((InterfaceDataTypeDouble)individual).getDoubleData().clone();
} else if (individual instanceof InterfaceDataTypePermutation) {
return ((InterfaceDataTypePermutation)individual).getPermutationData()[0].clone();
} else if (individual instanceof InterfaceDataTypeProgram) {
return ((InterfaceDataTypeProgram)individual).getProgramDataWithoutUpdate().clone();
} else {
System.err.println("error in AbstractEAIndividual.getDefaultDataObject: type " + individual.getClass() + " not implemented");
return individual;
}
}
/**
* This method creates a default String representation for a number Individual interfaces
* containing the genotype.

View File

@ -265,7 +265,9 @@ implements InterfaceOptimizationProblem /*, InterfaceParamControllable*/, Serial
* @return String
*/
public Object[] getAdditionalFileStringValue(PopulationInterface pop) {
String solStr = AbstractEAIndividual.getDefaultDataString(pop.getBestIndividual());
Object solObj;
// solObj = AbstractEAIndividual.getDefaultDataString(pop.getBestIndividual());
solObj = AbstractEAIndividual.getDefaultDataObject(pop.getBestIndividual());
if (this instanceof InterfaceInterestingHistogram) {
int fitCrit=0;
SolutionHistogram hist = ((InterfaceInterestingHistogram)this).getHistogram();
@ -277,8 +279,8 @@ implements InterfaceOptimizationProblem /*, InterfaceParamControllable*/, Serial
}
Population sols = PostProcess.clusterBestUpdateHistogram((Population)maybeFiltered, this, hist, fitCrit, getDefaultAccuracy());
}
return new Object[]{solStr, hist, hist.getScore()};
} else return new Object[]{solStr};
return new Object[]{solObj, hist, hist.getScore()};
} else return new Object[]{solObj};
}
/**

View File

@ -36,6 +36,9 @@ import eva2.tools.math.Mathematics;
* list of Objects assembled in the getOutputValues method. This allows all simple data types which are
* provided by the external informer instances to be handled uniformly to the internally collected data, and
* thus they can be plotted and text-dumped in the same manner.
* Basic fields are identified by the enum GraphSelectionEnum and are available independently of additional
* informer instances.
*
* Depending on the field selection state and the informers, the list of data fields is dynamically altered,
* however changes during a multi-run are ignored, since the potential of inconsistencies is too high.
*
@ -641,12 +644,12 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
List<String> metaStrings = getOutputMetaInfo(informerList);
return metaStrings.toArray( new String[metaStrings.size()]);
}
/**
* Collect the names of data fields which are collected internally.This must correspond to the
* method {@link #getSimpleOutputValues()}.
*
* Basic fields are identified by the enum GraphSelectionEnum and are available independently of additional
* informer instances.
* @see #getSimpleOutputValues()
* @return
*/
@ -665,6 +668,7 @@ public abstract class AbstractStatistics implements InterfaceTextListener, Inter
/**
* Collect the info strings of data fields collected internally. This must correspond to
* the method {@link #getSimpleOutputValues()}.
* Basic meta info is defined by the enum GraphSelectionEnum.
*
* @see #getSimpleOutputValues()
* @return