Darwinbots Forum
Code center => Suggestions => Topic started by: Botsareus on July 25, 2005, 06:16:59 PM
-
There is a problem , currently robots do not evolve the "dup" command, which makes me wonder how many other DNA instructions they miss out on. I know the genes dont evolve the new "and" "or" "xor" etc. All these commands need to be added to the program.
Also robots, dont evolve custom labels.
And there is no way to clone numbers.
Therefore a robot can't evolve a commonly used number easily. I suggest allowing robots to evolve costum labels too. Just make it jibrishly named labels, as long as they work.
Evolving a number, sysvar or *.sysvar should be seperate for each robot. It should also be seperate for each part of the DNA. By part I mean conditions and bodies of genes.
Here are the sliders the way I would prefer:
Top Part of Conditions Section (A)
=====\/==== number (or custom label?)
=====\/==== sysvar
Buttom Part of Conditions Section (B)
=====\/==== number (or costum label?)
=====\/==== sysvar
*Important code must have ristrictions on evolving a number in both top and buttom of the dna
Top Part of Body Section ( C )
=====\/==== number (or custom label?)
'seperat for used and unused
=====\/==== *.sysvar
=====\/==== *.unused memory location
=====\/==== number or custom label
'or mathematical operators can evolve here the way they do now
Bottom Part of Actions Section (D)
=====\/==== number or custom label
=====\/==== sysvar
=====\/==== memory location
'waiting for nums new opperator known only as *
'we need to remove stuff like ".aimdx .up store", must be automaticaly replaced with *.aimdx .up store" (I know that will take some work, change the way dna gets stored into vbs memory etc. outputed to the user)
'and if we will have nums handy * opperator we no longer need "20 *.aimdx store" (because it will be writtin as "20 .aimdx * store") therefore, "20 .aimdx store" is automatically changed into a normal command.
cond
A
B
>
A
B
>
start
C
D
store
C
D
inc
stop
end
must be a text box that creates new custom labels
must be a text box that deletes custom labels
=====\/==== must be a slider to favor a custom label over a number for all parts of DNA. (slider inactive when there is no custom labels)
Thats all I thing for now. Nice little day dream. Lets see the criticism.
[color = red]Proofread by Numsgil for sanity[/color]
-
Qustionare:
Why do I want seporate sliders for the top and buttom of a condition block?
A: Once I was thinking of making it easyer on the bots by only evolving number-sysvar blocks.
A: for some more qustions like that: The same psycology applyes to all other waird sub divisions I maid.
Qustion: Why the hell do you need all of this anyway?
A: Just because we never seen primitive dna and the way it mutates that does not mean it does not exsist therefor I want the robots to choose there building blocks of life the way real organisms choose it. If we keep it the way it is now, robots will have primative mutations for all internaty.
-
Yes I know that robots don't evolve all the new operators yet. It just hasn't been added.
Trouble is that the DNA format is evolving faster than the robots right now. Just let us get the format sorted out then all this stuff will be added in as soon as it stabilizes.
It could be that the mutations routines will need a complete rewrite with all the stuff Num is changing in there.
One question for you.
What is a custom? You use that word a lot and I have no idea WTF you are talking about. Is this a miss spelling of some ordinary word or some jargon that I have never heard of. Understanding you is the first step to figuring out how to do the stuff you are asking for.
-
I thing he means "custom", but you know me - I'm quare :)
-
Ahh!
Now it's all falling into place.
That's a really scroovy explanation Shvarz B)
-
lol Shvartz is back , yay , ty Shvartz.
BTW: Thx for considering it this time PY. Instead of writing some sneeky reply.
custume labels is stuff you put on top of the dna , I know how it looks like in vb:
Const Buka = 50
-
Just to trow some more ideas out there:
[you]A better a way to evolve memory locations.[/you]
For the add or change into custume memory locations a new memory adress is required. Lets call this adress $.
The robot adds a random $ witch is A. The dna is equal "A"
Now the robot scans the dna it finds "A" the next random memory locations will be 50%A 50%$ so lets say it adds another "A". The dna is equal "AA"
Now the robot scans the dna it finds 2 "A" the next random memory locations will be 66%A 33%$ so lets say it adds "Z" lucky one too. The dna is equal "AZA"
Now the robot scans the dna it finds 2 "A" and 1 "Z" the next random memory locations will be 50%A 25%$ 25%Z etc.
This will alow robots to better select the right memory locations. Otherwise to make two memory locations match is like finding a needle in a heystack. Custom labels should help but we got about 800 free memory locations are the robots really going to evolve 800 costume labels , imagine how that will be on the user.
This is the same method I am planing to use for PusherBots.
[you]Use the stack in conditions[/you]
How about let a condition look like this
cond
>
start
stop
end
This will see if the first number on the stack is > then the second number on the stack.
Num was talking about getting rid of the line between the conditions and the body of the gene. Here is the only Positive( for me ) thing I can think of in that direction.
Ofcorse the defult conditions should be also possible, and data from conditions should not be put on the stack. I.e. a condition must have a logic opperator or no data at all.
-
Finaly one more that should imporve correct evolution.
Lets say some mathamatisian wrote a complex equation
exy + n ^ (a + B) - c / (n - k * (e + r) ) = x + w
If we change a single thing in it
exy + n ^ (a + b - rabbit) - c / (n - k * (e + r) ) = x + w
we get a whole different equation witch probebly has no meaning (in db espasialy)
But if we write a whole new equation ex: d ^ q ^ v + (a + B) - c / n * t / ( w - c * q ) = g ^ (n + c)
The chance that this one will do somthing more uniqu is greater.
So my idea is to add a new dimention to the evolution of dna in db (idea taken from the new smexe that is not uploaded yet, its too good I am still testing it)
Instead of the dna constriating mutations like a spray all over the code. It can focus in one one spot of the dna.
ex:
you = unmutated
M = mutated
The way it works now: youMUUUUUMUUUUUUMyouMUUUUMUUUUUMUU
My idea: UUUUUUUUUUMUUMMMMyouMUUUUUUUUUU
Ofcorse there must be a slider because the robot has to choose how mutch it wants to focus in or not.
(the focus does not have to be the senter of the dna)
-
Having researched all other ALife programs, I have come to the exact opposite conclusion as Bots. Namely, only by completely deregulating mutations will anything truly interesting develop.
Allow robots to pick random numbers. Allow them to make dumb mistakes, and decrease the specificity of commands.
For instance, shoot should allow -542 and 20000 to operate. Perhaps modular math. Accept that a bot will probably evolve 25 by doing -534 -52 mult 1110 div, and that there's absolutely nothing wrong with that.
And accept that alot of DNA will be absolute junk. 97% of the Human genome does not code for genes. But also a very little bit of change goes a long way. How much difference is there between Humans and our closest living great ape relatives? How much of that difference is in the non coding portions?
Deregulate it to the utmost extreme.
-
So you mean the "CUSTOM" labels such as...
def newmon 65
Right?
I'm glad we got that sorted out.
Well we definitely need to modify the mutations commands such that it is possible to evolve things like mod, ceil or floor. Those things are conspicuously missing right now.
I don't really see much point in evolving a system of custom labels (if that is actually what you are suggesting). The way the DNA is stored (ie. numerical array) doesn't even lend itself to this.
What I mean to say is that even if a robot has custom labels in its DNA text file, the first thing the program does is to add them to the custom sysvars list, then get rid of them from the DNA. Ever noticed that when you look at such a robot from the info window the custom variables are gone?
I have nothing against this idea but I just don't see any way it will improve anything.
OK down to specific points. I am not trying to be awkward or "sneaky" here. I just want you to look at the logical consequence of what you are suggesting.
'we need to remove stuff like ".aimdx .up store", must be automaticaly replaced with *.aimdx .up store" (I know that will take some work, change the way dna gets stored into vbs memory etc. outputed to the user)
First what is up with evolving ".aimdx .up store"? and why should it be replaced with "*.aimdx .up store"?
Lets just take a look at the way the program would see that line of DNA code.
First (for those not already familiar with the way the DNA works) DNA code is not stored as a string of words. It is stored in a 2 dimensional array ( DNA(1000,2) )
The first of the two dimensions represents the type of value (numbered 0 through 5) while the second dimension holds actual numerical values.
For example a DNA segment with a value of 5
If the type were 0 then the DNA code would be interpretted as "5" (a real number) or ".aimdx" (a label). The two are one and the same thing.
If the type were 1 then the DNA code would be interpretted as "*.aimdx" (the value held in memory location 5)
If the type were 2 then the DNA code would be interpretted as "mult"
If the type were 3 then the DNA code would be interpretted as "%="
I am sure you get my point by now so I will skip 4 and 5.
Right then back to the example. I hope that by now you must realize that the DNA code for ".aimdx .up store" is in every way identical to that for "5 .up store" so if we were to force this to change into "*.aimdx .up store" then we would be making it impossible to ever store any number directly into memory location.... ever!
A statement such as "1 .tie store" would suddenly become "*.up .tie store". That would be completely ridiculous.
Your ideas on focusing DNA mutations to specific "hot spots" within the DNA code has some definite merits. I will have to think about that a bit and let you know. It would probably involve the addition of a third dimension to the DNA array so that each location could be "tagged" as Mutated or Unmutated. Could be useful in other ways too.
-
Num, thats the long way, allow a robot to evolve so mutch special junk that almost any new change will do something special. Why cant we just take the shortcut?
Now I can see Py's point about keeping no ristrictions on junk dna though...
Its a tough argument I must say...
-
".aimdx .up store" is in every way identical to that for "5 .up store" so if we were to force this to change into "*.aimdx .up store" then we would be making it impossible to ever store any number directly into memory location.... ever!
1.)PY, I sayed change the way the code is handled completly
How is it imposible if you make it possible. Just change the types arround and how they are read before a store command and not. THING how to make it possible THING...
ex: ".aimdx .up store" is in every way identical to that for "5 .up store"
now it is: ".aimdx .up store" is in every way identical to that for "*.aimdx .up store"
DOH!
2.) And whats this sneeky crap about custome labels not working probebly, I love it. It is bugy so therefor we wont add it?!
3.) I know I am not from Englend and my english is bad but come on.
-
3.) I know I am not from Englend and my english is bad but come on.
I pray you are not from any country that speaks English as either a primary or formal language. Here's my list of countries you'd better not be from:
England
Scotland
Ireland
Wales
America (excluding the south of course :P)
Australia
Puerto Rico
Canada
British Honduras
-
PY, PY dont reply , now you going to start about how its is making the program more complex... dont bother.
I love the "whole circle of points to make a baby" we make a flower maybe? not a single bot?
-
1.)PY, I sayed change the way the code is handled completly
To what end?
It isn't broken so why fix it?
Why would we want to completely rewrite the whole program, destroy all the old carefully designed bots and basicly screw everything up just to fix a problem that isn't even there? There is absolutely nothing wrong with the way it works right now.
How is it imposible if you make it possible. Just change the types arround and how they are read before a store command and not. THING how to make it possible THING...
I have been Thinging. It didn't help me understand what you are going on about.
2.) And whats this sneeky crap about custome labels not working probebly, I love it. It is bugy so therefor we wont add it?!
:blink:
PY, PY dont reply , now you going to start about how its is making the program more complex... dont bother.
Too late I already did.
-
3.) I know I am not from Englend and my english is bad but come on.
Actually, your spellings brighten an otherwise dreary day. Every now and then you just come up with a real gem that is impossible to ignore. :D
By biggest problem though is that sometimes I just can't understand what you are talking about. I can get around the spellings. It is the general meanings that I get stuck on.
-
Should not mess up any of the robots because robots are writtin in text.
I havent seen a programer write .aimdx .up store when he ment 5 .up store.
Anyway I see the point about making junk transform into something workable.
Just can imagine now the huge gap between the evolution in db. And the user bot programing in db.
The evolved bots follow a completly different languge, I dont even care if you dont add any new commands to mutation. I want this hude gap to stay now or else the program will be to complex.
-
PY, its just I was leaving the lest two years the idea that problems of the real world do not invade syberspace...
-
I havent seen a programer write .aimdx .up store when he ment 5 .up store.
No?
Well what about this from Kozm0's Bodysnatcher..
cond
*.numties 0 >
start
*.tiepres .tienum store
.tieval .tieloc store
1000 .tieval store
stop
or this from my own Carnatus Orbis..
cond
*.robage 0 =
start
.shoot .ploc store
2000 60 store
200 61 store
.tie inc
*.myeye .refeye store
.tienum .vloc store
999 .venval store
stop
I would go so far as to say that you will would be hard pushed to find a single F1 bot that doesn't do this kind of thing a some point in its DNA.
-
The evolved bots follow a completly different languge, I dont even care if you dont add any new commands to mutation.
I wouldn't expect anything else. Why is this a problem?
Ever checked out neural networks? They never end up doing stuff the same way that a programmer would.
-
and whats the use of doing this?
-
and whats the use of doing this?
What's the use of not doing this? Why do you feel the need to make bots evolve the way you want them to?
-
and whats the use of doing this?
Doing what pray tell.
Once again, what are you talking about. Please enlighten me.
-
cond
*.numties 0 >
start
*.tiepres .tienum store
.tieval .tieloc store
1000 .tieval store
stop
can be well writtin as
cond
*.numties 0 >
start
*.tiepres .tienum store
453 .tieloc store
1000 .tieval store
stop
am I missing somthing here?
-
am I missing somthing here?
No you aren't and that is exactly my point.
If we change the parser code then they won't be equivalent any more. Therefore those genes won't work any more.
Or are you suggesting that we still allow the code to be written that way but that when the program displays the DNA in the information window, that it just displays numbers instead.
The labels are only there to make the DNA easier to read. They actually don't serve any purpose whatsoever
[sacasm]Hey why don't we just scrap labels altogether and just use memory addresses. Since they are exactly equivalent wouldn't this make things easier?[/sarcasm]
-
well its easy to use .aimdx instead of 5 for some people ok fine.
no problem there.
makes me wonder why no one uses this softwere.
In first grade they need to teach
.sx + .sx = .aimdx
logic is flowless...
-
In first grade they need to teach
.sx + .sx = .aimdx
logic is flowless...
Sweet :D
Don't forget to add
.aim / .aimsx = .sx
-
ROFL
-
Don't forget to add
.aim / .aimsx = .sx
Already did. Did I forget to mention that too?