[yul-phaser] main: Add GenerationalElitistWithExclusivePools as an option and make it the default

This commit is contained in:
cameel 2020-02-05 17:01:38 +01:00 committed by Kamil Śliwak
parent 0c61f6d18f
commit a3e97108c5

View File

@ -41,7 +41,8 @@ namespace po = boost::program_options;
enum class Algorithm enum class Algorithm
{ {
Random Random,
GEWEP
}; };
istream& operator>>(istream& inputStream, Algorithm& algorithm) istream& operator>>(istream& inputStream, Algorithm& algorithm)
@ -51,6 +52,8 @@ istream& operator>>(istream& inputStream, Algorithm& algorithm)
if (value == "random") if (value == "random")
algorithm = Algorithm::Random; algorithm = Algorithm::Random;
else if (value == "GEWEP")
algorithm = Algorithm::GEWEP;
else else
inputStream.setstate(ios_base::failbit); inputStream.setstate(ios_base::failbit);
@ -61,6 +64,8 @@ ostream& operator<<(ostream& outputStream, Algorithm algorithm)
{ {
if (algorithm == Algorithm::Random) if (algorithm == Algorithm::Random)
outputStream << "random"; outputStream << "random";
else if (algorithm == Algorithm::GEWEP)
outputStream << "GEWEP";
else else
outputStream.setstate(ios_base::failbit); outputStream.setstate(ios_base::failbit);
@ -126,6 +131,23 @@ void runAlgorithm(string const& _sourcePath, Algorithm _algorithm)
} }
).run(); ).run();
break;
}
case Algorithm::GEWEP:
{
GenerationalElitistWithExclusivePools(
population,
cout,
{
/* mutationPoolSize = */ 0.25,
/* crossoverPoolSize = */ 0.25,
/* randomisationChance = */ 0.9,
/* deletionVsAdditionChance = */ 0.5,
/* percentGenesToRandomise = */ 0.1,
/* percentGenesToAddOrDelete = */ 0.1,
}
).run();
break; break;
} }
} }
@ -153,7 +175,7 @@ CommandLineParsingResult parseCommandLine(int argc, char** argv)
("seed", po::value<uint32_t>(), "Seed for the random number generator") ("seed", po::value<uint32_t>(), "Seed for the random number generator")
( (
"algorithm", "algorithm",
po::value<Algorithm>()->default_value(Algorithm::Random), po::value<Algorithm>()->default_value(Algorithm::GEWEP),
"Algorithm" "Algorithm"
) )
; ;