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.


Messages - jknilinux

Pages: 1 ... 25 26 [27] 28 29
391
Bot Tavern / The amazing Antbot
« on: October 11, 2008, 11:23:21 PM »
Quote from: bacillus
Actually, I was thinking of building a complicated hive multibot. If you are interested in working together on a project, feel free. This was the rough sketch I made:
1-Single cells start out as 'spores', and wait until they have enough nrg/see enough veggies to form a colony
2-The hive is controlled by a centralized brain, which cycles through its ties using something like *.timer x mod .readtie store, then collecting data from the outer cells
3-A secondary set of cells which connect the brain to outer cells, relaying information and stimulating production of shell/poison/venom etc. They also bind to veggies.
4-Tentacle cells form around the central cells, which seek out food and drag it in. Also expel waste.
5-Sensor cells at the tip of tentacles which attack intruders, and may move the hive around (not sure if it moves yet). They collect data about eyes, shell etc, which gets fed back to the brains.

Feel free to change this, it's only a rough idea of varying levels of detail.

I've always wanted to see a MB with a multicellular brain, but I currently know nothing on coding bots. I do know a few computer languages, though, and I'm knowledgeable in neuroscience, so I might be able to help if you need opinions on making the central neural network.

With an MB this complex, you could make sperm and eggs, too. One cell breaks off the hive, which searches for another free-floating cell from another hive to form a spore.

Or, similarly, the hive could be the queen of an ant colony. When it needs something, it just breaks off one of it's cells to become an ant. The ant cell then brings back food, etc... until it is no longer needed and can re-assimilate into the hive.

The coolest thing by far, though, would be for it to actually learn. Like if it keeps getting attacked when it gets close to another hive, it will learn to avoid other hives. Would that be feasible, though?

392
Suggestions / Mutation Protection method- in voting
« on: October 11, 2008, 09:26:21 PM »
Quote from: bacillus
In reply to 3.), it simple represents an effective 'mutation-immunity' system becoming ineffective over time, and needing refreshing. The major issue (note that this is not the only suggestion that has this issue) is that it relies on the data being stored in a memory location; multiple attempts at protecting DNA will override previous attempts, therefore the way to go will eventually be in the form of metadata. Based on that, I'd change my suggestion to combine the metatag suggestion with the protective enzyme protection system, which also gives a way to control the costs of protecting DNA. (in nrg per unit produced, evenly distributed within the tags, or perhaps allocated by a variable)
EDIT=>Don't forget that most people invloved in this discussion put forward an idea themselves, so I'd be surprised if there is a clear winner

Could you explain how trying to protect the DNA more than once would cause the Mutation protection instructions to be overwritten? Also, how would you combine enzymatic protection with metadata?

EDIT=> There probably won't be overwhelming support for one of the suggestions, but if there is a significant majority then we'd have to go with that. I'll also add ideas to the poll as they come up.

I'll need to leave your original suggestion on the poll, since some people have already voted in favor of it.

NUMSGIL, ERICL & IKKE: Did I summarize your ideas so they reflect your original opinions? Let me know!

393
Darwinbots3 / Mutation protection
« on: October 11, 2008, 09:13:23 PM »
Quote from: ikke
Quote from: jknilinux
Your copy protection just sounds like a universal halved mutation rate for that species, assuming every gene has a duplicate error-checker version.
If you want only some genes to have copies, then it's basically regular mutation protection only for those certain genes, but you're limiting the mutation protection to either the regular mutation rate or 1/2 the regular mutation rate, if I understand you correctly.
This may be the effect of the method I described, but it was not the point I was trying to make. In essence I believe that mutation protection should be a part of the genome of the species, not some magic outside it. While I sympathise with your goal I do not like the way you want to achieve it. To me it seems you are proposing a magical shield against mutations. As said I would like to see mutation protection seated within the genome. Properly defined base pairs with the combined ability to protect against mutation may surprise us by recombining into new functions in a way magic will never.

