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.


Topics - shvarz

Pages: 1 ... 8 9 [10] 11
136
Dead-End and Solved Suggestion Requests / The feild shuffling
« on: April 07, 2005, 01:10:20 PM »
Can we remove the feature that moves the whole field around every N cycles?  I think everyone agreed it was a stupid feature anyway - so this is just a reminder.

137
Darwinbots Program Source Code / Movement
« on: April 06, 2005, 11:40:24 AM »
Can someone tell me how the movement is calculated for bots?  I know that .up and .down provide acceleration, but how do "movement factor" and "friction" are applied?  How are the values on "options" panel relate to the speed?

I assume that "gravity" and "brownian motion" simply adjust the position of a bot, without actually affecting it's speed, but I also would like to get some idea on how the values in "options" relate to the actual bot movement.

Thanks.

138
Off Topic / Graphs bug
« on: April 04, 2005, 02:00:30 AM »
I am leaving for a resort tomorrow :), which means that I don't have time to play around with the new version till Wednesday :(

Just FYI, Nums on how to get that graphs bug: start a new sim with mutations disabled.   This will make sure that "Average mutations" graph is completely empty.  Open "Average mutations" graph and then close it - it will casue error 6 (overflow) and crash the program.

As I mentioned before, the problem appears only when there is absolutely no information present on the graph (as in case described above), but it is bothersome to me: I often open and close several graphs in the very beginning of a sim, so that I can come back later and check on what was going on.

139
Off Topic / Good stuff about 2.36
« on: April 01, 2005, 02:17:58 PM »
So that it does not look like I am only complaining:

The best thing I've seen so far is the increase in speed.  On my home computer with "graphics" turned off, I get >2000 cyles/sec with ~50 bots.  That is AWESOME!

Second best thing is that all field sizes now work.  The possibility of running the sim at 96000x72000 is sweet :)  It is 100 times bigger than the size 1 screen! (we need to remove that limit on 2000 total bots.  Seriously)

140
Bugs and fixes / 2.36 bugs
« on: April 01, 2005, 12:01:22 AM »
1. "Snapshot" feature does not work anymore.  Program just freezes and can be shut down only through Ctrl-Alt-Del.

2. Population control does not work anymore.  I tried changing "Max energy" and "Constrain population", but they don't do anything.  Not to say this is bad, I was always for that.  But if we are feeding veggies at constant rate now, then the controls must go.

3. Checking/unchecking "toroidal" option does not allow "top/bottom" and "left/right" options - they are always blanked out.

4. "Pond presets" is always blanked out.

5. "Walls" don't work.  Although I have to admit they behave absolutely spectacularly :)

6. Old bug with graphs, where if the graph has only 0 values then the whole program crashes when you try to close the graph.

141
Off Topic / It's too quiet!!!
« on: March 31, 2005, 03:58:27 PM »
How was your day?

I came in early, read some DB and LJ, talked to my boss, spent 1 hour at a weekly meeting, worked for less than an hour, read some DB and LJ, had lunch.  Now I am going to read some DB and LJ and work some more...

142
Biology / Just some fun stuff
« on: March 27, 2005, 07:47:53 PM »
1.  Many plants have an interesting defense system against insects.  When they are damaged they release feromones attracting predatory insects, like wasps.

2.  Evolution of human brain was extremely rapid and involved multiple mutations in multiple genes.  It is estimated that for the last 300,000 years the average rate of fixation of mutations (related to brain function) in human population was 1 in 1000-2000 years.  And it is still evolving.  For example, at least one mutation appeared ~30.000 years ago and now is present in ~40% of all humans.  This is very recent history, considering the fact that our recorded history starts about 6000 years ago.

3.  Some predators have a mechanism to judge the aminoacid content of their stomachs in ~20 minutes (this is VERY fast).  If the amount of protein is not high enough, they puke it out.

