Author Topic: Version 2.42.6 Released  (Read 12522 times)

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Version 2.42.6 Released
« on: June 14, 2006, 04:57:30 PM »
Version 2.42.6 is now available!

Direct Download Link.

Major Changes / Features (in no particular order):
Perf: Poff shots now ignored for collision detection purposes
Shots now bounce off field edges
Postive values of shootval are now Mod 1000
Negative values of shootval are now Mod 7
Graph readability improved
Several bugs and usability issues with high fluid density sims addressed
New Incoming Energy Management features
New Dynamic Cost Adjustment features
New Feature - option to disable shot decay
New Feature - option to disable dynamic bot radii
New autosave features for stipping mutation details and re-using old files to prevent filling up the drive
.delgene now works
Touch senses (.hitdx, etc.) now work
Postive shots now only cost the shot cost instead of the .shootval amount
Perf: Shot collision detection now uses quadratic equation algorithym
Perf: Additional improvements in shot array manipulation
Several fixes for crashing bugs
Numerous fit and finish improvements.

A detailed list of the changes from version 2.42.5 can be found here.

A few words about 2.42.6.
This is a significant release with many new features focused on evo sims.  All of the bugs identified here should be fixed except for the virus related issues which will be addressed in the next release.  Many thanks to Elite, Testlund and others for their help in identifying bugs and their comprehensive bug reports.

The new features on energy management should provide good control over the energy coming into a sim via autotrophs as a function of the total sim energy.  The total sim energy as reported in the tray includes all nrg and body in bots as well as nrg in -2 shots.  It does not include energy that has been converted to shell, venom, etc.  The nrg ratio displayed in the tray shows the net energy which enterred or left the sim in the previous cycle and should give you a good feel for the rate that energy is enterring or leaving the simulation.

Nrg enters a sim smoothly via autotrophs or discontiniously via new bot creation events, such as autotroph repopulation or when the user manually inserts bots.  If you want to avoid large jumps in energy inflow from one cycle to the next, you will want to set the starting energy for your autotrofs low or design yoru sim so that repopulation events are rare.  Otherwise, each repopulation event will result in large, discontinious injections of energy.

Nrg leaves a sim through a wide variety of means, the largest being decay of -2 shots which fail to impact a bot.  If you wish to run an evo sim where energy is mostly conserved, the new Disable Shot Decay feature is for you.  It prevents decay of all shots, making them last until they impact a bot.  This also results in a "messy medium", in some ways more representative of biological protozoic organism environments.  This will plug the largest vehicle for energy leaving the simulation, but may result is a large number of shots (see the shot counter in the tray) and have an adverse impact on cycles/sec.  Using no decay corpose mode will further limit energy loss (in the form of energy converted to body decaying or disappearing from the sim).  Note that energy will still leave the sim via costs, bots dying with positive amounts of resources origiginally requiring nrg to produce (such as shell or venom) decay of resources such as slime over time, and several other sources of built in internal energy conversion losses.  With the new featrures, these should be quite manageable however for those seeking energy balance in evo sims.

The new dynamic costs features are another new feature area focused on evo sims.  There are really two features here that can work independently or together.  The first turns off all costs if the bot population (all bots, autotrophs and hetertrophs and corpses and even walls I think) drops below a user defined threshold.  The costs stay 0 until the population climbs back above the threshold.  This safty net feature can be used to prevent massive extiction and save a delicate sim from going extinct in the middle of the night.  

The second feature is more exciting.  It dynamically adjusts the costs based upon a user specified target bot population.  This can be very useful if you wish to incerase the selection pressure over time as bots evolve for example.  The algorithym is a little complex, but basically, a cost multiplier is applied to all costs and this multipler is ratcheted up if the bot population remains over the target population by more than 10% and rachets down if it remains below the target by more than 10%.  The sensitivity slider impacts how aggressively the costs are adjusted.  Check out the Auto Costs Graph to see how this changes over time.

