Diversity and Fitness Assignment Method added
git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1292 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
c52c08172f
commit
dd9b352c50
1 changed files with 30 additions and 2 deletions
|
|
@ -57,6 +57,7 @@
|
||||||
#include <diversity/moeoDummyDiversityAssignment.h>
|
#include <diversity/moeoDummyDiversityAssignment.h>
|
||||||
#include <diversity/moeoFrontByFrontCrowdingDiversityAssignment.h>
|
#include <diversity/moeoFrontByFrontCrowdingDiversityAssignment.h>
|
||||||
#include <diversity/moeoFrontByFrontSharingDiversityAssignment.h>
|
#include <diversity/moeoFrontByFrontSharingDiversityAssignment.h>
|
||||||
|
#include <diversity/moeoNearestNeighborDiversityAssignment.h>
|
||||||
#include <fitness/moeoDummyFitnessAssignment.h>
|
#include <fitness/moeoDummyFitnessAssignment.h>
|
||||||
#include <fitness/moeoExpBinaryIndicatorBasedFitnessAssignment.h>
|
#include <fitness/moeoExpBinaryIndicatorBasedFitnessAssignment.h>
|
||||||
#include <fitness/moeoDominanceDepthFitnessAssignment.h>
|
#include <fitness/moeoDominanceDepthFitnessAssignment.h>
|
||||||
|
|
@ -94,7 +95,7 @@ moeoEA < MOEOT > & do_make_ea_moeo(eoParser & _parser, eoState & _state, eoEvalF
|
||||||
|
|
||||||
/* the fitness assignment strategy */
|
/* the fitness assignment strategy */
|
||||||
std::string & fitnessParam = _parser.createParam(std::string("DomDepth"), "fitness",
|
std::string & fitnessParam = _parser.createParam(std::string("DomDepth"), "fitness",
|
||||||
"Fitness assignment scheme: Dummy, DomDepth or IndicatorBased", 'F',
|
"Fitness assignment scheme: Dummy, DomDepth, DomCount, DomRank, DomCountRanking or IndicatorBased", 'F',
|
||||||
"Evolution Engine").value();
|
"Evolution Engine").value();
|
||||||
std::string & indicatorParam = _parser.createParam(std::string("Epsilon"), "indicator",
|
std::string & indicatorParam = _parser.createParam(std::string("Epsilon"), "indicator",
|
||||||
"Binary indicator for IndicatorBased: Epsilon, Hypervolume", 'i',
|
"Binary indicator for IndicatorBased: Epsilon, Hypervolume", 'i',
|
||||||
|
|
@ -112,6 +113,18 @@ moeoEA < MOEOT > & do_make_ea_moeo(eoParser & _parser, eoState & _state, eoEvalF
|
||||||
{
|
{
|
||||||
fitnessAssignment = new moeoDominanceDepthFitnessAssignment < MOEOT> ();
|
fitnessAssignment = new moeoDominanceDepthFitnessAssignment < MOEOT> ();
|
||||||
}
|
}
|
||||||
|
else if (fitnessParam == std::string("DomCount"))
|
||||||
|
{
|
||||||
|
fitnessAssignment = new moeoDominanceCountFitnessAssignment < MOEOT> ();
|
||||||
|
}
|
||||||
|
else if (fitnessParam == std::string("DomRank"))
|
||||||
|
{
|
||||||
|
fitnessAssignment = new moeoDominanceRankFitnessAssignment < MOEOT> ();
|
||||||
|
}
|
||||||
|
else if (fitnessParam == std::string("DomCountRanking"))
|
||||||
|
{
|
||||||
|
fitnessAssignment = new moeoDominanceCountRankingFitnessAssignment < MOEOT> ();
|
||||||
|
}
|
||||||
else if (fitnessParam == std::string("IndicatorBased"))
|
else if (fitnessParam == std::string("IndicatorBased"))
|
||||||
{
|
{
|
||||||
// metric
|
// metric
|
||||||
|
|
@ -141,7 +154,7 @@ moeoEA < MOEOT > & do_make_ea_moeo(eoParser & _parser, eoState & _state, eoEvalF
|
||||||
|
|
||||||
/* the diversity assignment strategy */
|
/* the diversity assignment strategy */
|
||||||
eoValueParam<eoParamParamType> & diversityParam = _parser.createParam(eoParamParamType("Dummy"), "diversity",
|
eoValueParam<eoParamParamType> & diversityParam = _parser.createParam(eoParamParamType("Dummy"), "diversity",
|
||||||
"Diversity assignment scheme: Dummy, Sharing(nicheSize) or Crowding", 'D', "Evolution Engine");
|
"Diversity assignment scheme: Dummy, Sharing(nicheSize), NearestNeighbor(k) or Crowding", 'D', "Evolution Engine");
|
||||||
eoParamParamType & diversityParamValue = diversityParam.value();
|
eoParamParamType & diversityParamValue = diversityParam.value();
|
||||||
moeoDiversityAssignment < MOEOT > * diversityAssignment;
|
moeoDiversityAssignment < MOEOT > * diversityAssignment;
|
||||||
if (diversityParamValue.first == std::string("Dummy"))
|
if (diversityParamValue.first == std::string("Dummy"))
|
||||||
|
|
@ -163,6 +176,21 @@ moeoEA < MOEOT > & do_make_ea_moeo(eoParser & _parser, eoState & _state, eoEvalF
|
||||||
}
|
}
|
||||||
diversityAssignment = new moeoFrontByFrontSharingDiversityAssignment < MOEOT> (nicheSize);
|
diversityAssignment = new moeoFrontByFrontSharingDiversityAssignment < MOEOT> (nicheSize);
|
||||||
}
|
}
|
||||||
|
else if (diversityParamValue.first == std::string("NearestNeighbor"))
|
||||||
|
{
|
||||||
|
unsigned int k;
|
||||||
|
if (!diversityParamValue.second.size()) // no parameter added
|
||||||
|
{
|
||||||
|
std::cerr << "WARNING, no k-th distance for Sharing, using 1" << std::endl;
|
||||||
|
k = 1;
|
||||||
|
diversityParamValue.second.push_back(std::string("1"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
k = atoi(diversityParamValue.second[0].c_str());
|
||||||
|
}
|
||||||
|
diversityAssignment = new moeoNearestNeighborDiversityAssignment < MOEOT> (k);
|
||||||
|
}
|
||||||
else if (diversityParamValue.first == std::string("Crowding"))
|
else if (diversityParamValue.first == std::string("Crowding"))
|
||||||
{
|
{
|
||||||
diversityAssignment = new moeoFrontByFrontCrowdingDiversityAssignment < MOEOT> ();
|
diversityAssignment = new moeoFrontByFrontCrowdingDiversityAssignment < MOEOT> ();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue