mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
[yul-phaser] Add --chromosome-repetitions option
This commit is contained in:
parent
cfd315e17d
commit
63f13c5b18
@ -96,11 +96,19 @@ unique_ptr<GeneticAlgorithm> GeneticAlgorithmFactory::build(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FitnessMetricFactory::Options FitnessMetricFactory::Options::fromCommandLine(po::variables_map const& _arguments)
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
_arguments["chromosome-repetitions"].as<size_t>(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
unique_ptr<FitnessMetric> FitnessMetricFactory::build(
|
unique_ptr<FitnessMetric> FitnessMetricFactory::build(
|
||||||
|
Options const& _options,
|
||||||
Program _program
|
Program _program
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return make_unique<ProgramSize>(move(_program), RepetitionCount);
|
return make_unique<ProgramSize>(move(_program), _options.chromosomeRepetitions);
|
||||||
}
|
}
|
||||||
|
|
||||||
Population PopulationFactory::build(
|
Population PopulationFactory::build(
|
||||||
@ -190,6 +198,15 @@ Phaser::CommandLineDescription Phaser::buildCommandLineDescription()
|
|||||||
;
|
;
|
||||||
keywordDescription.add(algorithmDescription);
|
keywordDescription.add(algorithmDescription);
|
||||||
|
|
||||||
|
po::options_description metricsDescription("METRICS", lineLength, minDescriptionLength);
|
||||||
|
metricsDescription.add_options()
|
||||||
|
(
|
||||||
|
"chromosome-repetitions",
|
||||||
|
po::value<size_t>()->value_name("<COUNT>")->default_value(1),
|
||||||
|
"Number of times to repeat the sequence optimisation steps represented by a chromosome."
|
||||||
|
)
|
||||||
|
;
|
||||||
|
keywordDescription.add(metricsDescription);
|
||||||
|
|
||||||
po::positional_options_description positionalDescription;
|
po::positional_options_description positionalDescription;
|
||||||
positionalDescription.add("input-file", 1);
|
positionalDescription.add("input-file", 1);
|
||||||
@ -235,10 +252,11 @@ void Phaser::initialiseRNG(po::variables_map const& _arguments)
|
|||||||
void Phaser::runAlgorithm(po::variables_map const& _arguments)
|
void Phaser::runAlgorithm(po::variables_map const& _arguments)
|
||||||
{
|
{
|
||||||
auto programOptions = ProgramFactory::Options::fromCommandLine(_arguments);
|
auto programOptions = ProgramFactory::Options::fromCommandLine(_arguments);
|
||||||
|
auto metricOptions = FitnessMetricFactory::Options::fromCommandLine(_arguments);
|
||||||
auto algorithmOptions = GeneticAlgorithmFactory::Options::fromCommandLine(_arguments);
|
auto algorithmOptions = GeneticAlgorithmFactory::Options::fromCommandLine(_arguments);
|
||||||
|
|
||||||
Program program = ProgramFactory::build(programOptions);
|
Program program = ProgramFactory::build(programOptions);
|
||||||
unique_ptr<FitnessMetric> fitnessMetric = FitnessMetricFactory::build(move(program));
|
unique_ptr<FitnessMetric> fitnessMetric = FitnessMetricFactory::build(metricOptions, move(program));
|
||||||
Population population = PopulationFactory::build(move(fitnessMetric));
|
Population population = PopulationFactory::build(move(fitnessMetric));
|
||||||
|
|
||||||
unique_ptr<GeneticAlgorithm> geneticAlgorithm = GeneticAlgorithmFactory::build(
|
unique_ptr<GeneticAlgorithm> geneticAlgorithm = GeneticAlgorithmFactory::build(
|
||||||
|
@ -80,9 +80,15 @@ public:
|
|||||||
class FitnessMetricFactory
|
class FitnessMetricFactory
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static constexpr size_t RepetitionCount = 5;
|
struct Options
|
||||||
|
{
|
||||||
|
size_t chromosomeRepetitions;
|
||||||
|
|
||||||
|
static Options fromCommandLine(boost::program_options::variables_map const& _arguments);
|
||||||
|
};
|
||||||
|
|
||||||
static std::unique_ptr<FitnessMetric> build(
|
static std::unique_ptr<FitnessMetric> build(
|
||||||
|
Options const& _options,
|
||||||
Program _program
|
Program _program
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user