Welcome To Darwinbots > Newbie

Chloroplasts

<< < (4/7) > >>

Botsareus:
The vertical line in the middle is 'average' light availability.

The first horizontal line from the top is the point where things are no longer 'average'
The second horizontal is when chloroplasts begin to hurt the robot.

Botsareus:
I am also about to send you a simulation I just activated that should show what happens to the following robot over time:


--- Code: ---cond
  *.chlr
  32000
  <
start
160 .mkchlr store
stop
cond
  *.nrg
  6000
  >
start
  50
  .repro
  store
  15
  .aimdx
  store
stop
end

--- End code ---

the .light sysvar was replaced with 32,000 for this experiment, the .light sysvar simply states how much 'light availability' is in the current simulation.

Botsareus:
The following is the result of the simulation I have just ran. It clearly shows robots gaining energy quickly until light limits are reached.

shvarz:
Sorry, I don't get it and the graph is not terribly helpful. Can we just take a simple case of feeding X energy per veggie and go through the logic (can use the math if you want to) of how that number gets used to figure out how much energy each bot gets?

From what I've heard it goes something like this:

X is somehow converted to total amount of "light" L (how?), then each bot gets its share of "L" based on how many chloroplasts it has (c) out of the total number of chloroplasts in the sim (C) =L*c/C

Is that right? Am i asking silly questions and all of this is documented somewhere? It should be.

Botsareus:
No, not a silly question at all. Not many people can look at a graph and tell right away what the formula for it is. Me included.

Lets say R is the total robot area. Lets say A is the area of the simulations field minus the shapes.

First thing that happens we calculate the simply value for light and store it in robots memory. Lets call that Ls.

Ls = R / (A * 0.85)

We multiply by .85 to account soft collisions in the fastest way possible. But that also means the value can go over 1 so we cap it at 1.

Ls > 1 : Ls = 1

What the robot actually sees in its DNA is the inverse of this value. Lets call this 'light' as it is called in the program.

light = 32000 - (Ls * 32000)

Finally we compute a more workable value for light. Just becomes easier to integrate.

L = (1 - Ls) ^ 2 * 4

Now we deal with each individual robot. There are many factors at play here such as is the robot in pond mode? Is the robot in sunlight? How strong is the sunlight? Is the robot feeding method based on body? etc. We get a Token of a calculation on all this values. Just like in the old system. Lets call this token T.

We divide this token by 3.5 because many people complained it was too overpowering. I mean who wants to bother to manually go back to there simulations and divide a number by 3.5 themselves right?

T = T / 3.5

Now we need a unit value of the amount of chloroplasts a robot has. Let us call that Cu.

Cu = c / 16K

Now we have to calculate what is the rate of adding chloroplasts, lets call that Ra.

Ra = (L * Cu) ^ 0.8 * T * 1.25

Now we have to calculate how much energy a robot is currently loosing by maintaining chloroplasts. Lets call that rate Rs.

Rs = (c / 32000) ^ 2 * T

Finally we calculate how much energy a robot is actually getting and store that into energy or body as defined by the slider.

E = Ra - Rs

(Slider calculations fallow)

It will be cool to get all of this properly documented using latex or another good formula editor.

A robot also looses some energy for creating new chloroplasts if defined in the costs.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version