Author Topic: Shvartz, can you help me out?  (Read 40058 times)

Offline PurpleYouko

  • Bot God
  • *****
  • Posts: 2556
    • View Profile
Shvartz, can you help me out?
« Reply #90 on: July 08, 2005, 09:00:16 AM »
Quote
Atleast now you can see why I was going crazy saying that we need a better mutations code and stuff

I would agree that it needs to be refined some and possibly improved a little but I still say that essentially it all works fine.

With your start bots, it isn't that they never develop turning abilities. I have seen several do so. The problem is that these mutations are very quickly killed by the other bots in the sim. They have a very distinct evolutionary disadvantage. based on the parameters of the sim
I set up the program using scripts to pause the game and highlight the bot whenever one of them developed an aimsx or aimdx command.
Quite a lot did but they all died within seconds when they started crossing the lines of fire of all the other parallel bots.

The problem with DB is not the mutation code.
The problem is with the complete and utter lack of any kind of variability in the DB universe. In a universe where a bot can cross the whole screen in a matter of seconds and settings where straight liners can survive, (ie loads of veg) they very quickly become parallel as one directional strain becomes dominant. Did you notice that at first they are going in all directions? At this point evolution strongly favors conformity. Any deviants are quickly destroyed.

Again NOT a problem with mutation but actually a very good demonstration of a bot adapting perfectly to an environment and then sticking to it. Evolution at its best.
There are 10 kinds of people in the world
Those who understand binary.
and those who don't

:D PY :D

Offline Botsareus

  • Society makes it all backwards - there is a good reason for that
  • Bot God
  • *****
  • Posts: 4483
    • View Profile
Shvartz, can you help me out?
« Reply #91 on: July 08, 2005, 10:24:05 AM »
Good Points PY,

Yea well, shvartz has not givin up yet so lets whst happens.

[Post from a T1 line, library 16million , $$ :P]

Offline Sprotiel

  • Bot Destroyer
  • ***
  • Posts: 135
    • View Profile
Shvartz, can you help me out?
« Reply #92 on: July 08, 2005, 10:45:11 AM »
Actually, the reason why straight liners have an advantage, even when they aren't all going in the same direction, is that they're able to push veggies in front of them.
That's a bug of the physics model that should be corrected (perhaps, it's done already?)

Offline PurpleYouko

  • Bot God
  • *****
  • Posts: 2556
    • View Profile
Shvartz, can you help me out?
« Reply #93 on: July 08, 2005, 11:00:21 AM »
It was fixed once and not so long ago either. It seems to have got screwed up again  :(
There are 10 kinds of people in the world
Those who understand binary.
and those who don't

:D PY :D

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Shvartz, can you help me out?
« Reply #94 on: July 08, 2005, 11:39:12 AM »
What do you mean "push veggies in front of them"?  Are they not supposed to push a veggie if they run into it?
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline PurpleYouko

  • Bot God
  • *****
  • Posts: 2556
    • View Profile
Shvartz, can you help me out?
« Reply #95 on: July 08, 2005, 12:40:29 PM »
Only if the veggie is directly in front.
If it is even slightly off center then the difference between the direction of movement and the vector angle from robot to veggie should quickly result in the veggie being pushed to the side.
Right now that doesn't happen. The veggie just stays in front and moves on the same vector as the robot after a collision. This even happens when the veggie is quite visibly off center and the shots are missing it entirely.
There are 10 kinds of people in the world
Those who understand binary.
and those who don't

:D PY :D

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Shvartz, can you help me out?
« Reply #96 on: July 11, 2005, 04:39:38 PM »
An update and some ideas:

I've decided to give up on evolving firstbot.  I pushed the bot too far and the current population died out.  The bots that were saved in "snapshots" are not usable, they have these weird mutations with incorrect syntax of DNA.  I tried to fix them, but I can't.  I am just going to wait for the new version and maybe restart the evolution from scratch.

Here is what I think about the experiment so far: aside from incorrect syntax the mutation routine works nicely.  The biggest problem is that the environment is too small -next time I'll start with size 12 right away.  Should we consider making even larger environments possible?  Maybe.

I also think there is a potential problem (I am not sure if this is a problem) with the way bots mutate and evolve.  Consider this: when we program bots we write "a b store".  Bots never evolve things like this.  They go through complicated scenarios often involving several genes.  Numbers are placed on stack, manipulated in many different ways and finally they are stored into memlocs.  As a result the code becomes quite unmutable - even a slight modification in such a long and complicated sequence of events results in a totally messed up code.  This puts bots into evolutionary dead-ends, don't you think?
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline Ulciscor

  • Bot Destroyer
  • ***
  • Posts: 401
    • View Profile
Shvartz, can you help me out?
« Reply #97 on: July 11, 2005, 05:05:07 PM »
How could this problem be corrected though?

Could you sort of have mutations of patterns rather than individual commands? So instead of just inserting one command it would insert a pattern from a whole collection, like 'a b store' where a and b are random variables or values. That would make sure the sequence for storing a value would be contained in one gene, and would mean that it would be more tolerant of other mutations.
:D Ulciscor :D

I used to be indecisive, but now I'm not so sure.

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Shvartz, can you help me out?
« Reply #98 on: July 11, 2005, 06:59:52 PM »
As I said, I'm not even sure if this is a problem, so I don't know if we should try to correct it.  Your approach would help, but it goes against the evolutionary principles.  And it reduces the chances of seing something new emerge.  

Maybe not allowing genes to communicate through a stack?
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline Ulciscor

  • Bot Destroyer
  • ***
  • Posts: 401
    • View Profile
Shvartz, can you help me out?
« Reply #99 on: July 11, 2005, 07:18:27 PM »
So every time a gene terminated the stack would be cleared? Wouldn't that just make it even harder for bots to evolve any new sequences? The 'problem' doesn't seem to lie in the fact that genes can use values on the stack from other genes but that it always goes that way. I suppose with all the random alterations that right value will get to the right memory address at some point but as you said any further errors are catastrophic as they mess up the whole chain.

What exactly are the evolutionary principles that DB is modelled after anyway?
:D Ulciscor :D

I used to be indecisive, but now I'm not so sure.

Offline Light

  • Bot Destroyer
  • ***
  • Posts: 245
    • View Profile
Shvartz, can you help me out?
« Reply #100 on: July 11, 2005, 09:15:43 PM »
Good things come to those who wait

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Shvartz, can you help me out?
« Reply #101 on: July 12, 2005, 01:04:06 AM »
As I said - I am not even sure if this is a problem.  Maybe it's not. I just want to hear what other people think about that before we start inventing ways to "fix" it.

Just to repeat:
we write code:

10 .up store

quite succeptible to optimization/evolution.  It can slowly change to 11, 12, 13 and so on if evolution favors it.

evolution writes code:

sqrt(38x278^2-100)/171 .up store

and all these operations can happen in different genes, involve numbers moving up and down the stack certain number of steps and so on.  As a result, any small change along the way results in a huge change in what is being stored into .up.  And the robot with such mutation dies.  So this piece of code is "unmutable".  Moreover, all the code that is in between (and which does not really relate to storing anything in .up) is also in many ways unmutable, because addition/removal of any new commands would affect the stack and mess up the ability of a bot to move.

Is this a problem, or I am not making any sense?
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline PurpleYouko

  • Bot God
  • *****
  • Posts: 2556
    • View Profile
Shvartz, can you help me out?
« Reply #102 on: July 12, 2005, 09:46:32 AM »
I would say it is a problem for the robot but not for the program.
If a robot has evolved such a complex bit of DNA that any (major) change to its sequence will result in the death of the robot then we simply have an evolutionary dead end.
We may feel sorry for the afflicted robot but in the grand scheme of things it's just tough luck.
There are 10 kinds of people in the world
Those who understand binary.
and those who don't

:D PY :D

Offline Ulciscor

  • Bot Destroyer
  • ***
  • Posts: 401
    • View Profile
Shvartz, can you help me out?
« Reply #103 on: July 12, 2005, 11:12:04 AM »
I agree with [PY] in that it is a problem for the bot but in program terms it isn't anything that shouldn't happen. I remember reading that genes in DNA can activate or deactivate other genes but this is not the same thing I guess.

But isn't it 8 or 9 times out of 10 that bots will get this kind of complex sequence? Would it be 'interfering with evolution' to get a bot's DNA after a certain time, simplify it and then put it back in the sim?
:D Ulciscor :D

I used to be indecisive, but now I'm not so sure.

Offline Botsareus

  • Society makes it all backwards - there is a good reason for that
  • Bot God
  • *****
  • Posts: 4483
    • View Profile
Shvartz, can you help me out?
« Reply #104 on: July 12, 2005, 03:56:56 PM »
What troubles me for a while already is why are robots evolving this complex nonsence instead of evolving normal code. Is'nt it an evolutionary disadvantage? causing robots to go to an evolutionary dead end? But yet robots evolve it anyway... They have a chance to evolve normal code but they don't...
« Last Edit: July 12, 2005, 03:58:51 PM by Botsareus »