Author Topic: Subfunctions  (Read 6929 times)

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Subfunctions
« Reply #15 on: June 09, 2005, 01:56:39 PM »
Quote
Well, you can always create an interface on the compiler so that the bots can swim in it and play with its commands.   :lol:
Anyway, the bots don't need to play with the compiler because there's nothing the compiler can do that they can't. The compiler is just an useful instrument for you to _see_ dnas in a more comfortable way. But evolution don't need to see anything.

I meant more along the lines of code reusability.  If we make a bot, we're very likely to repeat a particular macro or complex function many times.  For instance, *.refbody 200 div 20 add may do something you deem important, and you'll be calculating it many times.

The bot has no way of knowing that *.refbody 200 div 20 add is useful in some way, or to even consider it an atomic command, so it probably won't repeat it anywhere else.  The existing *.refbody 200 div 20 add will also probably slowly mutate from being the same thing across the DNA.

That's my main concern.  That's what I mean by we have something the bots don't.  Reusability of logically atomic structures.  That goes into the need for Noble genes as well.

Quote
These days seems more and more probable that junk dna has some important regulatory functions inside the genome.

...

You can add as much junk dna as you please in DB, it won't do anything because it is not even interpreted.

I've heard that too.  But its role is still quite speculative.  The conservative mainstream view is that it does nothing, and is just relic DNA from mutations and broken genes.  If we model Junk, and it really doesn't do anything, we haven't lost anything.  If it makes mutations less likely to effect the phenotype of a bot, we just up mutation rates.

If it somehow does do something, then that's significant beyond just Darwinbots.  That's a research paper if I ever heard one.

Quote
I clarly feel that's something wrong in the actual sexrepro function; but on the other hand I'd like to know _exactly_ what's wrong with it.

AZPaul wrote up a few posts on what he feels is wrong with it.  I'm not sure where in the forum they are though.

I wish we had that darn search function enabled!

Quote
Requires a good communication, a good synchronization, time... yes, a comfortable place... How can you find a partner, decide to mate, mate, wait for sons, in an environment in which 10 cycles are an eternity, and you can be hit by anybody and pushed far away? There's something wrong with time in DB. Physics is too fast with respect to internal dna timing.

I've noticed this too.  But an interesting result of Zero Momentum mode is that the bots move slower.  They can't cross the board in a few cycles like before.  This better models dry land environments where you have to pay for every inch you move.

Combine it with KE mode, or even better, Drag when it gets finished, and moving swiftly will be very cost prohibitive.  That should make finding time to mate easier (slows down the pace of life).

A max sized world with zero momentum and KE mode on becomes much more amenable to mating and taking a while to develop.  Might even be possible to write multibots that gestate their young.

Still, there really isn't any cover.  You might be able to use vegs to cover yourself in a veg rich environment.  If I get the env grid done you could dig a hole in the ground and mate and/or build children there.

Quote
By the way, this reminds me of the ND debate. You said you were going to add ND routines and a checkbox control to select for ND execution.Can I send you those routines to integrate in the next version?

Yeah, send them to me and I'll put them in.  BTW, did you give any thought to my suggestion of selecting which gene to execute from among the ones that would this cycle?  I did some research and thats how ND models seem to work.  They only pick a random direction at forks in the execution path.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Subfunctions
« Reply #16 on: June 09, 2005, 02:20:22 PM »
Quote
I'll start a separate post on junk DNA in "Biology" section so that we can discuss it there.

...

I am aware of this and I think I have a solution, but I don't want to talk about it yet to avoid going away from the original topic.
Good idea, I can hardly wait.   :boing:  :P

Offline Carlo

  • Bot Destroyer
  • ***
  • Posts: 122
    • View Profile
Subfunctions
« Reply #17 on: June 09, 2005, 07:22:35 PM »
Quote
BTW, did you give any thought to my suggestion of selecting which gene to execute from among the ones that would this cycle?

What do you mean exactly?

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Subfunctions
« Reply #18 on: June 09, 2005, 07:41:15 PM »
Quote
Quote
BTW, did you give any thought to my suggestion of selecting which gene to execute from among the ones that would this cycle?

What do you mean exactly?
Quote
Another way of thinking about a nondeterministic finite state machine is that whenever it has a choice, it "forks", or makes copies of itself at that instant in time, and each selects one of the paths forward. In this model, the accepting condition is that at least one of the resulting copies is in an accepting state when it stops.

NDFSM don't fork until a fork has been reached.

So first you evaluate all the gene's conditions.  Then you pick 1 gene from among all of them that evaulated to true to execute.

That is, there's no use trying to execute a gene that evaluates to false anyway.  In that case you've lost a cycle for nothing.  I wouldn't suggest this except I think it better follows the ND paradigm you're going with.

Offline Carlo

  • Bot Destroyer
  • ***
  • Posts: 122
    • View Profile
Subfunctions
« Reply #19 on: June 09, 2005, 07:45:15 PM »
Quote
So first you evaluate all the gene's conditions.  Then you pick 1 gene from among all of them that evaulated to true to execute.

That is, there's no use trying to execute a gene that evaluates to false anyway.  In that case you've lost a cycle for nothing.  I wouldn't suggest this except I think it better follows the ND paradigm you're going with.

I asked you because I ALWAYS proposed this model:

Quote
I'd like to propose again the non deterministic execution of genes. This means that only one gene should be executed per cycle. The gene to execute would be chosen randomly among the active genes, those which have true conds for that cycle.

 Probably my english is so bad that... anyway, the important thing is that we understood each other.
« Last Edit: June 09, 2005, 07:51:33 PM by Carlo »

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Subfunctions
« Reply #20 on: June 09, 2005, 08:18:10 PM »
Well then there you go!

:lol: