[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
{
Random
Random,
GEWEP
};
istream& operator>>(istream& inputStream, Algorithm& algorithm)
@ -51,6 +52,8 @@ istream& operator>>(istream& inputStream, Algorithm& algorithm)
if (value == "random")
algorithm = Algorithm::Random;
else if (value == "GEWEP")
algorithm = Algorithm::GEWEP;
else
inputStream.setstate(ios_base::failbit);
@ -61,6 +64,8 @@ ostream& operator<<(ostream& outputStream, Algorithm algorithm)
{
if (algorithm == Algorithm::Random)
outputStream << "random";
else if (algorithm == Algorithm::GEWEP)
outputStream << "GEWEP";
else
outputStream.setstate(ios_base::failbit);
@ -126,6 +131,23 @@ void runAlgorithm(string const& _sourcePath, Algorithm _algorithm)
}
).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;
}
}
@ -153,7 +175,7 @@ CommandLineParsingResult parseCommandLine(int argc, char** argv)
("seed", po::value<uint32_t>(), "Seed for the random number generator")
(
"algorithm",
po::value<Algorithm>()->default_value(Algorithm::Random),
po::value<Algorithm>()->default_value(Algorithm::GEWEP),
"Algorithm"
)
;