Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - EricL

Pages: [1] 2 3 ... 151
Announcements / 2.44.01 Released
« on: November 29, 2008, 08:14:07 PM »
2.44.1 has been released.  The source code has also been posted.

There are very few changes between 2.44 and 2.44.1.  A few minor bug fixes is all, in the area of the species list on the options dialog.

Regrettably, this is the last and final release you will see from me.   For serveral reasons I will not go into, I am unable to play a role in DB development going forward.  My hope is that someone with the skill set and inclination to take over the code from here will emerge.  I will attempt to honor requests for assistance along these lines if they are sent to me as email.

You may still see me around the site occasionally, but most likely seldomly.

It's been an honor.


Bugs and fixes / Total freeze up with new speciation feature
« on: October 03, 2008, 11:03:22 AM »
You should be able to turn it on or off in 2.44.  2.44 should have no perf differences relative to 2.43.1M if this is off.   It should be off by default, but check on the Speciation dialog.  Objects->Species

Another perf optimization I thought of over night is that I don't currently ignore species where there is only a single subspecies.  That is, if you have a non-mutating species (with no virus infections of members) I can ignore speciation for that species since I already know they all have the same genome.  Would help where people run evo sims with non-mutating veggies or in IM mode where some bots mutate and others don't.

Bugs and fixes / Total freeze up with new speciation feature
« on: October 02, 2008, 02:25:32 PM »
Quote from: Numsgil
Could you spread the calculation over the full 100 cycles or whatever?  You might miss some bots that get killed or born in the interim, but you won't have it seem to freeze.

Not easily.  I'm maintaining an ancestor list 500 ancestors long for every extant bot.  The set of extant bots changes as bots die and are born.   I pretty much need the rob array locked while I do this.  

Doing the calculation involves finding the most recent common ancestor between every pair of bots in the species O(n*log(n)), calculating the distances and finding the max(s).    I can optimize the algorithm some.  One idea is do the comparisons using youngest bots first.  This allows me to ignore any extant direct ancestors since their generational distance will be lower.  I can't really do this for mutational distance though.

The biggest thing I think it just not to do it very often.  The auto-fork interval is configurable in the next drop.   There really isn't a need to check very often except for graphing and I'm working on graph-specific update intervals to address that.

Any ideas are of course welcome.

Bug reports / Darwinbots crashing with certain bot OPEN
« on: October 02, 2008, 12:18:59 PM »
Very nice find.  The bug is in the crossover code used for sexual reproduction.  I'm debugging now.

Bugs and fixes / Total freeze up with new speciation feature
« on: October 02, 2008, 12:13:50 PM »
How many bots?  How many species?  How long did it freeze?  Was the cycle count on a multiple of 100?  How about a sim?

If your going to file a bug and expect me to do something about it, it would help if you actually gave me enough information to do something about it.

It's almost certainly not frozen forever but on your machine, which I assume isn't the fastest, it might seem that way.  The work to decide if speciation should occur is very cpu intensive and it does block the sim while it is being done.  It is also very sensitive to the size of species.  For the same number of bots, if you have few species with a large number of members, it will take longer than a larger number of species each with fewer members.  On my fairly fast machine, it takes maybe 15 seconds (on a sim of 2000 members) to update the speciation graphs and/or do the work to see if speciation should occur.

In 2.44.1, the schedule for checking if speciation should occur is configurable.

Internet Mode Commentary / IM is getting interesting
« on: October 02, 2008, 11:32:32 AM »
Quote from: Moonfisher
I don't know if the alga minimalis in erics sim are infected with something, but in my sim it seems like the bots around the alge are enough to protect it against other predators.
They aren't.  I'm actually running a pre-version of 2.44.1 on my machine(s) that prevents veggies from getting infected with virus's when running in IM.  Viruses are too powerful in my opinion.  In IM at least, it strikes me as unfair that one can infect the all the veggies in a foreign sim.   The incoming nrg in certain sims may be such that veggies are supposed to be long lived and the eco-system may be adapted to that.  Infecting such long-lived veggies that essentially can't be killed is an enormous weapon, a sure way to insure everything in the sim gets infected no matter what.

