Okay, this is a really neat thing they've done. Here's what I've gathered from it (wow is this long):
1. There are some substances called 'metabolites' that cause the cell they're in to grow. In Darwinbots, this would be nrg and body. Not all metabolites cause a cell to grow, which means the cell must learn to form as much of these metabolites as possible.
2. As their cells grew, it diluted the concentration of metabolites in the cell, making the enzymes less effective. We can totally do this in Darwinbots. Larger cells will need more enzyme to get the work accomoplished.
3. Mutations would increase the rate constant of a single reaction of an enzyme at the cost of all others. The reverse is also true, decreasing the rate constant of a single reaction increased the efficacy of all others.
4. Enzymes cost metabolic money. So each enzyme must pull its own weight or be detrimental to the cell. In our system, we'd have somethig like each enzyme costs 1 nrg per cycle. (Likely less, but I think you understand my point).
This fits in well with the new idea of expanded cellular upkeep I've been playing with, where cells have to pay nrg per cycle for any body they have. (which I'll discuss in another thread if you're interested.
5. They assume that the early cell enzymes were general, one-size-fits-all in real life, that can metabolize anything and everything, and use that as the start of their model. This makes sense to me as a fine assumption to make. I can see possible arguments against this, but maybe we can play around and see what we come up with.
6. Now for the fun part: They have 7 basic "biochemical groups". These would be things like the hydroxyl group in real biology (-OH), etc. Metabloites are formed by combinations of these groups. Since there are 7 groups, there are a total of 2^7 metabolites, or 128. (If the reason its 2^7 escapes you, I can post further and explain).
From these 128 possible metabolites (I would assume even 0000000 is assumed as a metabolite (this is called X0 I think)) they picked 23 different metabolites at random and chose them as directly related to cell growth. In our sim, we'd just have to assign nrg and body, etc, a metabolite.
All reactions are assumed to transport these groups from among metabolites. Assume we define one metabolite as 0001100 (that is, there's only two groups, the 4th and the 5th). A reaction might take it plus 0011000 and form 0011100 and 0001000. One might be a useful metabolite for cell growth. The other might be a waste product.
This is the core of their system, and is something I can totally see working. Might be tricky with memory constraints, though. If we say that all metabolites break apart into their constituent parts outside of biological cells, this becomes less difficult. The memory goes from 128 integers per Egrid cell to 7 integers per egrid cell. Or maybe all but the standard metabolites in our system (nrg, for example) break apart.
We can figure that part out pretty easy I think.
7. They assumed that the environment was full of X0 and X127, that is 0000000 and 1111111, so there were pools and sinks for which groups could be manipulated. I don't know that we need to do this. Keeping the amounts of the groups constant could be alot of fun. Anyway, this part needs examination.
8. In the end they were able to form realistic looking metabolic hubs, with enzymes specializing over time. Very encouraging results.
Here's what their thing looked like in the end. marvelous. Note that not all metabolites are used:
9. Technical nitty gritty:
- Each metabolite has a random and prespecified free energy. Moving from one metabolite to another requires or gives the appropriate energy. Note that the free energy of a metabolite is largely independant of what groups it contains.
For our purposes, nrg would need to have a fairly large free energy.
- Enzymes work by accepting a specific group from one metabolite, and then transfering that group to another metabolite. They call these E(0) if the enzyme is empty, and E(1) if it's full. E(0) is actually the sum of all the enzymes of that type that are empty.
- They assume that any metabolite with a 0 in the corresponding group field is a possible candidate for acceptance of that group. Some of these reactions would be uphill endothermically speaking (that is, require energy) since free energy of metabolites can, and should, differ.
- They would have the numer of enzymes (that is duplication of an enzyme) be a mutation. I don't know how I feel about this.
- They assume a eponential (I think) tradeoff between specificity and function. That is, a enzyme that catalyzes 1 reacton is 4 times as effective (that is, 4 times the bandwidth, or is 4 times faster, whichever you like) than one that does 2.
I'm going to have to study their math. It's not hard, but the type is tiny...
And here's what I'm thinking for DB:
1. We set up 7 groups, 128 metabolites, and assign random free energy to them all. We pick one of the metabolites, one with relatively high free energy, as the metabolite to represent nrg. Likewise for the relatively few things we have in Darwinbots, like Body and maybe venom, waste, etc. The selection does not need to be a whole lot more than random.
The real problem is that a natural metabolic system will want to develop, and we want our chosen metabolites->existing DB things to be a natural grafting of two very different systems.
2. Each bot has a stomach with 128 slots, where it can store up to 32000 of each (or maybe we use longs and they can hold 2E9.) Metabolites take up volume (increase cell size and thus drag) and mass (making the bot heavier decreases the effect of forces).
Bots can expel metabolites one slot at a time, unless waste management drastically changes. Or maybe you have to expel all at once or none at all. We can discuss.
3. Enzymes are defined as 7 bits, just as in their experiment (I think that's how they did it). The number of enzymes should be dynamic and unbounded (other than 0 of course). Each enzyme costs nrg every cycle to maintain, or the cell dies/ enzymes die.
Each enzyme could metabolize N metabolites a cycle, where N is constant and fixed in the sim settings perhaps. Maybe 3 would be a good value.
Cells should have ways, wether voluntary or no, to dynamically change the number of enzymes in relation to environmental conditions. This is tricky, and I welcome ideas on how best this can be done.
4. Enzymes will, of course, mutate just as if it were DNA code. Maybe it'll have a new section in the mutations panel.
Shvarz or PY, would it be proper for me to ask the writer of the article for help on this, or maybe source code? I don't know the professional ettiquete on something like this. There is an email listed with the article...