Rename some convenience methods of State, most notably population_stack to populations.
Make State generic over the problem type, so best_individual and such don't need a type annotation.
These were some changes that I think are more elegant that came up when writing the Tech Report. Making State generic might sound unintuitive because it doesn't actually depend on P aside from the convenience methods, but I think those are important enough that omitting the type parameter there is more intuitive. It also integrated quite nicely with logging, so there's that. When writing the Python wrapper, I actually needed to wrap State into a wrapper that is generic over P anyway, so that was a first indicator that this might be more elegant.
Population
toPopulations
.State
, most notablypopulation_stack
topopulations
.State
generic over the problem type, sobest_individual
and such don't need a type annotation.These were some changes that I think are more elegant that came up when writing the Tech Report. Making
State
generic might sound unintuitive because it doesn't actually depend onP
aside from the convenience methods, but I think those are important enough that omitting the type parameter there is more intuitive. It also integrated quite nicely with logging, so there's that. When writing the Python wrapper, I actually needed to wrapState
into a wrapper that is generic overP
anyway, so that was a first indicator that this might be more elegant.