-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Species exploration #94
base: development
Are you sure you want to change the base?
Conversation
- added conversion methods from and to speciated populations - fixed the incoungrences in the speciated and non speciated snapshots
this experiments tests how much we can use the species division as early exploration than later exploited by a traditional evolutionary algorithm - moved morphology_compatibility into the main code, as it can be shared by multiple experiments
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would use more clear names for the new functions, but the rest seems fine to merge now.
@@ -25,6 +25,7 @@ def __init__(self, | |||
next_species_id: int = 1): | |||
# TODO analyzer | |||
super().__init__(config, simulator_queue, analyzer_queue, next_robot_id) | |||
self.config: PopulationSpeciatedConfig = self.config # this is only for correct type hinting |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Too bad we have to do it this way...
@@ -82,6 +83,11 @@ async def next_generation(self, | |||
|
|||
return new_population | |||
|
|||
def into_population(self) -> Population: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Into population is a weird name to me for a function.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe get_regular_population?
@@ -172,6 +175,49 @@ async def next_generation(self, | |||
|
|||
return new_population | |||
|
|||
def into_speciated_population(self, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
get_speciated_population?
generation_folder = self.config.experiment_management.generation_folder(gen_num) | ||
for _, _, files in os.walk(generation_folder): | ||
for file in files: | ||
test = extract_id.search(file) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
test?
and renamed unintuitive (unused) speciated_population_management function
…o species_exploration
and added a bit more documentation
I added a new experiment
and made some fixes in the incongruences of the snapshot creation
In this experiment I want to use speciation only for the first
n
generations and then transition to a more traditional evolutionary algorithm with no species.