Darwinbots Forum

Bots and Simulations => Evolution and Internet Sharing Sims => Topic started by: Endy on July 23, 2005, 07:08:14 PM

Title: Infinite Loops
Post 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:
Title: Infinite Loops
Post by: Numsgil on July 23, 2005, 10:01:25 PM
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.
Title: Infinite Loops
Post by: Botsareus on July 24, 2005, 12:33:38 PM
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.
Title: Infinite Loops
Post by: Numsgil on July 24, 2005, 01:19:14 PM
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.
Title: Infinite Loops
Post by: Ulciscor on July 24, 2005, 07:13:00 PM
Quote
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.
Title: Infinite Loops
Post by: Endy on July 24, 2005, 11:26:28 PM
Quote
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)
Title: Infinite Loops
Post by: Numsgil on July 24, 2005, 11:30:42 PM
Quote
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.
Title: Infinite Loops
Post by: Ulciscor on July 25, 2005, 12:18:23 AM
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:

Quote
Bots tend to garbel up the distinction between genes.

I am at a bit of a loss here. What could be done?
Title: Infinite Loops
Post by: Numsgil on July 25, 2005, 12:29:26 AM
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.
Title: Infinite Loops
Post by: Ulciscor on July 25, 2005, 12:35:45 AM
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.
Title: Infinite Loops
Post by: PurpleYouko on July 25, 2005, 09:24:37 AM
Quote
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.
Title: Infinite Loops
Post by: Numsgil on July 25, 2005, 03:17:50 PM
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.
Title: Infinite Loops
Post by: PurpleYouko on July 25, 2005, 03:23:54 PM
Quote
I believe I fixed the stack to not pass values into new cycles already
Thought you had.

Quote
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.
Title: Infinite Loops
Post by: Botsareus on July 25, 2005, 03:36:37 PM
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.
Title: Infinite Loops
Post by: PurpleYouko on July 25, 2005, 03:49:01 PM
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.
Title: Infinite Loops
Post by: Botsareus on July 25, 2005, 03:56:32 PM
thats the way its supposed to be done  B)
Title: Infinite Loops
Post by: PurpleYouko on July 25, 2005, 03:57:12 PM
Maybe so but it never was until very recently.
Title: Infinite Loops
Post by: Botsareus on July 25, 2005, 04:07:31 PM
Were is Shvartz? vecation?
Title: Infinite Loops
Post by: Numsgil on July 25, 2005, 04:24:41 PM
Quote
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.
Title: Infinite Loops
Post by: Botsareus on July 25, 2005, 05:52:04 PM
'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.
Title: Infinite Loops
Post by: Numsgil on July 25, 2005, 09:36:47 PM
Quote
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.
Title: Infinite Loops
Post by: PurpleYouko on July 26, 2005, 08:29:20 AM
Quote
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.
Title: Infinite Loops
Post by: Botsareus on July 26, 2005, 02:07:47 PM
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.
Title: Infinite Loops
Post by: Numsgil on July 26, 2005, 03:07:03 PM
Quote
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.
Title: Infinite Loops
Post by: Botsareus on July 26, 2005, 03:09:42 PM
The stack should and must not be used to carry values between cycles.

Thats what I mean , I like this idea. DUH!
Title: Infinite Loops
Post by: Numsgil on July 26, 2005, 03:18:34 PM
Quote
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.
Quote
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?
Title: Infinite Loops
Post by: Botsareus on July 26, 2005, 03:22:19 PM
I thought " the old way" was the one were the stack get transfered to the next cycle. ...
Title: Infinite Loops
Post by: Numsgil on July 26, 2005, 03:39:23 PM
Quote
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.
Title: Infinite Loops
Post by: PurpleYouko on July 26, 2005, 03:50:33 PM
Quote
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?  ;)
Title: Infinite Loops
Post by: Numsgil on July 26, 2005, 03:56:15 PM
I get impatient with having to repeat myself.  I suppose it's a character failing.
Title: Infinite Loops
Post by: PurpleYouko on July 26, 2005, 04:03:02 PM
I just like to take the piss a lot  :D
Title: Infinite Loops
Post by: Botsareus on July 26, 2005, 05:03:03 PM
Quote
The stack should and must not be used to carry values between cycles.

Thats what I mean , I like this idea. DUH!


^
Quote
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:
Quote
The stack should and must be used to carry values between cycles.

Scary....
Title: Infinite Loops
Post by: Ulciscor on July 28, 2005, 01:07:06 AM
Don't worry [Bots] you make these discussions 10 times more interesting!  :D
Title: Infinite Loops
Post by: Numsgil on July 28, 2005, 01:20:50 AM
and 10 times longer too :P
Title: Infinite Loops
Post by: shvarz on July 28, 2005, 02:23:39 AM
Ant 10 times more quare and scroovy :)

(makes my day every time I read or, even, type this) :)
Title: Infinite Loops
Post by: PurpleYouko on July 28, 2005, 08:47:08 AM
You just "Thing" too much.
Title: Infinite Loops
Post by: Botsareus on August 02, 2005, 04:21:22 PM
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
Title: Infinite Loops
Post by: Ulciscor on August 02, 2005, 04:40:04 PM
What? That sounds dodgy to me.
Title: Infinite Loops
Post by: Numsgil on August 02, 2005, 05:17:33 PM
And illegal and unethical.  Like peeing on a little kid.

 :ph43r:

Not that I do that.   :unsure:
Title: Infinite Loops
Post by: Botsareus on August 04, 2005, 04:26:10 PM
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.