Software developers 

Framsticks-related software development

Diploid genetics

Would it possible (for users/developers) to develop a diploid genotype
encoding?

Diploid simply means that there are two copies of each gene. If two
copies of a particluar gene are not identical, this conflict (deciding
which one is to be expressed) is resolved through a dominance operators
in the gene (dominance/recessivity mechanism).

Diploid genetic algorithms show several interesting and practical
characteristics, such as high peak performance (best in population is
very good), and robust adaptivity in changing environments, and
maintaining genetic diversity in the population. (And, ofcourse, being
somewhat biologically plausible.)

Calabretta's articles on this issue (Diploid GAs in Khepera robots):
http://gral.ip.rm.cnr.it/rcalabretta/calabretta.diploidy.pdf
http://gral.ip.rm.cnr.it/rcalabretta/calabretta.diplo2.pdf

We would like to develop such a mechanism, and investigate its
performance in a spontaneous evolution scheme. I know many parameters
and processes can be modified in Framsticks, but I can't see how to
implement diploidy in a straight-forward manner.

It shouldn't be too hard, though. It implies doubling the f1 genotype
and extending it with genes for dominance resolution (for every gene),
plus modifying the genotype-to-phenotype decoding mechanism to include
the reading out of dominance genes.

Best regards,

Walter de Back

Let's open Framsticks to other types of research

I'm a kind of new to Framsticks.

But it looks to me that Framsticks can only be used
by researchers interested on Neural Networks,
Genetic Algorithms, etc.

I suggest we open Framsticks to other type of research
(such as Reinforcement Learning) by simply creating an
interface to the "environment part of Framsticks".

This interface would allow a researcher to do the
following:

1) Tell the "environment part of Framsticks" that
we want to create an agent with the following
hardware description.

for instance: "my agent is composed of two
sticks, one rotational join and
one presure detector"

2) Tell the "environment part of Framsticks" that
we want the environment to have the following
characteristics.

for instance: "the environment should be
20X20X20 meters of water"

3) Tell the "environment part of Framsticks" what
what should be the initial position of the agent.

for instance: "initial position of the agent
is (10,10,10)"

4) Ask the "environment part of Framsticks" to tell
us what is the current state of some part of the
simulation.

for instance: "What is the current position of
the agent in the environment?" or
"What is the current reading on
the agent's presure detector?"

5) Ask the "environment part of Framsticks" to tell
one of the actuators of the agent to execute certain
command (which should cause a change on the
state of the environment)

for instance: "tell the rotational join of the agent
to rotate so the two sticks are
25 degrees apart" (this may for
instance move the agent one
meter up)

This simple interface would not only allow other types
of researcher to benefit from Framsticks but it would
also allow researchers to compare their findings in a level
field. For instance, One researcher may be able to state
something like: "A faster swimmer sneak was obtained
by making use of one of the Reinforcement Learning
methods. However, the Genetic Learning achieved
close to this performance using half the number of
training episodes"

Please, let me know what you think

Directing Evolution

Please tell me that I am missing something, and not that I'm trying to do
the impossible.

I have hand-designed a fram named George. Admittedly, I haven't fully
designed his brain as I was hoping evolution would perfect it for me. There
are a couple things that George's brain definitely needs though, which have
been strategically placed throughout his NN.

With everything set up, I send George through a NN-only run - only to find
that my hand-coded neurons have been corrupted long before George even knows
how to walk.

Try as I might, I can't find a way to preserve the contents of George's
hand-coded neurons while allowing evolution the opportunity to modify all
the others.

Any suggestions? Or is this a request for the developers?

Status neurons

Is there a way to connect a neuron to the internal food stock counter of a
creature to know if it is hungry?

Same question with the solidity of a stick (to escape a fight if one of the
body sticky is near definitive damage)?

Is there a SIMPLE way to know if a stick is under water or in air?

btw, Framsticks is great ;)

Didier

Evaluation aims

Is it possible to define/create a creature that has more than one 'mode',
and to swich between them?
This could be for instance a creature that can move very fast, but does so
only when it is 'hungry', so when energy level is low.
When not 'hungry', it is bettter to idle to save energy.

Frans

Hardwire Neuron

I am hobbist whom has been tinkering about with robots for some years. After
recently downloading framsticks, I could see its potential for developing
robots.My problem is finding a circuit diagram, of a hardwire neuron with
exitory/inhibitory weighted inputs and a 3 state(+1,0,-1) output, as
describe in framsticks.The examples I've found so far have been based on
Mark Tildens PDC (not weighted, 2 state output).Please Please Please is
there anybody out there that can point me in the right direction?

yours hopfully

Alun Cross

lunax333.msn.com
P.S.
isn't Framsticks brill?

designing neural networks

This is my 4th post today, and so far I've seen nobody but me post. Oh well,
I'll make it my goal to get this forum active again.

