Hi everyone, we looking into the asmoses code and I had a few points of confusion I'd like help clarifying. I couldn't find explicit references to the mechanism behind changing the graph structure between exemplars in the meta population but from what I gather there's 2 algorithmic cases, one for boolean satisfiability problems and another for continuous function approximation.
For the Boolean case, it seems like deme opening is not mutation but a structured enumeration that samples feature pairs in canonical form. The graph structure evolves via flipped clause insertion with knobs controlling whether new literals actually materialize. Stochastic properties are introduced via uniform sampling of pairwise clauses via _perm_ratio, and disc_probe acts as a compile-time algebraic filter for redundancy pruning.
For the continuous case, the expansion of the graph exemplars is achieved by applying an algorithm that imposes a fixed structural expansion pattern based on preset flags. This seems thematically like a recursive template that seeks to create complex macrostructures by wrapping the existing exemplar in a pattern and then optimizing/pruning out subgraphs via the inner-loop neighborhood expansion + search. This seems somewhat deterministic and recursive as opposed to a more classical genetic algorithm that would sample a mutation/crossover etc. event using random or statistically distributed properties.
There does seem to be a form of crossover but as far as I can tell this only happens in the inner loop/deme expansion and not during metapopulation expansion, so it doesn't appear to be used to evolve the structure of the graphs themselves.
This leaves me with three general questions:
- Is my understanding of the mechanisms correct in terms of structural evolution of the graph exemplars in the metapopulation, which occurs sequentially between rounds of deme selection, opening, expansion?
- Is there a man or wiki page that I overlooked or is there a gap in documentation regarding the mechanisms at play for structural evolution and the best resource is the codebase itself?
- Are there specific reasons this approach was chosen over something more closely resembling mutation and crossover of the exemplars between generations?
Hi everyone, we looking into the asmoses code and I had a few points of confusion I'd like help clarifying. I couldn't find explicit references to the mechanism behind changing the graph structure between exemplars in the meta population but from what I gather there's 2 algorithmic cases, one for boolean satisfiability problems and another for continuous function approximation.
For the Boolean case, it seems like deme opening is not mutation but a structured enumeration that samples feature pairs in canonical form. The graph structure evolves via flipped clause insertion with knobs controlling whether new literals actually materialize. Stochastic properties are introduced via uniform sampling of pairwise clauses via _perm_ratio, and disc_probe acts as a compile-time algebraic filter for redundancy pruning.
For the continuous case, the expansion of the graph exemplars is achieved by applying an algorithm that imposes a fixed structural expansion pattern based on preset flags. This seems thematically like a recursive template that seeks to create complex macrostructures by wrapping the existing exemplar in a pattern and then optimizing/pruning out subgraphs via the inner-loop neighborhood expansion + search. This seems somewhat deterministic and recursive as opposed to a more classical genetic algorithm that would sample a mutation/crossover etc. event using random or statistically distributed properties.
There does seem to be a form of crossover but as far as I can tell this only happens in the inner loop/deme expansion and not during metapopulation expansion, so it doesn't appear to be used to evolve the structure of the graphs themselves.
This leaves me with three general questions: