Okay, these are my thoughts on the original idea after I've had a chance to stew them over. Tell me if I repeat something already said and resolved.
1. Each substance should have a number assigned to it that's unique to that substance. For instance, the word carbs could be 51. carbs will always be 51, no matter the order it's in. So when you refer to carbs in the DNA, it is always translated as 51.
How's that different? sysvars, for instance, have a number assigned to them from a text file. What I'm proposing is that a number is assigned to a substance not from a text file, but from a function that gives a nubmer based onthe substance's name.
That should allow custom substances to be easily made and shared. No worrying about if your custom substance overlaps with anyone else's.
2. Enzyme array is not quite a good idea. In your system we search through all the enzymes and enlist the best ones, ignoring others that aren't as good. Here's what I would like:
Imagine you have a bowl of enzymes. All possible enzymes that a bot can produce are in this bowl. Now you add a substance.
All enzymes that can work on that substance do so, not just the best ones! This encourages multiple copies of good enzymes and deleting less good ones. If you have 5 copies of a good one and 1 copy of a bad one, the reaction is more likely to use a good one simply by chance. Real DNA does contain this kind of example of multiple copies of the same gene.
This stops the program from artificially biasing enzyme use by artificial criterion, such as 'best one for the job'. All the enzymes work at the same time.
I don't know a good answer to how to promote enzyme production though. Maybe all enzyme production is stimulated at once, so you begin producing the less efficient ones and the efficient ones. What this means is that less efficient ones have a opportunity cost but no penalty, meaning that a bot is encouraged to remove bad enzymes without penalyzing the bot for not doing so.
3. I agree full heartedly.
4. The purging was my idea in respect to the mouth purging it's contents to the stomach. Not hte same thing you propose here. Enzymes are like connection speed to the internet. Have more and you increase your bandwidth. But the larger your bandwidth the more you have to pay per month (or cycle in DB).
5. You should
not be able to directly say "I want this substance to be turned into that substance, and here's how I want to do it." That's very bad. Rather, I'd like enzymes to each know what they do.
These enzymes are always on, always working. If you want a stable reaction, you simple have as many A->B as B->A. Homeostasis. If you want a
net movement of A->B you simple produce more A->B than B->A.
You do that py specifying, in the DNA, a certain origin and final product, and the strength of the resulting net movement you want.
For instance, say I want to store energy as fat. I would do something like NRG FAT 100 strengthen (the command words are still open). This would go through all possible enzyme pathways, and for all that are part of some nrg->fat reaction (perhaps as an intermediary) it would produce more of those enzymes. The opposite is true too, you can weaken a reaction by doing something like NRG FAT -100 strengthen.
Okay now, say we did that, and their is now an unequilibrium.
nrg s turned into intermediary A.
Now, since A is an intermediary, all enzymes that do A-> something activate. If their are multiple paths possible, A follows all those paths. Like a large water pipe. If you have a split in the pipe, the amount of liquid going through each one is a function of the size of the split off pipes. The more enzymes a certain path has, though, the more A will go through those. Note that it is possible some A will turn back into nrg.
The point of this system is that the enzymes have no idea how A was created. They don't know what direction it's coming from, or where the DNA wants it to go to. It just does what it does. The DNA doesn't know what individual enzymes do, but it can encourage particular directions of net movement.
This is an object-oriented approach. Specifically, abstraction. I've mentioned that I'm trying to get bots in DB to be object oriented in design, but I realize not everyone know what I'm talking about.
Here's a wiki on it. If you still don't understand what I mean, ask a specific question(s) and I'll show you what I mean with an example.
That's what I would like. That keeps the DNA's command over the metabolism absolute, without muddying it up with the exact details.
The only problem: If I have A-> nrg and A->B->3 nrg, I need a way to decide which of these two to promote. Something as simple as a set of other keywords in the above command would be the ticket.
Like:
NRG FAT 100 strengthen
HighResult 10 favor
again, the exact keywords and DNA syntax is debatable. But the idea is that the DNA doesn't know how the enzymes are doing what they do, and the enzymes don't know anyhting about the DNA.
Also, it recognizes that different paths aren't necessarily 'better' than others. For instance, say I have a path for protein + nrg -> shell. Say one route is: nrg + 3 protein -> 2 shell and another is 3 nrg + protein -> 2 shell. Which is better? Well, it depends on the scarcity of the resources. If protein is scarce, you might be willing to spend more energy.
by using the favor keyowrd, you can define different paths to favor and by how much. HighResult could favor those reactions that give the most for the bang. MinimizeNRG might favor those reactions that take less energy than others. Etc. etc.
Again, the exact workings or paths of the enzymes are hidden from the DNA, and vice versa.