1#ifndef PDBS_PATTERN_COLLECTION_GENERATOR_GENETIC_H
2#define PDBS_PATTERN_COLLECTION_GENERATOR_GENETIC_H
4#include "downward/pdbs/pattern_generator.h"
5#include "downward/pdbs/types.h"
13class RandomNumberGenerator;
23class PatternCollectionGeneratorGenetic :
public PatternCollectionGenerator {
25 const int pdb_max_size;
26 const int num_collections;
27 const int num_episodes;
28 const double mutation_probability;
31 const bool disjoint_patterns;
32 std::shared_ptr<utils::RandomNumberGenerator> rng;
34 std::shared_ptr<AbstractTask> task;
37 std::vector<std::vector<std::vector<bool>>> pattern_collections;
40 std::shared_ptr<PatternCollection> best_patterns;
52 void select(
const std::vector<double>& fitness_values);
67 transform_to_pattern_normal_form(
const std::vector<bool>& bitvector)
const;
79 void evaluate(std::vector<double>& fitness_values);
80 bool is_pattern_too_large(
const Pattern& pattern)
const;
87 bool mark_used_variables(
88 const Pattern& pattern,
89 std::vector<bool>& variables_used)
const;
90 void remove_irrelevant_variables(Pattern& pattern)
const;
111 void genetic_algorithm();
113 virtual std::string name()
const override;
114 virtual PatternCollectionInformation
115 compute_patterns(
const std::shared_ptr<AbstractTask>& task)
override;
118 PatternCollectionGeneratorGenetic(
122 double mutation_probability,
125 utils::Verbosity verbosity);