Darwinbots Forum
Code center => Suggestions => Topic started by: Endy on September 18, 2005, 09:34:56 PM
-
Could you keep the veggies from generating pwaste? I've been playing with my little veggie waste tie feeders and keep seeing their food vanish(some of them even killed themselves while waiting to eat :wacko: ).
Do vegs generate waste themselves?
Thanks Nums for massivly editing the new wiki.
-
My pleasure. Got sort of sick of it near the end though.
At some point I'm going to go through and redo all the waste code. It's just not uniform at the moment.
I'll probably make it so that for every 1 nrg you spend, you generate 1 waste (or maybe every 10 nrg. Anyway, something like that. Maybe user definable). And waste and pwaste will be/are being split between child and parent like nrg and body are.
-
I know the feeling. Transfering page after page sucks. After awhile I just began rewriting them to make it more fun.
Do any of the new enzymes allow waste digestion? I think we mentioned it but not sure what actually came of it.
-
I don't even remember. I think I sort of have an idea of how I want to go about it, and I'll probably allow waste to be digested...
-
I don't even remember. I think I sort of have an idea of how I want to go about it, and I'll probably allow waste to be digested...
What's the point of waste then? I mean, they call it waste because it is just that: waste, useless...
Digestable waste will lead to make-your-own-waste-then-eat-it-bots, I think.
I am not in favor of digestable waste. But then again, I'm no programmer :)
I hope you don't take my complaining too personal... :P
Henk
-
In the real world one creature's waste is another's lunch buffet. Even more so when you include plants into the equation.
What we need to do is have various different nutrient --> energy + waste pathways that are possible and to some degree mutually exclusive so that no creature can eat its own waste.
The enzyme specialization methods discussed way back will take care of this by only allowing a small number of the total available enzymes to co-exist within any given bot.
-
But how do you think something up, so a bot dont use its own waste from producing energy to produce new energy. Do you know what I mean? How are you sure on that only specific enzymes can co-exist?
-
I'm thinking along the lines of PY. You can digest your own waste, but by doing so you'll be less efficient at digesting real food.
I'm thinking something like:
Every nrg used up produces 1 waste. 10 waste can be digested into 1 nrg. Permanent waste (remember that, right?) cant be digested or transmitted (as it is now) and is generated by waste that isn't expelled (which would be different.)
Like every 10 cycles 1% of the total waste in the bot becomes permanent waste. This would mean that bots that eat waste would generate permanent waste faster, which might not be a good thing...
-
But how do you think something up, so a bot dont use its own waste from producing energy to produce new energy. Do you know what I mean? How are you sure on that only specific enzymes can co-exist?
I don't want to go into too much of this again but just imagine the following. (this is a very simplified model)
There are two types of food X and Y
A bot eats some food of type X
The bot has 10 possible slots for enzymes to exist in.
Each type of enzyme has a specific efficiency factor for converting either X or Y into energy with a small percentage being converted to waste.
Each enzyme has a maximum efficiency rating of 9.9% food --> energy and 0.1% food --> a different nutrient (waste).
If a bot has 5 enzymes for X and 5 for Y then it will convert 49.5% of its X type food to energy. The rest will be stored as Waste, this waste being a different type of food according to some rule (ie. X becomes energy +Y).
Waste is able to contain both X and Y type food but while stored in the robot as Waste, it is not usable by the bot's metabolism.
When the bot shoots waste out, it is proportionally split between type X and Y (so it is actually a kind of food really) depending on what is contained in the robot's "waste tank" or "intestines" if you like.
I figure it will be inefficient for any given bot to only have 5 enzymes for a particular type of food so from an evolutionary standpoint they will prefer to have 10 of one type so if he has 10 X enymes then Y type food is inedible.
Now to complicate things add another half dozen types of food source (including photosynthesis) and a bunch more enzyme slots.
Every bot will eat one thing and poop out another. Efficiencies will be different depending on the number of enzymes present. Enzme types are controlled by mutations.
Should make a pretty diverse ecosystem.
-
But if waste is a kind of food, it will always be possible for a bot to reuse its own waste as food, and thereby having a unlimited energy source, unless you make the pathways of the metabolism extremely complex and long
Something like this: (?)
With CAPITAL letters being food, and lower case enzymes:
A + a --> B
B + b --> C
C + c --> D
D + d --> E
E + e --> F
F + f --> G
G + g --> H
H + h --> J
J + j --> A
So it is: A <=> J
If a bot has 10 enzyme slots, with 10 food types, the bot will have a unlimited energy supply. Therefore there must be more food types than the bot has enzyme slots, or else it is possible for the bot to do the above.
I HAVE read every little bit in the sub Forum about metabolism etc., and I still have a hard time understanding the basic's of the system, and for me this you state here about enzyme slots contradicts what it says in the other threads!
-
But if waste is a kind of food, it will always be possible for a bot to reuse its own waste as food, and thereby having a unlimited energy source, unless you make the pathways of the metabolism extremely complex and long
I don't see it that way at all
For one thing even if the bot's waste has undigested but digestable food in it then it would have to shoot itself with a waste shot before it could eat the stuff. Not too easy to accomplish.
Secondly, even if he did shoot himself then there would be a much lower proportion of food that is usable by that bot, contained in the poop. This means that after a couple of times round the loop of eat --> poop --> eat --> poop, it will cost more to feed on it than the energy that is returned.
If a shot containing food X is eaten by a specialist X-Eating bot then he will be able to use 99.9% of it. The other 1% will be converted to waste as food type Y. When he has saved up 100 waste he poops it out and a Y eating bot intercepts it. This bot uses 99% of it for energy and begins building up waste type Z etc. etc.
There is no way a bot can ever survive on its own waste.
-
It's a simple matter of estblishing entropy in converting A to B. Waste converts to energy at a significant loss. Then even if you eat your own waste, you're not generating that much energy.
It's mathematically provable that as long as there is some loss from the waste->nrg->waste cycle, the amount of energy you can gain is finite.
-
I HAVE read every little bit in the sub Forum about metabolism etc., and I still have a hard time understanding the basic's of the system, and for me this you state here about enzyme slots contradicts what it says in the other threads!
Yes it does contradict other posts that I and others have made.
I was oversimplifying the concept of enzyme efficiency to explain it in easier terms.
the reality would be that enzyme would be bit patterns of varying lengths, all held in a binary string. Enzymes would be abble to overlap in such a string so that it would be very hard to program them manually.
Example.
011010110 may be defined as an enzyme that digests food X at an efficiency of 7.3%
The following string
01101011010110
Contains two such enzymes. they overlap and share several digits. If these two are present in a robot's bit pattern then its overall efficiency for converting food X to energy will be 14.6%
01101011010110
and
01101011010110
Suppose there is another enzyme that converts X to energy at 1.3% efficiency. Its pattern is
101101 (shorter = less efficient)
You can also find one of these in the bit pattern above
01101011010110
so the bot's total efficiency will be 15.9%
Make sense?
-
It's mathematically provable that as long as there is some loss from the waste->nrg->waste cycle, the amount of energy you can gain is finite.
Ok, then I'm with it :)
PY, can a bot 'see' its own enzymes?
-
PY, can a bot 'see' its own enzymes?
I am not quite sure which way we are going to go just yet. I would say that the enzymes would not be visible from the DNA directly. (ie. the robot cannot directly read them) However they will be visible to the programmer.
My idea is to put the enzyme bit string at the start of the robot text file a bit like the def command now. The difference is that it will be subject to mutations and will also be saved along with the robot DNA file.
I think enzymes should work behind the scenes automatically and not be directly controllable.
-
Just a thought but you also could implement an enzyme system that works as following:
To produce an enyzme you need a certain amount of energy lets say 5 and you can store up to 500 enzymes. Every enzyme enables you to convert 10 units per cycle of a certain type of food into energy.
However enzymes itself are related to a certain food type such 1 enzyme destroys
1 enzyme per cycle that is related to the food type they digest(without the gain of energy)
Such with 100 enzymes of type X that digest type Y, 10 Y that digest type Z
and 40 Z that digest X
after one round you only would have: 60X 0Y 30Z
and after 2 more rounds 0X 0Y 30Z
-
We could do it that way. In fat, there are like 100 different ways we could do it, and none of them would be necessarily more or less correct than another. Which is what the problem is. How do we decide?
-
That's easy - you ask me and then do as I say :)
-
:P
-
How about all methods up for consideration must be largely based on something else that's already been done or at least discussed in a scientific paper somewhere? I can comb through some ALife and A Chemistry archives and see what I come up with.
This way we aren't just randomly comming up with solutions that sound good to us.
I'll go reread that link shvarz gave a few months back...
-
Whenever we come to a consensus on all the methods, we could just hold a vote on which is the "best" out of them all.
With a waste to nrg conversion method ou could make a waste feeder of a sort. The waste TF would allow you to feed off other bots' waste and convert your own waste back into food. Would still be limited in nrg like PY said just because there's only so much waste to go around.
(Is it just my imagination or is this place really active all the sudden :) )
-
No, its gearing up for the release of 2.4. It's been sort of dead while I sat on my hands for the last few months.
Speaking of which, damn there are alot of bugs I need to fix! At least I know how to fix them all.
-
How about we just make the avrage method. (I did not say I know how to avrage them correctly)
-
You mean with ties? I think I've figured that out. I have an equation anyway, I still have to check o see what it does.