allow program reset
parent
407273d0dc
commit
64e8d71468
|
@ -1,5 +1,5 @@
|
||||||
cmake_minimum_required(VERSION 3.25)
|
cmake_minimum_required(VERSION 3.25)
|
||||||
project(blt-gp VERSION 0.0.125)
|
project(blt-gp VERSION 0.0.126)
|
||||||
|
|
||||||
include(CTest)
|
include(CTest)
|
||||||
|
|
||||||
|
|
|
@ -103,15 +103,7 @@ namespace blt::gp
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit operator_builder(type_provider& system): system(system)
|
explicit operator_builder(type_provider& system): system(system)
|
||||||
{
|
{}
|
||||||
// // ensure every storage has a vec defined for every type!
|
|
||||||
// for (const auto& type : system)
|
|
||||||
// {
|
|
||||||
// storage.terminals[type.second.id()] = {};
|
|
||||||
// storage.non_terminals[type.second.id()] = {};
|
|
||||||
// storage.operators_ordered_terminals[type.second.id()] = {};
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename ArgType, typename Return, typename... Args>
|
template<typename ArgType, typename Return, typename... Args>
|
||||||
operator_builder& add_operator(operation_t<ArgType, Return(Args...)>& op, bool is_static = false)
|
operator_builder& add_operator(operation_t<ArgType, Return(Args...)>& op, bool is_static = false)
|
||||||
|
@ -156,7 +148,7 @@ namespace blt::gp
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
operator_storage&& build()
|
operator_storage& build()
|
||||||
{
|
{
|
||||||
blt::hashset_t<type_id> has_terminals;
|
blt::hashset_t<type_id> has_terminals;
|
||||||
|
|
||||||
|
@ -216,6 +208,11 @@ namespace blt::gp
|
||||||
storage.operators_ordered_terminals[return_type] = ordered_terminals;
|
storage.operators_ordered_terminals[return_type] = ordered_terminals;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
operator_storage&& grab()
|
||||||
|
{
|
||||||
return std::move(storage);
|
return std::move(storage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -374,6 +371,15 @@ namespace blt::gp
|
||||||
evaluate_fitness_internal();
|
evaluate_fitness_internal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void reset_program(type_id root_type, bool eval_fitness_now = true)
|
||||||
|
{
|
||||||
|
current_generation = 0;
|
||||||
|
current_pop = config.pop_initializer.get().generate(
|
||||||
|
{*this, root_type, config.population_size, config.initial_min_tree_size, config.initial_max_tree_size});
|
||||||
|
if (eval_fitness_now)
|
||||||
|
evaluate_fitness_internal();
|
||||||
|
}
|
||||||
|
|
||||||
void next_generation()
|
void next_generation()
|
||||||
{
|
{
|
||||||
current_pop = std::move(next_pop);
|
current_pop = std::move(next_pop);
|
||||||
|
@ -498,7 +504,7 @@ namespace blt::gp
|
||||||
return storage.static_types.contains(static_cast<blt::size_t>(id));
|
return storage.static_types.contains(static_cast<blt::size_t>(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void set_operations(operator_storage&& op)
|
inline void set_operations(operator_storage op)
|
||||||
{
|
{
|
||||||
storage = std::move(op);
|
storage = std::move(op);
|
||||||
}
|
}
|
||||||
|
|
2
lib/blt
2
lib/blt
|
@ -1 +1 @@
|
||||||
Subproject commit 42fa3782007e92119f550fcc8c871398ec1310e8
|
Subproject commit 941aedb510d298851dadce32e5b20f85c9844969
|
Loading…
Reference in New Issue