-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathArmRepertoire_Experiment_Utilities.cs
156 lines (138 loc) · 6.34 KB
/
ArmRepertoire_Experiment_Utilities.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MapElites_Lib;
using Testbed_2__Arm;
namespace Testbed_2__Arm__Exp
{
public static class ArmRepertoire_Experiment_Utilities
{
public static void Run_Experiment__Fine_Grained(
string experiment_name,
MEL__Parent_Selection_Method<MEL_ArmRepertoire__Individual> parent_selection_method,
int number_of_dimensions
)
{
// experiment - specific - settings
int number_of_iterations = 1_000_000;
List<int> data_save_points = new List<int>();
for (int i = 0; i < 100; i += 10) data_save_points.Add(i);
for (int i = 100; i < 1_000; i += 100) data_save_points.Add(i);
for (int i = 1_000; i <= 1_000_000; i += 1_000) data_save_points.Add(i);
List<int> random_seeds = new List<int>() { 1000 };
List<int> feature_tables_png_save_points = new List<int>() { number_of_iterations };
// general settings
double individual_gene_min_value = -Math.PI;
double individual_gene_max_value = Math.PI;
double uniform_mutation_rate = 0.05;
double gene_value_range = individual_gene_max_value - individual_gene_min_value;
double mutation_step = uniform_mutation_rate * gene_value_range;
double feature_1_min_value = -1.0;
double feature_1_max_value = 1.0;
int feature_1_subdivisions = 100;
double feature_2_min_value = -1.0;
double feature_2_max_value = 1.0;
int feature_2_subdivisions = 100;
int initial_population = 100;
MEL_Experiment_Runner.Run_Experiment(
experiment_name,
random_seeds,
new MEL__Operator_Settings<MEL_ArmRepertoire__Individual>(
new MEL_ArmRepertoire__Individual_Generator(
number_of_dimensions,
individual_gene_min_value,
individual_gene_max_value
),
new MEL_ArmRepertoire__Individual_Mutator__Mutation_Step__Uniform_Rate(
mutation_step,
individual_gene_min_value,
individual_gene_max_value
)
),
new MEL__Evaluation_Settings<MEL_ArmRepertoire__Individual>(
new MEL_ArmRepertoire__Individual_Evaluator__Fitness(),
new MEL_ArmRepertoire__Individual_Evaluator__Feature_1(),
new MEL_ArmRepertoire__Individual_Evaluator__Feature_2(),
feature_1_min_value,
feature_1_max_value,
feature_1_subdivisions,
feature_2_min_value,
feature_2_max_value,
feature_2_subdivisions
),
parent_selection_method,
initial_population,
number_of_iterations,
data_save_points,
feature_tables_png_save_points,
data_save_points,
data_save_points
);
}
public static void Run_Experiment(
string experiment_name,
MEL__Parent_Selection_Method<MEL_ArmRepertoire__Individual> parent_selection_method,
int number_of_dimensions
)
{
// experiment - specific - settings
int number_of_iterations = 1_000_000;
List<int> data_save_points = new List<int>();
for (int i = 0; i < 10_000; i += 1_000) data_save_points.Add(i);
for (int i = 10_000; i < 100_000; i += 10_000) data_save_points.Add(i);
for (int i = 100_000; i <= 1_000_000; i += 100_000) data_save_points.Add(i);
List<int> feature_tables_png_save_points = new List<int>() { number_of_iterations };
// general settings
double individual_gene_min_value = -Math.PI;
double individual_gene_max_value = Math.PI;
double uniform_mutation_rate = 0.05;
double gene_value_range = individual_gene_max_value - individual_gene_min_value;
double mutation_step = uniform_mutation_rate * gene_value_range;
double feature_1_min_value = -1.0;
double feature_1_max_value = 1.0;
int feature_1_subdivisions = 100;
double feature_2_min_value = -1.0;
double feature_2_max_value = 1.0;
int feature_2_subdivisions = 100;
int initial_population = 100;
List<int> random_seeds = new List<int>();
for (int i = 1000; i < 1100; i++) random_seeds.Add(i);
MEL_Experiment_Runner.Run_Experiment(
experiment_name,
random_seeds,
new MEL__Operator_Settings<MEL_ArmRepertoire__Individual>(
new MEL_ArmRepertoire__Individual_Generator(
number_of_dimensions,
individual_gene_min_value,
individual_gene_max_value
),
new MEL_ArmRepertoire__Individual_Mutator__Mutation_Step__Uniform_Rate(
mutation_step,
individual_gene_min_value,
individual_gene_max_value
)
),
new MEL__Evaluation_Settings<MEL_ArmRepertoire__Individual>(
new MEL_ArmRepertoire__Individual_Evaluator__Fitness(),
new MEL_ArmRepertoire__Individual_Evaluator__Feature_1(),
new MEL_ArmRepertoire__Individual_Evaluator__Feature_2(),
feature_1_min_value,
feature_1_max_value,
feature_1_subdivisions,
feature_2_min_value,
feature_2_max_value,
feature_2_subdivisions
),
parent_selection_method,
initial_population,
number_of_iterations,
data_save_points,
feature_tables_png_save_points,
data_save_points,
data_save_points
);
}
}
}