DB has tons of "magic" in it, simply because we're simulating this on old PCs and it would be impractical to simulate every RNA, protein, and phospholipid in a real cell. That's why movement, for example, works magically, instead of simulating actual flagella, even though simulating them would allow for evolution to modify them in neat ways. So, I think we should try to port as many features from real biology in to DB as completely as possible, and one of these features is having the mutation rate as an analog gradient, which is not possible in your implementation.

However, you do have a good point, so I'll add it to the poll. Thanks!

394
Darwinbots3 / Mutation protection
« on: October 11, 2008, 04:44:39 AM »
I'm sending this topic over [a href=\'index.php?showtopic=2947\']here[/a], mainly so I could add a poll, but also because it's more of a suggestion for DB2 than DB3. Sorry for any inconvenience!

395
Suggestions / Mutation Protection method- in voting
« on: October 11, 2008, 04:35:59 AM »
Hi Everyone!

This thread is continued from a thread in the DB3 forum. If you are unfamiliar with the discussion, you can see it [a href=\'index.php?showtopic=2908\']here![/a]

Basically, the problem is that whenever someone tries to run a DB evosim, the bots end up "evolving" until they are filled with random crud and are unable to eat, because necessary genes have been overwritten. Eric first noticed that real-life evolution almost never modifies necessary metabolic pathways, even though these genes make up the bulk of our genome. Instead, less necessary genes, such as those controlling the number of fingers, are mutated much more often. So, something must be protecting those necessary genes from mutation, and the reason that evolution rarely works in DB is probably because it lacks this feature.

So, I'll try to see which algorithm is most popular, and then maybe we should implement that one first.

So far, there are four options: (I'm trying to make it objective, but some of my bias may show through. Let me know if I forgot a pro/con)



Number 1: Make metadata (Mutation-Rate data) instructions that attach to the DNA but are not DNA instructions, like [x10] ... [/x10]

Pros:
The mutation rate data is "glued" to it's assigned exon.
Evolution cannot delete/move a codule
Mutation protection cannot be overwritten if used more than once, since the mutation protection is Metadata.

Cons:
Fragile (it's more than one instruction long, so evolution and new coders could break it more easily)
Evolution cannot delete/move a codule



Number 2: Make a new instruction, such as x .protect25 store, to protect the next x bases by giving them a mutation rate of 25%.

Pros:
Easy for new coders and evolution to use.
Robust, since it can be put anywhere in a genome, or have x changed, etc..., and it will still function.
Easy to add to the next version of DB, since less work is required.
Evolution can delete/move it, since it is DNA.

Cons:
The mutation rate data is not "glued" to it's assigned exon.
Evolution can delete/move it, since it is DNA.
Mutation protection may be overwritten if used more than once, since the mutation protection is not Metadata.



Number 3: Make mutation immunity have a cost. If a bot is unable to pay the cost, immunity is lost. Immunity also degrades over time. Basically it would work like this:

Step 1-make enzyme. This will act the same way as slime does, decaying over time, more enzyme provides more protection eg reduce chance of mutatoins
Step 2-use X .protect store; if X is negative, it will protect X bps before the command, if positive, the next X bps after the command. The bigger the size of code protected, the faster enzymes wear off.

Note that Bacillus later changed Step 2 to tagging with metadata, which allows multiple protects in one cycle (not sure about logic though), and the distribution of substances.

Pros:
Time- and cost-dependent
Easy for new coders and evolution to use.
Robust, since it can be put anywhere in a genome, or have x changed, etc..., and it will still function.
Easy to add to the next version of DB, since less work is required.
Evolution can delete/move it, since it is DNA.

Cons:
Mutation protection may be overwritten if used more than once, since the mutation protection is not Metadata.
The mutation rate data is not "glued" to it's assigned exon.
Evolution can delete/move it, since it is DNA.



Number 4: Make a hybrid algorithm that combines the best features of different ideas. For example, a mutation control instruction that IS glued to it's assigned exon and applies the mutation rate it encodes to itself.

These Pros and Cons will look at an implementation of the MPPI instruction.

Pros:
Easy for new coders and evolution to use.
Robust, since it can be put anywhere in a genome, or have x changed, etc..., and it will still function.
Easy to add to the next version of DB, since less work is required than idea 1, but there's more than 2.
Evolution can delete/move it or not, it's up to the coder. Put x .protect0 store to make itself and the following x lines of code unchangeable.
The mutation rate data is "glued" to it's assigned exon.

Cons:
Mutation protection may be overwritten if used more than once, since the mutation protection is not Metadata.



Number 5: Bacillus' Idea: A hybrid of 1 and 3, where mutation immunity for an exon is governed by metadata attached to the DNA (as a codule), but can be lost if the bot is not able to pay the immunity costs and/or if the bot gets too old.

Pros:
The mutation rate data is "glued" to it's assigned exon.
Evolution cannot delete/move a codule
Mutation protection cannot be overwritten if used more than once, since the mutation protection is Metadata.

Cons:
Fragile (it's more than one instruction long, so evolution and new coders could break it more easily)
Evolution cannot delete/move a codule



Number 6: Ikkes' DNA comparison Idea: Make one or more copies of the genome, and if one copy is mutated, replace the mutated code with the equivalent code from another copy. Checking for mutation is done by comparing the genomes' DNA line-by-line.

EDITED!

Pros:
Allows evolution to make the genes from the two copies interact to create a novel outcome.
The required instructions could be used for other uses by evolution, since they are general-purpose.
Because the instructions are more flexible, a bot could have conditional mutation protection.


Cons:
If damage needs to be repaired, then it may slow down the sim if twice the amount of DNA is executed each cycle, since there will need to be a copy of the bots' genome.



Number 7: Ikkes' Hash comparison Idea: Make one or more copies of the genome, and if one copy is mutated, replace the mutated code with the equivalent code from another copy. Checking for mutation is done by comparing the genomes' Hashes.

EDITED!

Pros:
Allows evolution to make the genes from the two copies interact to create a novel outcome.
The required instructions could be used for other uses by evolution, since they are general-purpose.
Because the instructions are more flexible, a bot could have conditional mutation protection.

Cons:
If damage needs to be repaired, then it may slow down the sim if twice the amount of DNA is executed each cycle, since there will need to be a copy of the bots' genome.




  Thanks for voting!  

Note: I moved the hybrid option back up because someone voted for it, but after I added the other ideas it was moved down and Bacillus' second idea got the vote.

396
Darwinbots3 / Mutation protection
« on: October 11, 2008, 03:58:23 AM »
Quote from: ikke
Maybe I'm the outcast here, but I am not in favour of coding mutation rates. To me there two ways to mutaton protection: evolve it or program copy protection. In my evo sims the most fatal mutation I can track with the graphs is a breakdown of the reproduce condition, resulting in exploding population, and certain death of all the offspring (I use kilobody nrg with low energy levels, so a veggie needs a minimum body size to survive). I have seen strains evolve that don't break down explosively but bubble at regular intervals. Also I noticed that the explosions occur less and less often. With my current zerobot evolution I haven't seen this behaviour alltogether, which says something about the strenght of natural vs manmade code. I would be sad to see this gone by creationist intervention.

As for coding copy protection I would favour a command that allows for checking gene equality. A but has two copies of a gene and checks for equality. Or a gene has a a stored vs actual hashvalue, whatever. Die on inequality, or maybe even allow repairing if genes are identified as defects and the coder is smart enough to program the bot to figure out how to tget back to normal...

Your copy protection just sounds like a universal halved mutation rate for that species, assuming every gene has a duplicate error-checker version.
If you want only some genes to have copies, then it's basically regular mutation protection only for those certain genes, but you're limiting the mutation protection to either the regular mutation rate or 1/2 the regular mutation rate, if I understand you correctly.

Also, this will be an added feature, not a requirement, so you could easily continue your evolved mutation protection sims by simply switching the feature off.

Thanks for the input, and let me know if I missed something.

397
Bot Tavern / The amazing Antbot
« on: October 11, 2008, 01:49:16 AM »
So, any updates?

This is really cool, keep it up!

398
Darwinbots3 / Mutation protection
« on: October 11, 2008, 12:05:34 AM »
Quote from: Numsgil
I don't like the idea of any sysvar or command influencing mutation rates (of a subset of the DNA anyway).  Having it use the stack and sysvars is not an improvement over just using a command.

What I'm thinking, in the short term, is something like this:

Code: [Select]
[x0]
cond
*.nrg 5000 >
start
50 .repro store
stop
[/x0]

The [] tags would let you specify meta data, that applies for all base pairs until you find the matching closing [/] tags.  (In this example, the x specifies a mutation multiplier, with 0 meaning mutation rates for this section get multiplied by 0).  It would get "compiled" into something like this:

Code: [Select]
(type: flow logic) (value: 1) (mutation multiplier: 0)
(type: sysvar) (value: 236 (or whatever .nrg is)) (mutation multiplier: 0)
etc.
etc.

That is, right now the DNA is stored in memory as a pair of numbers: one describes the type, the other describes what it actually is (cond, start, stop, else share a type but have different values).  To that tuple I would add a float that describes a mutation multiplier.  It defaults to 1.0, but can be modified by special tags.  If we really want, we could have these multipliers subject to mutations as well.  I'm not sure I like the idea (it would get really messy with evolved DNA), but I wouldn't be against it either.

It's not what I'll probably do for DB3, but I think it addresses both Eric and my concerns, with the added benefit that it can be done right now.  Not sure if it addresses your concerns, though.

Well, if it's true that everyone else likes this idea, then I like this idea. Like I said, I think the most important thing is to get it coded. Once we've done that, then we can add features to make everyone happy. I would hate for this feature to go the way of Duke Nukem Forever.

EDIT: So, everyone, which method for Mutation Protection are you in favor of?

1: Numsgil's idea of having codules of the form "[xmutation_rate] ...protected BPs... [/xmutation_rate]"

2: Ericl's idea of having a new instruction, of the form "number_of_lines_to_protect .protect store"

3: A hybrid idea, like my MPPI instruction (Feel free to add another, but I'm not aware of any)

4: Something totally different

TELL US WHAT YOU THINK [a href=\'index.php?showtopic=2947\']HERE![/a]



I think the most important problem with this idea is that evolution will have a hard time taking advantage of it, since it seems more delicate than "10 .protectx store".
And besides, I don't see anything this can do that 10 .protectx store can't, or vise-versa. So, if they're equivalent, why not implement the easier one? See below.

Quote from: Numsgil
But this second methodology breaks down if metadata (by which I mean tags that describe the DNA itself, such as changing the mutation rate for some basepairs or, if we had diploid DNA, changing the dominance/recessiveness of a gene) is itself actually a bead.

Sorry for bringing up an old post, but why would having metadata in the DNA break the second methodology? If you're afraid the Mutation Protection instruction will get separated from it's exon, then just "glue" it there, like in my MPPI-based idea above.

But, like I said, if everyone else likes this idea, I like it.

Maybe I'm just too tired to think clearly about it!  




Bacillus-
In that case, it's only dependent on the cell having, like, 5 ATP per month, to run that enzyme whenever a stray UV ray hits that DNA. I think that's negligible.
Besides, in relation to your original comment:

Quote
I don't like the idea of changing the rate of mutation too much. If anything...

The rate of mutation can change quite quickly in a population. For example, if memory serves me correctly, the average mutation rate in a bacteria culture will go up as the amount of food decreases, since the bacteria have "evolved to evolve" to find new food sources.

399
Darwinbots3 / Mutation protection
« on: October 10, 2008, 03:06:17 PM »
Quote from: Numsgil
No, it's quite different.  That protein might have come from anywhere in the genome.  It get's created, floats around a bit, finds its target, and latches on.  If its target moves, so does it.  If its target doesn't exist, it doesn't bind.  If there are multiple targets, multiple proteins may or may not bind to the site.  The protein may be encoded somewhere in the DNA, so in that regard you're right that the DNA includes it somewhere in itself, and thus regulates itself, but the actual mechanism is not embedded next to thing it wants to protect, which is my point.

Mind you this idea (that organisms can control their mutation rates voluntarily) are new in biological thinking.  They're not quite as dogmatic as some of the more central tenants of evolutionary theory.

I see your point. However, it sounds like it would be difficult to implement and difficult for evolution to take advantage of (since each "protect codule1" instruction must tie to a certain "codule1" exon, etc...).

How about having the protection instruction that Eric and I were talking about act like a protein, so it can be "glued" to the exon? That way, if one instruction in the exon moves, then the entire codule (including the mutation protection "protein" instruction) moves. You could also have multiple mutation protection protein instructions (MPPIs) for the same codule, like having

10 .protect5 store
9 .protect50 store

in which case the two MPPIs could "compete" for protecting the next exon within the next nine/ten lines***, just like how you said two or more proteins could be assigned the same exon to protect. Here, maybe one of the mutation rates could be randomly chosen out of the two, because the other MPPI couldn't bind to the exon before the first one did.

Or, the 9 .protect50 store could apply it's mutation rate to only the next nine bps, but let the 10 .protect5 store govern it's (the 9 .protect50 store's) mutation rate. This way, you can never 100% protect a certain exon (since even a 10 .protect0 store is subject to the outside mutation rate, so it could change to 10 .protect200 store) but you can get really close, just like real biology.

The only problem with this idea is that the protected exon must be directly behind the MPPI, like Numsgil pointed out. However, since the MPPI acts like a protein (it's basically an exon that makes a protein that attaches to the parent exon and the next x bps), this is still just like real-world biology. Besides, the fact that the MPPI is right before the exon it protects is not a big deal. Why make code somewhere else that protects code at another place? This does the same thing, evolutionarily speaking. Also, come to think of it, having code at one place protect code at another place sounds like a DB version of goto. Nesting them is a debuggers' nightmare.

Just one instruction, so it's easy to implement and easy for evolution (and coders) to use, but it also has most of the features Numsgil wanted (like binding specifically to one exon, and binding-site competition).
Plus, it can decrease or increase mutation rates, like by having 10 .protect200 store, which would double the mutation rate for the next 10 bps.

Everyone happy?

***- With this method, an MPPI could protect lines of code not directly behind it.

400
Darwinbots3 / Mutation protection
« on: October 10, 2008, 01:39:15 PM »
Quote from: Numsgil
It's either a property of the codon itself, (multiple codons, with different possible mutation probabilities, might code for the same amino acid), or it might be regulated by a regulatory protein which sits on the strand of DNA itself, like a glob of clay stuck on my string of beads analogy.

Either way, the DNA still governs it's own mutation rate. Having an exon make a protein to protect another peice of DNA by sitting on it is just like saying

x .protect10 store

Or "protect the next X bases by giving them a 10% mutation rate". Whether it's done through proteins or not doesn't matter. Ultimately, in real biology, the DNA is protecting itself, and therefore does contain metadata.

401
Darwinbots3 / Mutation protection
« on: October 10, 2008, 01:05:22 PM »
Quote from: bacillus
I don't like the idea of changing the rate of mutation too much; if anything, it should be treated like internal slime eg. higher protection lasts for a less period of time, and wears down in relation to the amount of protection offered, and the amount of DNA protected.

But that's nothing like real-world Biology. An organism doesn't get increased mutation rates after it lives a long time. Photosynthesis doesn't wear down if a tree lives for a thousand years, because an organism's mutation rate is not dependant on time, amount of DNA, or anything else.

---

Numsgil:

By the way, if Metadata wasn't coded for inside the DNA in a real organism, where would it be stored?


402
Darwinbots3 / Mutation protection
« on: October 09, 2008, 11:47:22 AM »
Quote from: Numsgil
...

But this second methodology breaks down if metadata (by which I mean tags that describe the DNA itself, such as changing the mutation rate for some basepairs or, if we had diploid DNA, changing the dominance/recessiveness of a gene) is itself actually a bead. It might be that after a few splices the tag that identifies a change in mutation rate is now modifying entirely different DNA. Which entirely defeates the purpose if you're a bot author and your goal is to make the reproduction gene, or whatever, non mutable.

...

Codules are essentially functions, except that they can't recurse (call themselves or anything that called them) and they operate on the stack instead of using arguments.  In their most abstract, they're essentially macros that you can use as custom commands, and are subject to mutation.  They can contain any (or none I suppose) DNA, from multiple genes to a single number, so they would provide a natural way of grouping like base pairs together, and it's on that level I think mutation multipliers should live.  I think Eric believes this is not fine enough control, and differing mutation probabilities are needed even within codules, should they be implemented.


Well, if I understood your argument against metadata correctly, you think that it would be useless to the coder if the mutation protection is itself mutatable, since it could easily be mutated to protect a different stretch of DNA, etc... However, if the mutation protection instruction could protect itself from mutations by having more than one argument, then this could be easily circumvented. For example:

10 5 5 .protect store

could mean "protect next 10 bps by giving them a 5% mutation rate, and give self a 5% mutation rate." Thus, it protects itself and can therefore be useful for protecting the coder's DNA.

In essence, your codule idea just sounds like

10 5 0 .protect store

Or "protect next 10 bps by giving them a 5% mutation rate, and give self a 0% mutation rate." In which case, the mutation protection is impossible to move or change, just like a codule.

I think this design is more flexible, since it can actually protect DNA in the long run, like you wanted, and it can be moved, added, or deleted through mutation, like what Eric and I wanted. It's all up to the coder.

---

NOTE: I've never written DBcode before, so don't laugh if I'm not allowed to have three arguments for a command. There are ways to circumvent this and use only one argument.

403
Darwinbots3 / Mutation protection
« on: October 09, 2008, 02:00:30 AM »
Peksa,

As far as I know, that example you gave IS metadata. This is basically what Ericl and I were for, but Numsgil noted that if the mutation protection is itself mutatable, then it is of no use to the coder to keep a certain stretch of DNA from mutating.

Numsgil,

Quote from: Numsgil
Another way is to find a natural logical grouping of DNA and have mutation probabilities work on that level.  Which is why I suggest it can work as part of codules.  It's different from the imposed structure of the original program, since an individual codule can contain any DNA combonation and still be valid, and codules can be arranged in any call structure imaginable and still be valid.

Would you mind explaining your codule method in greater detail? It sounds interesting.



---

Everyone:

Perhaps we should just implement the easiest one to code for now, and try to please everyone later? I think that this is a very important feature, and if we just start with a single crude implementation now, then maybe it will be perfected soon. Otherwise, I'm afraid it will get caught up in an endless debate on exact implementation, and will remain unimplemented forever, just like it has since Ericl made his first newb post on the subject so long ago.

404
Darwinbots3 / Mutation protection
« on: October 06, 2008, 05:15:19 PM »
Quote from: Numsgil
It's mostly a question of "how".  There are lots of different ways of doing it, but arriving at a way that pleases everyone has been difficult.

Well, I like Ericl's idea of having the mutation rate of different sections being encoded in the DNA. This is the closest we have to real life, instead of having the first 50 BPs being magically un-mutatable, or something.

I'm afraid I might be misunderstanding Numsgil's counterargument, though. Are you saying we shouldn't have metadata in the DNA because of aesthetic reasons?


Anyway, I think that it doesn't really matter which implementation we choose right now. Having any implementation whatsoever should be enough to help evolution drastically.
If there's a big controversy on the subject, then let's just do the simplest implementation, and add the features later that can please everyone.  

405
Darwinbots3 / Mutation protection
« on: October 05, 2008, 09:38:17 PM »
So, why don't we add this feature? Everyone here seems to be for it.

Pages: 1 ... 25 26 [27] 28 29