<commit_before>#ifndef FUNC_H
#define FUNC_H

#include <vector>
#include "rand.h"

#define TESTING 0
#define STATS 1
#define DUMP 0
#define LOCALSEARCH 0

// Stores data for given inputs and results for the original function (basically a tuple)
typedef struct {
    double x;   // Input x to f()
    double fx;  // Result of f(x)
} p; 

const double desiredError = 0.0001;
const int localSearchLimit = 1000;

const int maxGen = 500;     // Maximum number of generations
const int popSize = 400;    // Population size

const double xover = 0.5;       // Crossover Probability of an individual
const double mutateProb = 0.3;  // Mutation probability of an individual
const double nodeMutateProb = 0.5;

const int tournySize = 3;       // Tournament size
const int elites = 10;          // Number of elites that persist between generations (NOTE: must be less tahn popSize!)

const int startingDepthRange = 15;  // Range of initial depths of the trees in population
const int minStartingDepth = 3;     // Lowest value for the range
const int growthFactor = 2;         // Factor by which crossed over trees grow

const double punishment = 0.10;     // Punishment scalar to limit tree growth (fitness += depth * punishment)

#endif<commit_msg>These seem to work well<commit_after>#ifndef FUNC_H
#define FUNC_H

#include <vector>
#include "rand.h"

#define TESTING 0
#define STATS 1
#define DUMP 0
#define LOCALSEARCH 0

// Stores data for given inputs and results for the original function (basically a tuple)
typedef struct {
    double x;   // Input x to f()
    double fx;  // Result of f(x)
} p; 

const double desiredError = 0.0001;
const int localSearchLimit = 1000;

const int maxGen = 500;     // Maximum number of generations
const int popSize = 400;    // Population size

const double xover = 0.5;       // Crossover Probability of an individual
const double mutateProb = 0.7;  // Mutation probability of an individual
const double nodeMutateProb = 0.5;

const int tournySize = 3;       // Tournament size
const int elites = 20;          // Number of elites that persist between generations (NOTE: must be less tahn popSize!)

const int startingDepthRange = 15;  // Range of initial depths of the trees in population
const int minStartingDepth = 3;     // Lowest value for the range
const int growthFactor = 2;         // Factor by which crossed over trees grow

const double punishment = 0.10;     // Punishment scalar to limit tree growth (fitness += depth * punishment)

#endif
{'fraction_non_alphanumeric': 0.0756234915526951, 'fraction_numerical': 0.02815768302493966, 'mean_word_length': 3.2367972742759794, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3117930', 'n_tokens_mistral': 789, 'n_tokens_neox': 686, 'n_words': 327}