Darwinbots Forum
Bots and Simulations => Evolution and Internet Sharing Sims => Topic started by: Endy on July 23, 2005, 07:08:14 PM
-
Is it just my imagination or are the primary mutations we see actions that are continually pepretrated. Some examples are continual shooting, tieing, moving, stopping, etc. All of these have one thing in common, they happen every single cycle and are extremly easy for the dna.
Our own "intellegent" code takes advantage of just that, intelligence. The problem is that evolution and mutations don't work according to it. The specific instructions we give, while the epitome of human ingenuity, are when mutated are some of the worst things a bot can do or not do (shooting the bots primary method of feeding is a good example). Most of the time they're better off disabling the gene or getting rid of the dna altogether, simply to ensure mutation survivability.
I'm not sure how to really solve this. My guess it's more of a matter of understanding what the program is trying to do and then improve it to help the bots succed.
On this note the 64001 (32000 2 mult 1(zero) add) possible store locations are a bit much IMO. I get a value around 0.01561 chance of a given number actually being something even possibly usable (999/64001). The number of actual locations and evolution effecting behaviors is even smaller, most likely leading to some long times between mutation effects and actual observable evolution.
I was originaly thinking that a simple duplicate -999 set would help, but perhaps even that was too little, what I'm not thinking of would be to normalize to a usable value say 31078 to something like 78, not a direct effect but at least it's somewhat usable to the bot in this form. I can understand the comments about loss of diversity, but having so many wasted locations is overkill.
Endy :unsure:
-
Perhaps we're just looking at it from the wrong point of view. Instead of thinking that the store command is used for storing values, maybe we imagine that it's used for removing values from the stack, and sometimes, if everything is just so, it removes values and makes the bot do something.
In the new version the bot will be able to mutate some of the new commands, which will probably be useful for bots creating a kind of conditionless gene, which seems to be the direction that mutations tend to use.
-
Num, to make bots still interested in conditions add or xor and not, and all the special stuff !~= ~>= all thouse waird conditions. I think a bot should choose this because its faster then evolving it from junk dna. The junk dna really never produces anything usefull. Warning: I will write about junk dna in detail in another post.
My point is don't think that junk dna is actualy the robot trying to produce somthing from Shens world of killer monsters.
-
Mutations can produce all the new stuff in the new version. What I mean is that I haven't ever seen conditions mutate to limit the execution of a gene beyond always on or always off.
-
My point is don't think that junk dna is actualy the robot trying to produce somthing
I didn't think the bot was actually trying to mutate anything. It doesn't have a clue what it's doing it just gets given extra code and it can't do a thing about it.
Would it be possible to have a bot that monitored for genes that were bad or just useless and deleted them? I have heard of genes switching off genes with methylation or something similar.
-
In the new version the bot will be able to mutate some of the new commands, which will probably be useful for bots creating a kind of conditionless gene, which seems to be the direction that mutations tend to use.
Yep I've seen the same things, semi-conditionless behaviors, or even nearly completly random behaviors(note nearly does not mean completly random, I've tried delibritly adding a completly rnd command with dismal failure).
The problem is that the bot's can't currently track which genes cause what effects. It's also difficult to tell which mutations are bad for a specific enviroment. For example something as dramatic as continual reproduction, which results in a huge group of offspring, could be useful in an enviroment with an abundance of food or other bots limiting the growth.
Some method to block "bad" commands might be useful but I can't imagine how to go about doing that or how a bot could tell what is or is not a bad command.
Just a thought, some sort of powerful "blocking storage to memloc" command could accomplish this to a degree, but the cost of such a command should be equivalently high(although even this could be equally good or bad to mutate <_< ).
Darn, times up tonight. Won't be able to get back on for a few weeks at least :(
Have a good one. Hopefully the new vers will be out by the time I get back.
Endy B)
-
I didn't think the bot was actually trying to mutate anything. It doesn't have a clue what it's doing it just gets given extra code and it can't do a thing about it.
Semantics aside, my point is that I've never seen bots learn to regulate gene expression through the conditions in genes. Bots tend to garbel up the distinction between genes.
-
Sorry if I was being pedantic I was just trying to work out what people were saying. I have this thing at the moment where if a sentence is too long my brain just gives up halfway through. :wacko:
Bots tend to garbel up the distinction between genes.
I am at a bit of a loss here. What could be done?
-
If you view it as undesirable, we could implement something that resets the stack between genes. That'd do the job just fine. I'd prefer to keep it as an option over default tho.
-
Keeping it as an option would be good. Personally I don't see it as that much of a problem but other people seem to.
-
Keeping it as an option would be good. Personally I don't see it as that much of a problem but other people seem to.
As an option, no problem but as a default it would mess up almost all of the complex functions that go into making a streamlined (low energy consumption) combat bot. (See the simplebot tutorial (http://www.darwinbots.com/FTP/DarwinTutorial1+2.zip) for an example)
Pretty much every one of my top bots in the league use a system where they store a value on the stack based on some conditions. The value isn't used until a later gene in the genome. Clearing the stack removes this behaviour option and hugely limits the potential complexities of robots and evolution.
How about an option that wipes the stack at the end of the cycle? (Did you already do this Num? I know early versions allowed carry over.) I haven't yet attempted to design a bot that carries values over to the next cycle so that is no big deal. Most often a carried over value just fills the stack up and screws up the robot.
-
I believe I fixed the stack to not pass values into new cycles already, though in what version that was I have no idea. (Probably the new one).
The way PYs better bots work seems to be the way that evolved bots, well, evolve.
-
I believe I fixed the stack to not pass values into new cycles already
Thought you had.
The way PYs better bots work seems to be the way that evolved bots, well, evolve.
Figures. A bot neither knows nor cares how a value gets onto the stack or even how long it has been there. He just uses it. That's the way evolution works.
-
I think its good to keep that loop of the stack thingy. Keep stack erasure as an option but leave it with the stack cycle loop as defult. I think the stack cycle loop is more natural.
-
We do have one difference from the old days.
At some time in the last few versions, Num changes the dynamic nature of the stack. I discovered this last week while working through a debugger for my "Snapshot" utility.
No longer do new values fall off the stack once it fills up, the way they used to.
Now they just push the whole stack down and displace the bottom value.
That was a bit sneaky Num. I kind of like it though. :P
Maybe it is listed in the readme file but I hadn't noticed it.
-
thats the way its supposed to be done B)
-
Maybe so but it never was until very recently.
-
Were is Shvartz? vecation?
-
That was a bit sneaky Num. I kind of like it though. :P
Maybe it is listed in the readme file but I hadn't noticed it.
I'm not very good about documenting all the feaetures I change, especially the ones that take like 20 minutes.
Consider it an incentive to keep experimenting with the program lol.
-
'Test Bot
'StackTurner a.k.a. nos-->
cond
start
dup
100
div
.aimdx
store
stop
cond
start
1
add
stop
end
'Dont you just love the little guy?
'Needs soler energy....
Yep currently the stack gets transfeared per cycle so I dont have to waste memory locations.
-
Yep currently the stack gets transfeared per cycle so I dont have to waste memory locations.
Then I probably changed it for the next version.
-
I'm not very good about documenting all the feaetures I change, especially the ones that take like 20 minutes.
I know the feeling. It is so hard to keep up with all those tiny little mods that you really don't think twice about. I normally only record the major changes.
It actually could be in the readme for all I know. I don't often check it.
-
Then I probably changed it for the next version.
Num , please change it one more time. Keep the old way as defult. I mean I wrote a bot to show the advantage of it. You can make it as option if you like.
-
Num , please change it one more time. Keep the old way as defult. I mean I wrote a bot to show the advantage of it. You can make it as option if you like.
No. The stack should and must not be used to carry values between cycles. Aside from the obvious reverse engineering headaches, and the obvious infringement on the purpose of having memory array at all, and the obvious glee that the bot has avoiding the cost of a store command, it is the first step in introducing the chromosome system I suggested in another thread and that was more or less agreed on.
-
The stack should and must not be used to carry values between cycles.
Thats what I mean , I like this idea. DUH!
-
Then I probably changed it for the next version.
Num , please change it one more time. Keep the old way as defult. I mean I wrote a bot to show the advantage of it. You can make it as option if you like.
Num , please change it one more time. Keep the old way as defult. I mean I wrote a bot to show the advantage of it. You can make it as option if you like.
Am I the only one who finds these two statements conflicting?
-
I thought " the old way" was the one were the stack get transfered to the next cycle. ...
-
I thought " the old way" was the one were the stack get transfered to the next cycle. ...
Yes, it is.
I said I stopped the stack from going between cycles. You said to change it back to the way it was, adding the stack between cycles as an option. I said to hell with you.
lol.
-
I said I stopped the stack from going between cycles. You said to change it back to the way it was, adding the stack between cycles as an option. I said to hell with you.
Awww. That's not very frandly now is it? ;)
-
I get impatient with having to repeat myself. I suppose it's a character failing.
-
I just like to take the piss a lot :D
-
The stack should and must not be used to carry values between cycles.
Thats what I mean , I like this idea. DUH!
^
The stack should and must not be used to carry values between cycles.
When I dont Properly comprehand a sentence then write a reply, yea man thats funny. I confused myself into thinking... ]
I thought the sentance was saying:
The stack should and must be used to carry values between cycles.
Scary....
-
Don't worry [Bots] you make these discussions 10 times more interesting! :D
-
and 10 times longer too :P
-
Ant 10 times more quare and scroovy :)
(makes my day every time I read or, even, type this) :)
-
You just "Thing" too much.
-
heh, alteast I figured out how to make a website...
also soe is making me mess arround with fake credit card numbers to get me a free account :D
-
What? That sounds dodgy to me.
-
And illegal and unethical. Like peeing on a little kid.
:ph43r:
Not that I do that. :unsure:
-
Hey, atleast they finaly came through and gave me an account. Now I have two forums to work with. There is lack of control over sonys forums and now way to edit posted messages. So you get a lot of sansless spam. Witch makes me wonder how mutch of this topic belongs in off topic already.