The two can be used to gether for null evo sims where for example, the 0 cost threshold can be set above the starting population so that costs remain 0 while the population has yet to evolve a replicator, but once the population starts climbing, costs can slowly and automatically be increased, providing selection pressure to evolve say, feeding behaviour or some other energy aquisition adaptation.  Combine this with incoming energy management and you can provide selection pressure for evolving better means for competing for a limited resource.

The entire subject of energy and populatuion management w.r.t. evo sims deserves a separate write up which I may get around to some day.

Enjoy!
« Last Edit: June 14, 2006, 05:02:58 PM by EricL »
Many beers....

Offline S.o.G.

  • Bot Neophyte
  • *
  • Posts: 10
    • View Profile
Version 2.42.6 Released
« Reply #1 on: June 14, 2006, 06:22:59 PM »
Wow, great!

I'm totally obsessed with Darwinbots now. Work suffers

How do the day/night cycles interact with pond mode light gradients & nrg/cycle? Is there a description of this somewhere?

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Version 2.42.6 Released
« Reply #2 on: June 14, 2006, 06:56:39 PM »
Quote from: S.o.G.
I'm totally obsessed with Darwinbots now. Work suffers

Yea..... tell me about it...  

Quote from: S.o.G.
How do the day/night cycles interact with pond mode light gradients & nrg/cycle? Is there a description of this somewhere?

No description on the recent features, so here you go.  I need to put a lot of stuff on the wiki...

So, the way the new stuff works is as follows:  day/night cycles (which isn't new) causes the sun to come up and the sun to go down, with a frequency of 2X what you specify, right? (I.e. Day lasts X cycles, Night last X cycles).  When the sun is up, each autotroph gets the energy specified per cycle (or whatever other method your using).  If your using pond mode, then the energy each veggy receives each cycle the sun is up is proportional to the Intensity you specify and inversly proportional to the bot's depth and the sendiment level you specify.  The two new features override the sun.  If the sim energy falls below the threshold you specify, it forces the sun up even if it is night, until the energy of the sim gets above the threshold again.  Vice versa for  forcing the sun down even if it is daytime.  Note the sun will be forced down even if you are not using day/night cycles.  Note also that if you are using day/night cycles, then the spinning of the planet is stopped and "put on hold" while the override is in effect.  I.e. if you have 100 cycles left to go before dawn and the override forces the sun up because the sim energy fell below the threshold, then once it brings the sim energy back up, it will go night again and you will still have 100 cycles to go before the normal dawn.

Oh, and the nrg delta is just the difference between the nrg in the sim this cycle and the average of the past 10.  It doesn't care how the energy came in or how it left.  It just shows what changed.  So for example, you can make the delta go up a lot just by manually adding a whole bunch of bots, autotrophs or not, and the delta will show positive that cycle even if it is night time becuase the total sim energy when up compared to the average of the past 10.
« Last Edit: June 14, 2006, 07:04:30 PM by EricL »
Many beers....

Offline Elite

  • Bot Overlord
  • ****
  • Posts: 532
    • View Profile
Version 2.42.6 Released
« Reply #3 on: June 15, 2006, 11:01:41 AM »
This version is brilliant  

The new features are very interesting. Allow for much more control over evosim dynamics.

Well done Eric  

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Version 2.42.6 Released
« Reply #4 on: June 15, 2006, 11:46:59 AM »
Quote from: Elite
This version is brilliant  

The new features are very interesting. Allow for much more control over evosim dynamics.

Well done Eric  

Thanks Elite.  I can't tell you how nice it is to be able to write some new code for a change instead of just fixing bugs...
Many beers....

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Version 2.42.6 Released
« Reply #5 on: June 15, 2006, 01:20:57 PM »
I should probably explain the autocost multiplier adjustment algorithym.

All costs you specify get multiplied by the autocost multiplier as they are applied.  This multiplier is the number displayed in the tray as CostX.  It is also grpahed in the Auto Costs Stats graph.  All prior program versions can be thought of as always applying a multiplier of 1.  Similarly, if the 'Enable Dynamic Cost Adjustment' checkbox is unckecked, the multiplier is fixed at 1.

The multipler can change cycle to cycle.  If the total bot population (including vegs, corpses, walls - we may want to change this to only extant hetertrophs in subsequent releses) is within 10% of the target specified in a given cycle, no change is made.  The multiplier stays at whatever it was the last cycle.

If the bot population is above the target by more than 10 % then the multiplier is increased if
      1) The bot populatuion this cycle is greater than it was last cycle
 or  2) The bot population has remained the same for 10 cycles.

