Code center > Suggestions
Non-Determinstic Bot DNA flow
Carlo:
--- Quote ---Well, since The One is a single gene and does just fine, no, I can't.
--- End quote ---
Perfect.
--- Quote ---But there are processes that are made easier by different genes. Forming a multibot being a good example.
--- End quote ---
And this is the worst example you can take. Because multibots are particularly negatively affected by the current system, since they have to strictly coordinate actions which happen both inside and outside the robot, that is, in other robots. How can they manage to do that, if a gene don't know whether something really happened yet or not? As I told you, I had to write the dna of v_patavinus backwards to make it work properly. This wouldn't happen with the new system.
--- Quote ---ALL the chromosomes are executed at the same time. They just can't affect the cell until ALL other genes have executed.
--- End quote ---
Ah. I thought for a long time about a system like that (no need for chromosomes, though, it can perfectly apply to genes only). The problem is that each gene should read values from a memory array and write back to a different memory array. And at the end of each cycle, you'd have to copy all the write memory into the read memory. Horribly time consuming. You may design an appropriate structure to hold the (location, value) couples written by a dna, and then just rewrite them on the true memory array at the end of the execution. Would be fine, but anyway won't solve the other problem, as you point out: that is, in case of conflicts you'd have to choose which value to store in the final memory, and this would be nearly impossible. Which compromise to take between -1 and -2 in the .shoot location? Or between two different tie addresses when using ties? And, finally, PY would cry, anyway.
Numsgil:
--- Quote ---And this is the worst example you can take. Because multibots are particularly negatively affected by the current system, since they have to strictly coordinate actions which happen both inside and outside the robot, that is, in other robots. How can they manage to do that, if a gene don't know whether something really happened yet or not? As I told you, I had to write the dna of v_patavinus backwards to make it work properly. This wouldn't happen with the new system.
--- End quote ---
Structured multibots would seem to me to be harder to create in a ND universe. Unless you have a drastically different design paradigm. In my experience, multibots work by:
cycle 0: do something
cycle 1: do something
cycle2: do something
all very structured and quite precise, especially for larger multibots.
--- Quote ---Ah. I thought for a long time about a system like that (no need for chromosomes, though, it can perfectly apply to genes only).
--- End quote ---
Yes, you don't have to use chromosomes. But doing so allows both for backward compatibility with PYs stack intensive genes and for more involved reproduction procedures in the DNA, such as realistic meiotic reproduction and crossing over. It's really just a step in a process moving towards a more complete sexual reproduction model, which has always been a hurdle for DB.
--- Quote ---You may design an appropriate structure to hold the (location, value) couples written by a dna, and then just rewrite them on the true memory array at the end of the execution. Would be fine, but anyway won't solve the other problem, as you point out: that is, in case of conflicts you'd have to choose which value to store in the final memory, and this would be nearly impossible.
--- End quote ---
But this problem is well known and understood. Specifically in multithreading theory. Note how our problem and the problems of singlethreading OSs are similar. Makes sense that a similar solution should be considered.
Actual programs with threads competing for resources have different strategies for which to give preference to. Some favor processor intensive threads, some the opposite. Semaphores can be used to regulate shared data, etc.
We don't have to actually create semaphores (although we could. That's a possible solution I haven't really explored), but we can model the end statistical effects on which commands are executed. And, worst comes to worst, and we don't have any good idea, just picking a random instruction is just about as good as ND DNA as far as removing the linearity between gene execution.
--- Quote ---And, finally, PY would cry, anyway.
--- End quote ---
PY's already acquiesced for a chromosomal sytem, so we don't have to worry there. :P
shvarz:
--- Quote ---since the two copies of the duplicated gene are identical, now that gene has 1/2 chance of being executed, while the other two have 1/4 chances
--- End quote ---
Damn, I should have thought of this myself! :)
Well, these are very good points and interesting discussion from everyone. One thing is still not clear for me (because I don't program bots): It seems like the major advantage of ND system would be an appearance of several processes happening at the same time in parallel. Why would we want this? And why is current system so bad? I would like to see some kind of simple example of the power of the new system as compared to the old.
PurpleYouko:
--- Quote ---And why is current system so bad? I would like to see some kind of simple example of the power of the new system as compared to the old.
--- End quote ---
I second this completely.
And another thing. Since when is the real universe non-deterministic?
OK so at the quantum level it may be for for all intents and purposes, everything above that is totally deterministic anyway.
Even with that, the argument of whether the universe and everything in it, is 100% deterministic or not, is still raging in the highest echelons of physics research.
Even proponents of non-determinism wouldn't go so far as to suggest that macro-molecules like DNA don't act as if the universe is totally deterministic.
You have to go way below that to find any sign of non-determinism.
If you want realism then I would say that you need determinism along with parallel processing with the end result being the average of all the separate chains of determinism.
Num's proposed system seems to satisfy this pretty well.
I just don't see any realism whatsoever in just arbitrarily picking one or even a few genes to allow to activate on any given cycle. In reality there is nothing truly random about VB. We have been over this before on another thread. By setting the seed number you can exactly reproduce any sim you like. That won't change in the least if you randomly drop perfectly good genes for absolutely no good reason.
I just see absolutely no point in it.
Sprotiel:
--- Quote ---OK so at the quantum level it may be for for all intents and purposes, everything above that is totally deterministic anyway.
--- End quote ---
It's the other way round !! Quantum mechanics is totally deterministic. At higher levels, thermodynamics comes into play and it gets random.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version