Viruses are hard to see, hard to track, hard to watch speciate or compete as they change.  I'd prefer to tip that balance back towards viruses as a heterotroph to heterotroph weapon used by bots without veggy intermediaries.  Otherwise they essentially become the primary unit of evolution.  I'm open to opinions here of course, but inclined to do this.

Additionally, I plan to re-visit the whole infection paradigm soon.  I'd like to enable multi-gene viruses with a sequence-matching paradigm for infection targeting.  This would would provide a much more fertile ground for arms-race evolution of infection and resistance strategies between bots and viruses.

Darwinbots3 / Mutation protection
« on: October 01, 2008, 07:41:54 PM »
Quote from: bacillus
I think that, in real life as well as DB, these mutations are seldom seen because they are vital, eg. a bot that evolves a cancerous trait or can't feed anymore will, quite naturally, cease to exist in quite a short time frame.
Actually, you see it all over in nature.  It's one of the causes of codon bias and long repeat sequences.   I.e. Selection has favored coding of our DNA (in conjunction with replication machinery) in a specific way using specific codons and sequences over other synonymous codons and sequences, which by their very nature encode meta-data influencing the mutation probability of those sequences.  Many evolutionary biologists think that a large percentage of all mutations may be self-directed in this way by the genome.

DNA - General / The speciation autofork
« on: October 01, 2008, 04:01:31 PM »
Quote from: Testlund
I bet one may see that a lot in a new evosim, where bots can float around doing nothing for 30 M cycles just mutating. Maybe setting the sliders high in such a case might be a good idea?
Right.  Early in an evosim, or in any sim for that matter, every bot is essentially it's own species since there is no Most Recent Common Ancestor.   Until you have a functioning sim I.e. one where bots are reproducing and there is selection pressure and differential survival tied to genetics, the whole concept of species doesn't really apply.

DNA - General / The speciation autofork
« on: October 01, 2008, 01:14:57 PM »
A couple more points:

It takes a while for the ancestor information to accumulate.  If you try this on an old sim from an older version, the graphs and such won't be correct until the sim runs for awhile since the ancestor data wasn't maintained by releases older than 2.43.1M.

There's an issue with long-lived big berthas.  If a bot mutates or something such that it lives a long long time relative to it's relatives/offspring, it can get forked by itself into it's own species.  If you see new species getting created with only a single member, this is probably what is happening.

DNA - General / The speciation autofork
« on: October 01, 2008, 12:52:53 PM »
Start with everything at 100 and watch the graphs.  My experience has been that that is probably too low, but it will give you some speciation events so you can see how it works and all that will happen is that the new species will go extinct over time.

Note that the current release only tests for the conditions once every 100 cycles.  There is a significant perf hit to doing this, so if you enable auto-forking and your sim pauses for a few seconds every 100 cycles, that's why.  It will be every 1000 cycles (or perhaps configurable) in the next release.  The graphs are also expensive to calculate, so updating those too frequently will slow you down also.  I am working on allowing different update intervals for different graphs.  That will help.

"Proliferation" as I'm using it means "to reproduce or expand excessively".  You run the risk of forking species prematurely that have not really separated into groups if you set the levels too low (this is why the minimum allowed by the dialog is 10).  With too low a settings, the code may chop your single species into a bunch of little ones that are not really separate species.

General rule - don't enable auto-speciation with either Generational or Genetic Distance below 100.  Otherwise your species will get chopped up.

Suggestions / Allow unlocking of tie length
« on: October 01, 2008, 11:59:31 AM »
Sounds good to me.  There's a lot of history here though.  I know at one time anyway, some people felt strongly that hardened ties, once hardened, should not be able to be un-hardened.   As for me, I'm for this change.

DNA - General / The speciation autofork
« on: October 01, 2008, 11:10:49 AM »
Imagine a population of bots, all of the same species.  Ignoring new sim startup conditions or manual insertion of new instances of a species, by definition, all the bots in the species are related meaning that if you go back far enough, you will find a single, probably long deceased most recent common ancestor all the extant (meaning currently alive) bots share.  Think of the relationship between extant bots and their ancestors as a tree, with bots (extant or not) as the leaves and birth events as the vertices.