Note that if the population is falling, it is moving towards the target and thus in the direction we want.  So, even if it is above 10% of the target, the multiplier will not be further increased as long as the population continues to move towards the target at a reasonable pace.

The converse happens when the population is more than 10% below the target number.  Namely,

If the bot population is below the target by more than 10 % then the multiplier is decreased if
      1) The bot populatuion this cycle is less than it was last cycle
 or  2) The bot population has remained the same for 10 cycles.

The amount the multipler is adjusted is a function of two things:

      1) Tthe sensitivty slider.  The slider is a value from 1 to 1000.
      2) How far out of the target range the current population is.

Specifically, the multiplier is adjusted usign the following formula:

(0.0000001 * (Abs(AmountOff) - TenPercent) * sensitivity

Where

AmountOff = the difference between the current population and the target number
TenPercent is 10% of the target value.

An example is called for.  Lets say the target population is 1000.  Then the "target range" is 900 - 1100.   If the population is in this range, no changes will be made to the multipler.

Lets say the multipler is currenty at 0.5 and the sensitivity slider is in the middle at 500.  This means that all the costs are currently being multplied by 1/2.  Life is easier in the sim then it would be if you were not using Dynamic Cost Adjustment.

Now lets assume some new adaptation occurs and the population grows to 1200 in a single cycle (unrealistic, but lets go with it for the purposes of this example).

Then AmountOff = 1200 - 1000 = 200

The multiplier would be increased by 0.0000001 * (200 - 100) * 500 = 0.005 that cycle.  

The new mutplier would be 0.505, increasing costs slightly, providing pressure for the poipulation to come down over time.

The last thing that needs explaining is what happens to the multiplier if the populatiuon falls below the "No Costs" threshold.  If you have this checkbox enabled, adn the population falls below the indicated level, then the multipler gets set to 0 and it will stay at 0 until the bot population comes back up and rises above 10% over the target number at which point it will start increasing as above.  Ramping the costs up slowly like this allows for evo sims to apply costs slowly as populations build or let populations recover after a mass extinction.  Can you say "Adaptive Radiation?"

It is an interesting question as to whether the multiplier should be allowed to go negative.  Right now, it is prevented from doing so, but I'm open to input here.
« Last Edit: June 15, 2006, 01:33:25 PM by EricL »
Many beers....

Offline PurpleYouko

  • Bot God
  • *****
  • Posts: 2556
    • View Profile
Version 2.42.6 Released
« Reply #6 on: June 15, 2006, 02:36:38 PM »
OK I give up. Where have you put the control that enables bouyancy in pond mode?  

My Alga Stratificus doesn't float up and down with day and night cycles any more.
There are 10 kinds of people in the world
Those who understand binary.
and those who don't

:D PY :D

Offline PurpleYouko

  • Bot God
  • *****
  • Posts: 2556
    • View Profile
Version 2.42.6 Released
« Reply #7 on: June 15, 2006, 02:38:55 PM »
And corpses no longer shoot in random directions or sink to the bottom.  
« Last Edit: June 15, 2006, 02:39:24 PM by PurpleYouko »
There are 10 kinds of people in the world
Those who understand binary.
and those who don't

:D PY :D

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Version 2.42.6 Released
« Reply #8 on: June 15, 2006, 02:43:46 PM »
Quote from: PurpleYouko
OK I give up. Where have you put the control that enables bouyancy in pond mode?  

My Alga Stratificus doesn't float up and down with day and night cycles any more.

I don't think 2.4X has ever had such a control.
Many beers....

Offline PurpleYouko

  • Bot God
  • *****
  • Posts: 2556
    • View Profile
Version 2.42.6 Released
« Reply #9 on: June 15, 2006, 02:59:38 PM »
WHAAAA.....????  

How many more fundamental things were not ported over from 2.37?

I think you should go take a look at 2.37 and play with it for a while to see the things it has that apparently 2.4 doesn't.

The entire concept of pondmode is rather meaningless unless stuff can float in the water. I implemented it as a side-on view into a watery world like a pond or a fish tank. Many of my robots use the .setboy controls to use the *.depth to their advantage.

Alga Stratificus floats to the surface in the day time and sinks to a depth of about 4000 at night so that robot shoals have to adapt to this in order to feed efectively.

Corpses have a bouyancy value of -2000 so that they sink to the bottom of the pond and make a rich organic ooze layer in which other robots (particularly bottom dwelling veggies) can grow. That is the reason for the corpses to be able to select decay mode. The waste feeds the bottom veggies.

You are doing a great job with 2.4 but the number of things that have been lost in the transition from 2.37 just make me sad.  

And there is one more weird thing that I discovered in a sim with Alga Stratificus and Anon Terrifica. When Anon feeds (very small bot) it sucks energy from the veggie very slowly, giving the tie time to contract to what appears to be zero length. Anon ends up right inside the veggie almost every time.  
There are 10 kinds of people in the world
Those who understand binary.
and those who don't

:D PY :D

Offline Elite

  • Bot Overlord
  • ****
  • Posts: 532
    • View Profile
Version 2.42.6 Released
« Reply #10 on: June 15, 2006, 03:09:32 PM »
Hey PY, set the collision elasticity all the way to 'marbles' so that bots don't pass through each other, and check the 'disable dynamic radii' to remove the dynamic sizes. It should look a lot like 2.37.6

And I agree, buoyancy should be ported over
« Last Edit: June 15, 2006, 03:10:05 PM by Elite »

Offline PurpleYouko

  • Bot God
  • *****
  • Posts: 2556
    • View Profile
Version 2.42.6 Released
« Reply #11 on: June 15, 2006, 03:17:57 PM »
Quote
Hey PY, set the collision elasticity all the way to 'marbles' so that bots don't pass through each other, and check the 'disable dynamic radii' to remove the dynamic sizes. It should look a lot like 2.37.6

Yeah I know that.
The issue I'm referring to is that the tie seems to be shrinking rather than staying the same length.
Eric said the ties should stay at the length they started out at but that isn't what is happening. They get steadily shorter in this sim.
There are 10 kinds of people in the world
Those who understand binary.
and those who don't

:D PY :D

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Version 2.42.6 Released
« Reply #12 on: June 15, 2006, 03:20:13 PM »
They are probably trying to change to the "default length" when they harden.  Should I make ties harden at the length they were initally created at?
Many beers....

Offline PurpleYouko

  • Bot God
  • *****
  • Posts: 2556
    • View Profile
Version 2.42.6 Released
« Reply #13 on: June 15, 2006, 03:24:07 PM »
Nope. that isn't what's happening.
Anon terrifica is way too primitive to try that. It was designed as a straight forward, slow moving, slow feeding tutorial bot that I made up on the spur of the moment to demonstrate a few features in 2.3 something.

It just fires 'em and sucks though 'em with nothing fancy like changing lengths.
There are 10 kinds of people in the world
Those who understand binary.
and those who don't

:D PY :D

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Version 2.42.6 Released
« Reply #14 on: June 15, 2006, 03:41:42 PM »
Right, but after 20 cycles, the tie hardens and the bot becomes multi.  I hope I undertand this and got it right.

At that point, I think my code is changing the tie length to 200.  The "they" in my post above refers to the ties, not the bots, refering to my tie code adn what I think it is doing wrong, not to the bot's use of .tielen.
« Last Edit: June 15, 2006, 03:43:10 PM by EricL »
Many beers....