I've been fiddling around with designs for new creatures, and thinking about
how to design neural networks to get the desired behavior. I was thinking
about the problem people keep describing with the smell sensors, and how
best to approach the issue. Part of the difficulty, as I understand it, is
that the difference in the values of two sensors on a creature is too tiny
in proportion to the overall signal to be used effectively to direct
movement.
The easy fix for this aspect at least is to not use the smell values
themselves, but the difference between them.
Designing a network to do this is fairly simple, and here is the simplest
possible version in f0 code:
X[*:0.5][*:0.4][-2:1,-1:-1]
for the sake of simplicity I'm using hardwired neuron values, but the
process works just as well if they are any two neurons. The third neuron may
still have a very tiny value, but that can be corrected with a higher weight
when other neurons use it as an input. Of course, finding a single weight
that works at all distances from the energy source is a different matter.
It seems to me that you could get the most out of your training time if your
network is set up from the begining to provide it's central brain (which I'm
assuming for the purpose of this discussion you'll be evolving rather than
designing) with inputs containing the actual values it should utilize,
rather than hoping it will simultaneously evolve to correctly process the
sensory data and to use that processed data to make the correct decisions.

I think it would be a great help if there were a repository not of
creatures, but of neural-net functions, like my example above, or the
standard sinoid curve networks.
Intrest/reactions/comments? or even better, anyone have any neural net
functions of their own to throw out?

Will Thomas

making f0 genotypes

I've been playing with f1 genotypes for a while now, and I had an idea that
couldn't be done in f1, so I was going to learn f0, but I've got two
questions now.

1) is there any good way to design them without the framsticks program going
crazy? When I attempt to type in f0 genotypes, it gives me an error message
almost every keystroke about an access violation, framsticks.exe attempting
to read invalid memory addresses. Plus, it will sometimes just render a
genotype completely invalid and useless, and won't even show the sticks in
the body window.

2) is there no way to evolve f0 types? I had assumed you could, but my
simulator won't populate the world with them, it seems. Very strange.

Thanks for any answers,

Will

Buggers

I'm pretty new to Framsticks, after a few days fiddling around with existing
critters and the evolution parameters, I designed my first critter from
stratch. I gave it 3 pairs of legs arranged somewhat like an ant's. The
original genome for the morphology was something like this:

Gopher's Bugger Morph1
X(CCrrX(X),MX(CCrrX(X),MX(CCrrX(X),,CCrrX(X)),CCrrX(X)),CCrrX(X))

For the neural network, I went a little crazy. On each of the muscled
sticks, I added 10 neurons. 2 are control-neurons, one for rotation and one
for bend. 4 define a cross-connected decision layer. Another 4 are what I
think of as control-relay neurons, two to each control-neuron. Each
control-neuron takes as input two of the control-relay neurons. Each neuron
in these pairs gets input from the other in their pair and the 4 neurons in
the decision-layer. The decision-layer's neurons take as input all other
neurons in the decision-layer, as well as both control neurons. This set of
10 neurons is duplicated in both muscled sticks, with one modification. The
4 decision-layer neurons in the muscle closest to the head also take as
input the 4 decision-layer neurons of the /next/ segment.
The completed initial genotype is as follows:

Gopher's Bugger Alpha
X(CCrrMX(X),MX[@0:0,2:0,3:0][|0:0,3:0,4:0][1:0,4:0,5:0,6:0,7:0][-1:0,4:0,5:0
,6:0][1:0,2:0,3:0,4:0,5:0][-1:0,1:0,2:0,3:0,4:0][-6:0,-5:0,1:0,2:0,3:0,10:0,
11:0,12:0,13:0][-7:0,-6:0,-1:0,1:0,2:0,9:0,10:0,11:0,12:0][-8:0,-7:0,-2:0,-1
:0,1:0,8:0,9:0,10:0,11:0][-9:0,-8:0,-3:0,-2:0,-1:0,7:0,8:0,9:0,10:0](CCrrMX(
X),MX[@0:0,2:0,3:0][|0:0,3:0,4:0][1:0,4:0,5:0,6:0,7:0][-1:0,4:0,5:0,6:0][1:0
,2:0,3:0,4:0,5:0][-1:0,1:0,2:0,3:0,4:0][-6:0,-5:0,1:0,2:0,3:0][-7:0,-6:0,-1:
0,1:0,2:0][-8:0,-7:0,-2:0,-1:0,1:0][-9:0,-8:0,-3:0,-2:0,-1:0](CCrrMX(X),X,CC
rrMX(X)),CCrMrX(X)),CCrrMX(X))

I was trying to design a neural net that would be good at learning to walk.
I was somewhat successful, with most of my walkers consistantly managing a
distance of 30-40 within a few million steps. However, by 10 million things
began to plateau, and now progress has slowed to a crawl.

I have a world 100x100, with 10 framsticks at a time. Selection critera is
distance 1, others 0. My population is 30% identical, 70% mutants, and 0%
crossbreeds. There's no morphology mutation, and all neural mutations are
default/5 with the exception of Change Neuron Input Weight which is set to
1. I set the other neural mutations low because I wanted to test the
effectiveness of my designed nets as much as to produce a fast walker.

I'm now at around 17M steps, and the genotypes range in distance traveled
from ~49 to ~52, and as I said earlier progress has slowed to a crawl. I
suspect this is because of the extremely large number of neuron input
weights. 20 neurons, 88 inputs.

reactions/suggestions?

Will Thomas, aka Gopher

Maciej Komosinski's picture

Framsticks on TV TODAY!

Today 0:30-1:30 local time (at night) Framsticks will
be presented in TVN, Polish TV. If I manage to find a PC
outside the firewall, then a live video conference will be
possible. The TV station is in Warsaw, I'll be in Poznan.
Szymon Ulatowski will be in their studio in Warsaw.

Mac

http://www.tvn.pl/ctjren.htm

Pages

Subscribe to RSS - Software developers