ci-group / revolve2

A python library for optimization, geared towards modular robots and evolutionary computing.
https://ci-group.github.io/revolve2
GNU Lesser General Public License v3.0
16 stars 48 forks source link

Plasticoding #103

Open karinemiras opened 2 years ago

surgura commented 2 years ago

It is important to keep in mind that before this can merged into Revolve it must be some kind of 'generic' framework.

surgura commented 2 years ago

If you are working on this in a personal repository it would we nice if you could post a link here so we can track that, if possible/desired

karinemiras commented 2 years ago

I'm not sure what you mean by framework. Plasticoding is a representation, with peculiar capabilities.

surgura commented 2 years ago

If it is in revolve it should be generic and theoretically useful for people outside of our research group. Basically what I mean is it should not simply be a set of hardcoded rules that only work for one specific experiment

bobykhani commented 2 years ago

If you are working on this in a personal repository it would we nice if you could post a link here so we can track that, if possible/desired

lsystem-repo

This is the link to the branch that I'm working on it. It has an L-system body + random CPG brain, I'm about to finish CPPN-CPG with multi-neat for brain genome and commit it but still need some fixation to merge with the master branch.

karinemiras commented 2 years ago

Environmental regulation is relevant for the whole community of artificial life. The rules are not hard coded, but evolvable.

On Thu, 7 Apr 2022, 13:43 Aart Stuurman @.***> wrote:

If it is in revolve it should be generic and theoretically useful for people outside of our research group. Basically what I mean is it should not simply be a set of hardcoded rules that only work for one specific experiment

— Reply to this email directly, view it on GitHub https://github.com/ci-group/revolve2/issues/103#issuecomment-1091634381, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB5UJRQOIVWPGR3C4XLTXF3VD3C7RANCNFSM5SXJAQFA . You are receiving this because you were assigned.Message ID: @.***>

karinemiras commented 2 years ago

I think before we think of making things useful to the community we should make it useful for our group, which is challenging enough for now. Specially because in the end, each lab uses their own system. In any case, plasticity could theoretically be implemented with any representation, but making it work is not particularly trivial. And this is why I don't think it's feasible yet to have a "framework". It's not simply a question of implementing the dynamics of it. That would be purely a coding challenge. The real challenge is composing a design that, given the rest of the system (search space, task, environment, etc) , allows the emergence of the right conditions for plasticity to be selected for. I could not make it work with cppns yet. Only with the lsystem. But I'd love to have it for both. Note that regulation is inherently part of the decoding, during which the "choice" of genetic expression is done, mediated by the environment. Some consider the decoding as part of the representation and some don't. In any case, they are coupled together, and the decoding depends on the encoding. This way, one could devise multiple regulatory designs for a same representation, but all of them would depend on the nature of this representation. More than that, it would be hard to take, for instance, a regulatory design of an lsystem and plug into a cppn (just like a mutation operator wouldn't fit).