Modifiers 

One quick question:
Do the modifiers cancel each other out? is the stick AAAaaAX exactly the
same as AAX?

I'm writing a program I'm calling FramCleaner that can strip the "Bones",
the Shape, the Brain, or just 'clean up' the Geno. So "LLlRRRRaARRRRX"
would become "LX"(8 R's is a full rotation and I assume A&L and a&l cancel
each other out) if so the original Fram:( Pigmei's Inchworm)

rLLLLLafffsX[| 1 :-1.799,0 :2.404]A(,rLLaCqX,RRLLLFXAfi(,rrrraMqX[@ 3
:2.102][|3 :-0.966,T :-3.963,4 :3.482],aCMqX[ 1 :-1.647][ 0 :4.536,-2
:-4.750][|-3:1.080,0 :1.915][ G:0.713]LaFMsiiQX[ @1 :-4.884][| 0 :-21.341,-2
:-3.852,= :0.000],LLIIIXLcqqX,,))

Bones:
X(,X,X(,X,XX,XX,,))

Shape:
same as bones but with the LlRrQqCc modifiers

Brains:
[| 1 :-1.799,0 :2.404]
[@ 3:2.102]
[|3 :-0.966,T :-3.963,4 :3.482]
[ 1 :-1.647]
[ 0 :4.536,-2:-4.750]
[|-3:1.080,0 :1.915]
[ G:0.713]
[ @1 :-4.884]
[| 0 :-21.341,-2:-3.852,= :0.000]

Cleaned up: afffLLLLLrsX[| 1 :-1.799,0
:2.404]A(,aCLLqX,FLLLRRXAfi(,aMqrrrrX[@ 3:2.102][|3 :-0.966,T :-3.963,4
:3.482],aCMqX[ 1 :-1.647][ 0 :4.536,-2:-4.750][|-3:1.080,0 :1.915][
G:0.713]aFiiLMQsX[ @1 :-4.884][| 0 :-21.341,-2:-3.852,=
:0.000],IIILLXcLqqX,,))

This example didn't have any 'cancelled out' modifiers but as you can see
the cleanup process alphabetizes them

Now the big question is would this program be useful to anyone? I'm mainly
doing it out of boredom.

Forums: 
Szymon Ulatowski's picture

Brad Fletcher wrote:
> One quick question:
> Do the modifiers cancel each other out? is the stick AAAaaAX exactly the
> same as AAX?

no it doesn't work this way.
the only "additive" modifier is r/R (XrrrRrRrRRX = XrX)

in most cases it is not possible to make an EXACT short version.
for example the assimilation is changed according to the following formula:

'A': a=a+(1-a)*0.8;
// then a+m+s+i normalization:
sum=a+m+s+i;
a=a/sum; m=m/sum; s=s/sum; i=i/sum;

'a': a=a-a*0.4;
// then a+m+s+i normalization:
sum=a+m+s+i;
a=a/sum; m=m/sum; s=s/sum; i=i/sum;

so a/A will also change m, s and i.

you can see the calculated modifier value in the f0 version of the
genotype, eg:

AX
p:ing=0.15625, as=0.53125
p:1, ing=0.15625, as=0.53125
j:0, 1, dx=1, stam=0.15625

AAaX
p:ing=0.154321, as=0.537037
p:1, ing=0.154321, as=0.537037
j:0, 1, dx=1, stam=0.154321

AaAX
p:ing=0.134409, as=0.596774
p:1, ing=0.134409, as=0.596774
j:0, 1, dx=1, stam=0.134409

aAAX
p:ing=0.119048, as=0.642857
p:1, ing=0.119048, as=0.642857
j:0, 1, dx=1, stam=0.119048

(default is a=i=s=m=0.25)

the exact formulas for all modifiers can be found in conv_f1.cpp
available in the "Software Developer Kit"
http://www.framsticks.com/sdk

sz.

Maciej Komosinski's picture

>> One quick question:
>> Do the modifiers cancel each other out? is the stick AAAaaAX exactly the
>> same as AAX?
>
> no it doesn't work this way.
> the only "additive" modifier is r/R (XrrrRrRrRRX = XrX)

On the other hand, in f1 genetics, there is a simplification
method which works just like this - cancels big and small
letters.

But this simplification method is not expected to give
exactly equivalent results, because it is usually called
after mutation and crossover.

MacKo

I belive so, but you may want to test it out to confirm that. As far as
"would this program be useful to anyone" I would say, absolutly. See if
you can also have it clean out unused neurons and sensers (not connected
to anything, or neuro loops that dont connect to anything) as well.
Possably an option to remove unused muscles as well (not connected to
any neurons).

This would really help when trying to manipulate genetically cluttered,
evolved creatures, or in presentation when posting genomes.

Another nice feature would be to strip the entire brain.

Brad Fletcher wrote:

> This example didn't have any 'cancelled out' modifiers but as you can see
> the cleanup process alphabetizes them
>
> Now the big question is would this program be useful to anyone? I'm mainly
> doing it out of boredom.
>
>