143
Bugs and fixes / Options window
« on: March 25, 2005, 09:55:09 PM »
Here is to see what I see:
1. Open some program, say Word.
2. Open DBs, choose New simulations
3. With "Options" window open switch to Word
4. Switch back to DB

Result: Options window disappeared and went all the way down under other programs' windows.  To get it one has to minimize all other windows.

What needs to be done:  Keep the Options window in the program.

144
Specialization, Metabolism, Digestions and Env Grid / Metabolism v.1.0
« on: March 22, 2005, 10:37:19 PM »
OK, here is the description of first metabolism.
The goal of this post is not to iron out all the bugs, but to show you a system that is:
a) related to real chemistry and biology
B) backwards-compatible, allowing old bots to survive without too many changes
c) open-ended, allowing unlimited expansion (within reasonable limits)

So, let's start:

Look at the picture of catabolism.   You see different compounds linked by arrows.  Arrows are color-coded: green means ATP is produced, red means ATP is used up, black means no ATP is involved.  On this page high-energy compounds are destroyed to produce energy, untill all is left is CO2, NH4 and H2O (I don't keep track of H2O, it would be silly).  Each reaction is performed by its own enzyme.  For now we assume that bot has all enzymes necessary and they all work with equal efficiency.  Still, you say, how can an old bot use all that?  Well, destruction of any compound on this page can be activated by "break" command.  Just like this:

glucose
break

And old bots can just have a gene that constantly activates a bunch of such break commands.

This command will activate all enzymes that connect the compound in question (glucose) and final products of degradation (CO2) (in this case three enzymes are activated).  

Imagine that a bot just ate (and absorbed) a bunch of glucose.  Here is what happens next:

First cycle:  All enzymes in glucose-breaking pathway are activated.  They perform their actions simultaneously.  The last two enzymes don't do anything, because there is no substrate available.  The glucose-breaking enzyme takes a pre-determined amount of glucose (say 5) and converts it into 10 pyruvates, releasing 40 energy.  The pyruvates are not immediately converted to AcCoA, they just stay there till next cycle.  Total energy gain: 40.

Second cycle: 5 molecules of glucose are split again to get 10 pyruvates (releasing 40 energy) and the previous 10 pyruvates are converted into 10 AcCoA, releasing 60 energy.  Total energy gain in this cycle is 100.

Third cycle: 5 glucoses are converted to pyruvate (+40 energy), 10 pyruvates are converted to AcCoA (+60 energy) and 10 AcCoA are converted to CO2 (+ 120 energy).  Total energy gain in this cycle is 220.

After that the bot will receive 220 energy every cycle until all glucose is exosted.
All this is done with just one command: "glucose break".  So I hope I convinced you that digesting stuff will be very easy and straightforward.  Now, a smart bot might improve on this strategy in a number of ways, but we'll get to that later.

With me so far?

Now let's turn to anabolism.  All these reactions are performed by enzymes that are activated by make command.  It works just like break command in the sense that it activates all enzymes connecting the molecule in question and the most basic compound.  You were expecting CO2, wern't you?  Well, only plants can reduce CO2 to anything useful, so that reaction is hooked up to photosynthesis (we'll talk about it in a bit).

Another thing that is worth mentioning about anabolism is the huge arrow from am.acid to protein.  It takes 1200 energy to create a protein!  We need a system that would provide quite an advantage to protein-making bots...

We are getting close to the end.  Another graph that I want you to look at is this one.  It summarizes both catabolism and anabolism in one scheme.  Numbers next to arrows indicate how much ATP is produced or taken up.  Also here I added photosynthesis.

Now, photosynthesis does not actually involve creation of new molecules.  It is a series of proteins that transfer electrons to each other, generating H+ potential on a membrane.  That potential can be used two ways - directly to generate energy or to reduce CO2 and form carbohydrates (glucose).  To keep things simple we'll pretend that some molecules are being made during photosynthesis and that these reactions generate energy.  Notice that only the last step produces energy.  This is made so that only bots that have all of the photosynthetic enzymes are able to use light to generate energy.  In addition, photosynthesis is not regulated by break/make commands - it happens automatically (not to say that it cannot be regulated).

Fun fact: Some of you may have noticed on this last graph a cycle of "glucose-pyruvate-AcCoA-succinate-glucose", which seems to be generating energy for free.  Well, it is not.  At the end of this post I'll put all the stochiometry of reactions and those of you who are bright enough may figure out how this works...

OK, I hope I have shown you the biological relevance, ease of use and backward-compatability.  What about open-endedness?  Well, it is very easy to add reactions to this system.  For example we'll add something like "silicon -> silicon shell".  Just another two molecules and one more enzyme.  But it is even better - we can insert new reactions between existing ones!  Beacuse make/break system activates all intermediate enzymes, it will activate the new one as well (as long as bot has the enzyme).

The final part is about regulation:

Regulation is the bread and butter of metabolism.  Luckily, make/break system does not allow futile cycles (cycles where a molecule is made and broken down simultaneously is called futile, because it does not result in any molecule being created and just wastes energy).  But we need more.  And hopefully several different approaches, so that bots can mix and match.  Here are some of my ideas:

1. Consecutive break and make command over-write each other.  So if bot says

glucose make
glucose break

then the final result is the breaking.  We can also have "keep" command (from keep constant).  The command would cancel activations of all enzymes leading to formation or degradation of a molecule.

2. Making more enzyme increases the throughput of reactions.  I am not sure how to the enzymes are going to be created.  One possibility is to allow enzyme creation from DNA (mkenzyme command or something).  Another is to have counters of how often the existing enzyme is not enough to process all of available substrate and increase the amount automatically when the counter reaches 10.

3. Efficiency of enzymes (terminal three-bit idea from Nums).  The efficiency may be coded in the terminal three bits of enzyme activation system.

4. Bundling enzymes in complexes should increase efficiency and may allow passage of several steps in a single cycle.

5. Some enzymes may remain active for several consecutive cycles (could also be coded in terminal bits).

Well, this is it.  Thank you VERY MUCH for reading the whole post!  I am sure there will be tons of suggestions, questions and comments.  They are certainly welcome!

P.S:  Here are the promised stochiometries of reactions:

Catabolism:
CARBS
Glycogen = 15 glucose
starch = 8 glucose
glucose = 2 pyruvate + 8 ATP
pyruvate + 1.5 O2 = AcCoA + CO2 + 6 ATP
AcCoA + 2 O2 = 2 CO2 +12 ATP

FAT
fat + ATP = fatCoA
fatCoA +7 O2=8 AcCoA + 35 ATP

PROTEIN
protein = 8 am.acids
am.acid = pyruvate + NH4

Final summary of how much energy you get from each type of food:
1 fat = -1+35+8x12=130
1 protein = 8x6+8x12-4x3=116
1 carb = 8x36=288

Anabolism:

CARBS
2 pyruvate + 12 ATP = glucose
2 AcCoA = succinate + 3ATP  
2 succinate + 4 ATP = glucose + 2 CO2

FAT
8 AcCoA + 49 ATP = fat

PROTEIN
8 am.acid + 1200 ATP = protein
am.acid = pyruvate + NH4
NH4 + pyruvate + 3 ATP = am.acid
N2 + 16 ATP = 2 NH4

Photosynthesis:

12 H + 6 CO2 = glucose + 6 02

145
Biology / Black smokers
« on: March 22, 2005, 12:53:44 AM »
It seems like the whole black smokers idea is not going to work.  At least I don't see a way to do that.  Here is why: we can't model all the fun stuff about them.

The bacteria that live near black smokers use the released H2S or plain sulfur (S) as a source of energy.  They basically burn the stuff using oxygen.  What comes out is sulfuric acid H2SO4.  The concentration of acid is so high that sometimes it creates pH of 1.  Maybe later we'll model the effect of acidity on bots, but for now we don't have that.

Then there is the issue of oxygen.  The problem is that H2S will react with O2 on its own, without any bacteria.  So the niche for bacteria is very narrow - the area that still has a lot of H2S but already has some free O2.  We don't have a way to deal with gas pressures and chemical reactions within env. grid for now. So that has to go either.

So, what can we model?  We can model a molecular source of energy that has a steep gradient.  That's all.  If you guys want that - it is very easy to add.  But it is not going to differ much from being just another energy-rich molecule, except for a fancy name.  Having a single unlimited source of glucose would give the same effect.

So I say we postpone the black smokers idea for a while, until we get effects of temperature, pH, and spontaneous chemical reactions incorporated into the program.

What do you think?

146
Suggestions / New molecules vs new properties
« on: March 20, 2005, 07:02:52 PM »
Following my own advice, I create this topic to discuss the following possible change:

With metabolism coming, we can substitute some of the functions that we had before with actual molecules.  Here is an example:

now we have "shell", it is simply created by spending energy and protects bots from incoming shots

in new system we can have many different types of molecules that provide the same "shell" function: we can have shells made of silicone, calcium, proteins, carbs.  From carbs we can make two different kinds of shells: chitin (for insects), cellulose (for plants).

Maybe we can drop the "shell" molecule out and replace it with variety of different molecules that provide "shell"?  Some of these molecules (like cellulose) may be even digestible, but it would take a long time to digest them.  To me this sounds like a way to go, but a lot of people have bots thay rely on making shell and that would make those bots non-operational.  So I'd like to hear from them.

Another feature that can be replaced is "waste".  At this point in metabolism that I designed, the waste directly corresponds to a single molecule - urea.  But maybe later we can have different kinds of wastes.  So maybe we can also make "waste" to be a property of molecules, its harmfulness.  Some molecules will be less harmful, some more and it would be upto bots to figure out which ones it is worth to dispose off.

147
I am working on designing a metabolism for DBs.  I am going to stick my head out and guess that my make/break system together with Nums' enzyme systems will be accepted and coded into the next version, allowing all this metabolism to happen in DBs.  So I am asking here, what molecules do we want to have in metabolism at this point? (remember, the system will be open-ended and will allow to easily add more molecules later).

So far I have included steps for making the following molecules from energy

1. Fat (good energy-strage compound)
2. Carbs (good energy storage, but take up a lot of space)
3. Protein (cost a lot, poor energy recovery, but allow creation of muscles, enzymes, venom, poison, shell and slime)
4. Production of urea or "waste"

I am also planning to add the following things:

4. Photosynthesis reaction
5. Creation of muscles, enzymes, venom, poison shell and slime

I've heard suggestions to add lignin, cellulose, chitin.  I am not sure about the usefulness of that.  These are all analogous to "shell" in their properties and we already have "shell" molecule.  I see a possibility of making "shell" a property of molecules (instead of it being a molecule itself).  Some molecules would provide a lot of "shell" (chitin, lignin, cellulose), others - little or none at all (fat).  So the total "shell" amount is counted from all molecules that bot has and then is used to deter incoming shots.  Please don't discuss this in this thread, make a separate one.

I also know that many people want to have anaerobic energy-producing reactions.  I can add that, but please realize that these reactions are very inefficient.  For example, if you break down glucose in aerobic conditions - you get ~120 ATPs.  But if you break down glucose in anaerobic conditions, you only get 2 ATPs.  This means that all your anaerobic-style bots will be barely alive.

148
Off Topic / My apologies
« on: March 19, 2005, 03:40:52 PM »
to anyone who's ideas were criticized in my posts.  I am a scientist and in scientific community criticizm is something people want to hear.  If someone took the time to listen to your ideas, think about them and formulate coherent criticism, then that person made the best possible compliment to you - he actually considered that your work is important enough to spend his time on.

Sometimes I forget about this peculiarity of my life and take it for granted.  And then something reminds me that for most other people criticism is something to avoid and they feel offended when criticized.

So, I apologise to anyone who feels offended by my criticism of their ideas. :)

149
I figured I'd post this separately for people to discuss:



here is one way to do it.

Infinite (almost anyway) kinds of enzymes defined in hexidecimal bit patterns and stored in a pattern at the end of the DNA. User programmable and mutates.

At the start of the sim or when a robot is born, the list of enzymes contained in the pattern is scanned into the robots enzyme array and all present enzymes are turned on for that robot.

The robot shoots normally.

It diverges into two different possible systems at this point.

Method 1

   1. Enzymes in stomach
   2. Undigested food comes back in the returned -2 shot.
   3. If the necessary enzymes are present the food is digested automatically else they are added to the waste of the robot and need to be pooped.


Method 2

   1. Enzymes in shots.
   2. All enzymes possible for this robot are present in the shot that it fires.
   3. Target bot is partially digested by the shot provided that the correct enzymes are present in it, and according to their efficiency rate.
   4. Returned -2 shot contains energy just like it does now.
   5. Energy goe into a storage stomach where it is slowly absorbed by the robot. Excess energy is lost to the e-grid as waste or heat or anything we like.


No direct DNA control at all. Everything behind the scenes and fully automated yet also able to evolve with successive generations.

150
OK, I worked out the system.  It is very easy to start using, it requires only small changes in existing bots and will be completely backwards-compatible for any bot that is designed with metabolism in mind.  Even if we change the metabolism pathways a lot in the future.  The system is very intuitive, so can be picked up quickly by anyone.

This is very general description, I don't want to go into details and balances.  If you have doubts - ask "how will this work" and I'll explain.  

Finally, this is a summary of many ideas from different people, so don't blame it all on me :)  But do praise me a lot :)


1. We make a molecule array.  Things like venom, poison, fat and energy are now referred to that array instead of usual memlocs.  The molecules can also be addressed as numbers (not by name).  I'd say 256 slots should be enugh.

2. We make an enzyme array.  The enzymes Nums desribed are processed only once, when robot is created (or born) and those found will have 1, those absent - 0.  This is minimal level of enzyme and it never gets lower.  The amounts can go up automatically or bots can make them through DNA.  Enzymes are slowly decayed (but never below 1).  I'd say we'll need 2048 slots for enzymes.

3. Molecules are divided into two types - terminal and intermediate.  In a chain of A>B>C>D, A and D are terminal, while B and C are intermediate.  Terminal molecules are not acted upon unless there is a command from DNA.  Intermediate molecules are automatically processed, but this processing can be overriden by DNA commands.  Only terminal molecules are passed over during feeding.

4. Stomach size is defined by the total number of enzymes.  Its content  is purged every N cycles, which is also defined by total number of enzymes (the more enzymes the longer food stays).  Molecules from stomach are transferred to bot at the rate corresponding to the number of specific enzymes they have (no DNA commands here).  If there is no enzyme, the molecule is not absorbed but is dropped into env. grid (not as waste, as molecule) during purging.

5. Digesting is done by DNA command.  All you need to say is molecule's name (or number) and "break" command.  The program checks if bot has that molecule and if it has appropriate enzymes and will convert the molecule to energy.  The rate of conversion is proportional to the amount of specific enzyme bot has.  The program actually runs the broken molecule through intermediates, but bot does not have to see this.  Digesting can be improved by specifying the path of digestion.  The most efficient way is to spell out each and every step in DNA - then bot can get more energy and it can get it faster.

6. Same goes for making molecules.  All you need to say is molecules' name and "make" command in DNA (no more store commands here).  Program will do it for you.  But you'll be better if you spell out the path.

Pages: 1 ... 8 9 [10] 11