Extant bots will generally be clustered in this tree, meaning all the alive bots will be closely related to one another.   Said another way, if you look at all the bots that have ever lived in a species, most of them are long dead and the ones that remain are much more closely related to each other then they are to their long dead ancestors.  The alive bots are grouped in the tree space.
Just to complicate matters, there are actually two ways to measure the relatedness of bots: through mutations and through generations.  The sum of the number of mutations that have occurred along their lines of descent from their most recent common ancestor is the mutational distance and the sum of the number of generations that have occurred along their lines of descent from their most recent common ancestor is the generational distance.  Imagine two extant bots of the same species, A and B.  Say A and B have a common (probably long dead) ancestor C and that 30 generations occurred from C down to A and 20 generations from C down to B.   What's more, along that line of descent from C down to A, 12 mutations occurred and from C down to B, 10 mutations.   Well, if you add up the two lines of descent, the generational distance between A and B is 50.  The genetic distance is 22.

Within the population of extant bots will be two which are most distantly related.  That is, in the population of alive bots there are two which have the most dissimilar genomes (as measured by the number of mutations).  They have the largest genetic distance.  You can think of these two bots as being located on opposite sides of the group in the tree.  Similarly, in the population of alive bots there are two which are separated by the greatest number of generations I.e. two which have the largest generational distance.  Note that the two bots with the greatest genetic distance need not be the same two as those with the greatest generational distance, but that is a digression....

Speciation occurs when a species splits into two or more separate and independent groups in the tree that persist and evolve separately.   We measure this via the Maximum Genetic Distance and Maximum Generational Distance of the original species.   When the Maximum Genetic Distance and the Maximum Generational Distance of a species grows beyond a certain level and continues to increase over time, it is an indication that there are now two subgroups within the species that are evolving independently from one another.  They are diverging in genetic and generational space.  The tree has branched.  Speciation has occurred.

The dialog lets you set the thresholds for when this occurs I.e. when the code will recognize this and give one of the two subgroups a new species name.  If a specie's Maximum Genetic Distance and Maximum Generational Distance are both above the specified thresholds and the population of the original species is above the specified limit, then the simulator will split the species in two.  How it does this is another long subject but you end up with a new species that has the same name as the old followed by a random number with the two groups of bots of the original species split between them.  When this occurs, the graphs will show the new species and species level information can be tracked independently for the new species.  Note also that species level sysvars such as *.totalmyspecies will now be a function of the new species.

Darwinbots3 / Mutation protection
« on: September 30, 2008, 09:32:32 PM »
I favor an approach that is not tied to gene structure in any way such that any part of a gene, multiple genes, parts there of or any other sequence including non-coding sequences can be so decorated.  Hence my in-line suggestion in which the multiplier/de-multiplier itself is in fact a base pair.  In this way the mutation multiplier/de-multiplier itself can be subject to mutation and protected or increased mutation probability through its own decoration.

Darwinbots3 / Mutation protection
« on: September 30, 2008, 09:14:46 PM »
I love this idea.  I have loved this idea for years.  My very first DB post in the Newbie forum years ago was on this subject.

I favor a scheme where DNA can be decorated in some fashion, perhaps with in-line commands that increment or decrement the mutation probability for subsequent base pairs.  I would love to see a concrete and specific suggestion along these lines in the Suggestions forum and would give such high priority for implementation.  Such a discussion may already exist in fact if memory serves.  There has been much discussion on this subject in the past.

Darwinbots3 / P2P Internet Mode
« on: September 30, 2008, 08:04:32 PM »
Quote from: Cyberduke
My original thinking was really coming from the direction of combining multiple sim instances to achieve a distributed computing effect, in order to provide a larger more diverse environment for evolution to act upon.
This is exactly why (well, one reason at least) I implemented private teleporters.  Unlike the IM teleporter, inbound private teleporters do not randomly distribute incoming bots across the field.  Bots stay where the teleporter is.  It's a doorway for incoming bots just like outbound teleporters are an exit.   They can be made stationary, perhaps surrounded by shapes, to create different fiefdoms or whatever other effect you want or they can be made to drift, ignoring or respecting shapes as you like.  They can filter bots to restrict or allow veggies or corpses and such.  You can have multiple pairs connecting multiple sims in whatever topology you want.   And, it is on my list to unify shapes and teleporters to provide greater flexibility on size including making entire field edges themselves act as teleporters.  So you see, we think very much alike here...

Pages: [1] 2 3 ... 151