You might enjoy Boxcar 2d, an evolution game with cars on various courses. You can let the car evolve from scratch, change the input factors, or design cars and let them evolve from there. Web-based.
Edit: I can't type well.
> If given enough time, it will complete the game in the most efficient manner possible
Not necessarily. It will likely find a good, but not most efficient strategy. This is because it will get to a point where choosing a branch leading to a better strategy would be more punishable in the short term, so it would never go exploring it.
This is what usually happens with evolutionary algorithms. You can look at this demo for a good example.
There's a concept called "genetic algorithms" that more or less mimic evolution. These algorithms are used for optimization problems. The basic idea is that any solution can be expressed in a limited set of variables, called the genes. If you take a solution, you can run it through the original problem and score how good the solution is. This is called the fitness function.
Now, you start with a large set of different solutions (made up from different genes) and run them all through the fitness function to measure how good each solution is. You then pick the best X% and "breed" them. That means, select some variables (genes) from one solution (organism) and some from the other and combine these to create a new solution (offspring). You can randomly make small modifications to the variables in this step as well (random mutations).
You run the next generation through the fitness function again and select the top performers to breed a new generation with. As you repeat this process, the solutions should gradually improve.
It's not a complete replication of the evolutionary process in nature, because in nature the conditions change constantly and this would be represented by a changing fitness function. What was a good solution in generation N might not be so good anymore in generation N+100.
A nice example to see this in action is http://boxcar2d.com/ . On this website, a simulation runs that tries to optimize the shape of a car so that it can cross a stretch of a highly irregular track. The "genes" of a car are the number, position and size of its wheels as well as the number, position, shape and size of other geometric shapes that connect everything.
As you leave the simulation running, you'll see certain car-configurations emerge as being very successful and reaching further and further on the track before coming to a halt. Sometimes elements from two very different configurations are merged into a new setup, often with wildly varying success.
That's amazing. I hope he'll keep it running after he wakes up, because this kind of algorithm can be amazing, but it needs lots of time.
EDIT: here's another example of such algorithm that might help you understand it better. http://boxcar2d.com/
The process of evolution is itself pretty amazing in what it can do. There are even a class of computer algorithms calls genetic algorithms that mimic it in order to solve problems. They can produce surprising results, like this ugly, random-looking antenna that nevertheless does very well at the task it was evolved for.
If you want to see a genetic algorithm in action, this fun little web app is a neat demonstration of it. It evolves two-dimensional cars to be better at driving a track with rough terrain. At the beginning, most of the "cars" can't even move, but after multiple generations they're racing along. It's pretty neat.
Shortly after BoxCar 2D came out, I thought it would be cool to make something similar but with creatures instead of cars. And, I wanted to mess around with JavaScript and Canvas.
I worked on this a ton for a few months, but then because of life and work I completely stopped. I wanted to originally release this with a lot more going on, but since I haven't worked on it in 6 months, I just want to release it as is and see what you folks thought.
You'd be surprised at how advanced and crazily clever machine learning can be, there are many different types of ML but for most you can quite literally just input all of your data and tell the system what you are trying to do and press go and it will iterate through training itself to find the optimal model.
It requires a ton of computational power and takes time to get desired results, a great example for this sort of tech is http://boxcar2d.com/ which is perfect for showing you how it works in a simple form. Obviously for a F1 car there are a shit ton more variables at play which drastically increases the computational power required and also takes longer to train the model.
Yes, just look at any antibiotic resistant bacteria. Or the peppered moth during the industrial evolution. Or even the apple maggot fly which you could argue is the emergence of a new species. All have happened fairly recently in time and have been witnessed by humans.
Random mutation is random, it may help or (more likely) hinder an organism, it just happens to be the mutations which help tend to increase the ability of an organism to survive and potentially have more offspring, spreading its mutation while the opposite is true for negative mutations. We all know mutations happen, if they can be bad why wouldn't some be good if they are just random?
If you have flash player you could even play about with http://boxcar2d.com/ and see for yourself how evolution sort of works. While it's a much more complicated in reality than this simulation is, it gets the basic points of how evolution works across fairly well.
> but the problem is that they evolve to do a single task well.
A good demonstration of this is BoxCar2d. (It's a genetic algorithm to design a 2d car to go over a particular course, or a random course). http://boxcar2d.com/index.html
I remember particular boxcar developed a random spike that came out ahead of it which would break off and flip the car over to get over a particular hill in a particular course.
If you tried running that car on any other course, that spike would just get in the way, but it served a specific purpose on that one course.
Those are criteria, not definitions. Definitions are made up of criteria, and viruses are missing criteria from every list. Homeostasis being the really major one.
This thing can evolve. Youtube's algorithm can evolve. Neither is alive.
Instead of explaining it, try watching one in action on your computer with BoxCar2D.
The algorithm tries to evolve a car which can handle rough terrain. There are "genes" that define the car, like the number and size of wheels, shape of the support structure and car orientation.
The first generation it comes up with 20 completely random designs. Some are just a box without wheels which obviously don't work. Others can kinda inch along for a few meters then fail. If you're lucky it will pop out something "car like" which does pretty well. In the second generation it begins "breeding" various car designs to combine their traits. Hopefully, a combination of two good designs will yield something great. A lot of times it fails though.
There are also random mutations, where the algorithm just makes a random change. Sometimes they are effective, most of the time they aren't.
After playing with it, be sure to check out their explanation of the algorithm. It's a good discussion on how the cars are built and how they are "bred" together.
Na verdade, a reposta é sim.
Acontece que a evolução das espécies não é um processo 100% aleatório sem bias. Podemos ver que não é só necessário as mutações aleatórias, também é necessária uma seleção e reprodução.
Na natureza, os organismos que receberam genes que não benéficos para o ambiente que vivem morrem rápido. Os que sobreviveram podem se reproduzir e transferir seus genes para a próxima geração de organismos.
Em termos mais abstratos, aqueles indivíduos que não tem uma pontuação suficiente na métrica de adaptação são eliminados e o material genético daqueles que tiveram pontuação suficiente são misturados. Essa idéia é a base dos "Algoritmos Genéticos", uma forma de solucionar problemas que você não sabe como solucionar mas sabe dar uma nota para possíveis soluções.
Por exemplo, veja este website que faz essa idéia que eu descrevi com carros. A primeira geração tem seu código genético 100% aleatorizado mas a partir da primeira geração, eles são avaliados por quantos metros conseguiram andar e os melhores são misturados em entre si. Se você deixar a aba aberta por um tempo, vai ver que a geração atual é normalmente bem melhor que as anteriores.
A teoria de Darwin é exatamente isso mas aplicado na vida real. A diferença que o próprio ecosistema/ambiente se encarrega de "avaliar" (matar) os organismos com genes menos adaptados.
Not exactly like the gif but Boxcar2D operates on a very similar basis. The means for improving these kinds of cycles over time is accomplished usually by the use of a genetic algorithm.
>Ok Burgess Shale to trilobites still nothing transitional.
Like I said, we don't expect to find much from this time period. Soft-bodied organisms don't fossilize well. Evolution by no means rests on whether or not we can find such organisms. There are mountains of evidence for it already elsewhere.
>As to using the words wanting to fly it was just an attempt. To make a point about how ludicrous all this seems since evolution was done with out purpose yet as I stated birds have hollow bones and feathers something that is done on purpose in aviation.
Play around with this simulation. It was built using the principles of natural selection, upon which evolution is based. This little app shows clearly that it's possible to get something that appears designed through selection with random mutations at its base. And like I said, the evidence for dinosaur-to-bird evolution is out there. I can link you to Google again if you'd like.
>All anyone can do is state a bunch of evolution theory to defend something that is not crawling around oozing out of a crack or growing out of something's back.
I have no idea what you are saying here.
>All I can say is Darwin must have been as pissed of at god as some of you are.
I'm not pissed at god. Why would I be pissed at a being for which I see no evidence that he even exists? Like Darwin, I looked at the evidence and saw that evolution explains the world around us in a way that creationism fails to.
>As to the brochure well I am sorry you did not like it.
It's not a matter of liking it or not. In fact I do like it for the reason that I find it not only hilarious, but an easy way to show that the JWs have no idea what they are talking about and are willing to use deception to pretend that they do.
So someone was nice to you therefore all his theological ideas must have merit? You will find people in your life that vary in kindness, logic and intelligence and they will all believe a mix of true and false things. Being nice or even smart is no guarantee you're going to be right about everything or eben anything.
>"we just magically sprang up from nothing and now here we are!".
If you think that is what evolution describes then I almost think you must be trolling. Go and read up on mutation and natural selection and find out its simple but awesome power to create. Go and watch boxcar2d for a while to see it in action with just one very specific selective criterea.
It's not arrogant to think we came about through natural processes and are just one amongst many organisms trying to find our way. I would say the opposite about the belief that you were some special creation of a more powerful version of a human so that he can have a personal relationship with you.
Well, here's something you might find neat.
Oh, and this is a bit tangential, but evolutionary algorithms are cool stuff. Explaining those would take a while, but here's a neat thing showing them in action.
If you want an easy way to mess around with evolutionary learning, BoxCar 2D is a whole lot of fun.
On a choice of course, you can evolve a car from scratch or design one and have it improved by evolutionary selection.
There's even /r/boxcar2d
I used to mess around with BoxCar 2D, but its based on flash. my browser wont even render it because I think flash is being removed from most browsers now. but you can probably get it to work. I think there was even a version made in java somewhere.
Data.
Akin to this kind of thing which uses genetic algorithms, the universe could be the biggest "sandbox" ever, where life runs its course according to the physical laws perhaps set by the higher power or designer or programmer or whatever.
Eventually when the stars burn out, the data will be collected and analyzed, and maybe the parameters will be tweaked and the universe rebooted, for ends we will never know.
Problem is, all the things you mention are explainable by science. There is no reason there think there is anything that we dont know of that is super smart and created things.
About the chance, try playing BoxCard2D for a few minutes, and give it a thought how masses of tries eventually lead to a working individual for this very specific purpose.
For a simple version, you might want to see this Evolutionary car Similar ideas have been used to make money in trading.
I've never seen a realistic version simulating the evolution of life, it's a big problem.
Think of how complex the environment of the earth is. Varying sunlight, geography, tectonics, etc, and that's just physics. We understand how to simulate most physics, but to do it completely accurately is very intensive. It's the reason video games take lots of shortcuts.
Chemistry is just as complicated and we understand less about chemistry than physics. Chemistry is very important in life science but we couldn't model it completely accurately. For evolution to occur, there must be a selecting function. Death and reproduction. We can make very simple ones, like the distance of how far a car has travelled. But simulating IRL death would be much much more difficult.
tl;dr Simulating reality is intensive, we still don't know how to do it accurately.
Woah wait, I learned about evolution accidentally while studying artificial intelligence. If biology is too difficult, try learning about the relevant algorithms.
Here is my textbook.
Check around Chapter 7.
did some research into evolutionary algorithms in the past and there are a bunch of cool things that you can leave running as they get better. Here are some notable ones I found: cars: http://boxcar2d.com humans: http://rednuht.org/genetic_walkers/ another car one: http://rednuht.org/genetic_cars_2/ you can find more if you google evolutionary algorithm or genetic algorithm games.
You might enjoy this game. It randomly generates 2D "cars" with a number of wheels and a frame, then sets them rolling on a fixed track. The cars that make it the farthest on the track are selected to produce the offspring for the next generation. It can be interesting to watch and see what you end up with after a while.
I love this idea! I actually tried making my own evolution sim game as one of my first projects in unity, I wasn't able to make a real game out of it but I had a lot of fun and I learned a lot. I had a very basic food chain and a very basic set of genes, and it was so fun to let the simulation play overnight and wake up and see what forms my creatures took, especially when it was something very unexpected.
I was also inspired by Spore (or at least what spore sounded like on paper before its release), and another little webgame called Boxcar2d. It was so interesting letting that one play itself in the background and then check back later to see what kind of changes took place. Also, it was a useful way to learn some unexpected things about evolution. For example, I noticed there was a "sweet spot" for the percent mutation (the amount that progeny can be randomly different, a global variable you can manipulate), if it was too low you'd never make progress, if it was too high you'd lose all of the progress you had made in a short time. I wondered what value you'd end up with if the rate of mutation itself was a genetic variable.
It was super fun watching my two species compete for evolutionary dominance. I had a bit of trouble interesting my friends and family in the idea of "watching evolution happen" as a game, so I never really made it into something that could be generally seen as playable, but I had so much fun making it. I realized I was actually playing the game I wanted Spore to be, through developing this game.
Looks like you've found a great direction for your game. It is also suuuper pretty, in a minimalist way. I was curious how you made the terrain look so good, is that with SSAO?
I'd love to help you test it, I'll be downloading and exploring what you have so far. I'm happy that someone is exploring the evolution sim genre.
edit: my first colony
Check out http://boxcar2d.com/ to see how a little bit of random variation and lots of selective pressure can lead, several generations down, to sophisticated complexity without any directed development.
If you are looking for something a little easier than walking, THIS is also a cool evolutionary program, and if you look around the website a little, he goes into what is actually going into the program.
That's super neat, but I don't think it's detailed enough to really represent human anatomy. Still awesome! You should check out http://boxcar2d.com/ if you haven't already, I really enjoy that as well.
BoxCar2d Is pretty fun to leave going in the background.
It's basically an evolution protocol to evolve the best "car" for a randomly generated track. If you leave it on overnight, it can get really interesting!
Here's an old, but good game that I used to play: Sodaplay
BoxCar2D also has some fun stuff to play around with.
I really don't know many bigger budget games that revolve around constructing so much. I've got a spare copy of gmod on steam if you want it. From what I've seen, you can build some pretty impressive contraptions in it.
A genetic algorithm is a very primitive form of evolution that seems to create solutions to complex problems from a blank slate. These have proven themselves to be quite remarkable and they produce some amazing results when applied to problems they're ideally suited towards.
There is no "intelligent" intervention here, only genetic selection pursuing a particular goal, or natural selection in other environments where the genetic creatures are given free reign and no particular goal.
These applications of genetic mixing and selection can be tested trillions of times per session. Even a simple example of evolving a "car" is educational as it demonstrates in rough terms how natural selection works.
You're presuming that information comes from non-information, but this is not the case. What's happening is order from disorder, or useful information is being extracted from random information. It's not really being created or destroyed, only transformed.
This is a cool idea, and it could definitely be done in java with some kind of genetic algorithm. If something like this can be done with flash/actionscript, it could certainly be done with Java. You'd just need a decent fitness algorithm that could rate how good each generation of creatures was, and a framework for creating the creatures programmatically. Coming up with the algorithms would be the hard part. I don't think implementing this in Minecraft would actually be all that much of a stretch, and I don't think it would take a supercomputer to do it.
The problem with genetic algorithms is that they take many generations to come up with something decent on their own, so unless you somehow seeded the process with some "good" creatures, you'd be playing a game with a bunch of freaks of nature for awhile.
Apes came from their ancestors. It can be a little tricky to wrap your head around how species can evolve to suit their environment with nothing more than mutation and selection. I suggest watching BoxCar2D for a while to grok it. All it does is randomly create shapes, the shapes that roll furthest to the right get reproduced into the next generation with small, random mutations. Over time this means that mutations that help this placeholder for fitness become dominant and soon you have randomly generated cars that seem perfectly "designed" for their environment. You can even select a different terrain and watch how the entities evolve differently to suit that environment.
I had 8 neuralnet quake2 bots running on a Cyrix CPU in (around) the year 2000.
The Neuralbot hasn't very smart because their neural structure wasn't deep enough for complicated behavior, because no one had the processing power to train and test a "deep" neuralnet or the experience back then on how to properly design it.
It should be possible to have a large Minecraft server and each player that connects is running one bot, with all the graphics turned to low and all the processing power of that pc focused to run just one very large, complicated neuralnet.
The only question is the reward function. Neuralnets can design and optimise complicated things from an engineering perspective. It there a minecraft mod that could challenge them similar to this or This?
Here's a different example using 2d cars
Basically the system starts with random shapes with wheels on random positions, each one is tested and the best results are combined and passed to the next generation
It probably used a Genetic Algorithm or something like it (I think DeepMind actually uses neural networks of neural networks, but whatever). "Incentivised" in this case just means the best models won and were chosen to proliferate or "mate" with other good models. Basically exactly like how natural selection works.
For a simpler example check out BoxCar2d: http://boxcar2d.com
This webpage is a simulation of evolution. It randomly creates cars and runs them on a track. Then it takes the best performing ones, and makes new ones with random modifications, and runs them. Then it does that again, and again.
Show him that, and ask him if the website creates cars "with intelligence".
In principle, it isn't very difficult to make a computer learn by trial and error.
It starts by making decisions randomly, and evaluating the results of those decisions. It remembers the choices that lead to a good outcome and weights them more heavily so they are more likely to be chosen in the future. Similarly, bad choice get a lighter weighting and are less likely to be choose. After a lot of trial and error, the computer learns which choices are likely to lead to better outcomes.
Here is a program called BoxCar2d that randomly constructs little carts, and learns which designs work best.
The difficulty explaining comes from the fact that he uses two techniques of AI instead of one, and they are cleverly intertwined.
The first is evolution/genetic algorithms. Instead of explaining how that works, have a look at this. Every generation, it looks at what cars did best and uses those as the basis for a new generation. What SethBling does is very similar, but instead of car designs it produces different neural network layouts. Then he races those layouts through the level and breeds new ones from those that did best.
Normally, neural networks learn through a process called back propagation. In this case, however, they don't learn at all, in the same way the cars don't change their design. The reason that's fine is because the level always stays the same and evaluating performance is as easy as seeing how far a network layout made it. I skipped some details, like how this particular type of network is unsuited for training, but that's the gist. Simple designs race through a level and the best ones breed more designs. Eventually you end up with some design that is sufficiently able to respond to the things around it that gets you to the end of the level.
You can probably see a lot of the ways that this doesn't translate to melee. Even just evaluating performance is incredibly difficult, which is crucial to the way SethBling's implementation works. A melee bot would still require some combination of different techniques, but definitely not the same as these.
I remember distinctly I read a passage somewhere explaining their approach was an iterative and evolutionary one. As a boxcar2d fan, so I somewhat can see the challenge behind tweaking such a model until it does what it's supposed to.
Forgot to mention Kostack and his "pre-fractured" towers, btw.
-4453
> Behold what you'll only see in every (n*(10^0 + 10^1 + 10^2 + ..... + 10^n-1 )) numbers.....
+/u/User_Simulator /u/User_Simulator is awesome! That idea is great. What would make it better would be to isolate it to it's own comments, and then try calling it on itself. I imagine there will come a point where each comment will be more similar to it's predecessor than the predecessor to its own predecessor.
Reminds me of BoxCar2D. Wow! Does that mean this bot is similar to a learning AI?
Other, similar websites for those interested. OP's link is a fork from this project , which in turn based on BoxCar2D, which is a flash-based version with more options. The HTML5 versions are a bit faster, however.
Link to a thing your thing reminded me of.
EDIT: More details to make comment seem less click-baity:
It's a program that evolves cars to go down a track. It was really popular a few years back under the meme-name "derp bikes."
For a good hands-on demo, find a evolution game like boxcar2d, [Breve]() (a screensaver type), or any nuber of alternatives simply seeing it in action gives you a good feel of whats going on even without going into the specifics of genetics.
This is a cool idea, I hope you run with it! You might be aware of some other genetics-based webgames, like Box Car 2D and Critter Mound (this one appears to be down :().
I love genetics games, natural selection is just an incredibly interesting algorithm. There is also huge potential to develop an intuitive understanding of natural selection through playing these games. I remember playing (err, maybe 'watching' is a better word) Box Car 2D and really starting to get a grasp on the "information" aspect of natural selection. Fitness is really just stored information about what it takes to be successful in a given environment. By increasing the rate of mutation, you might increase the potential for that data to grow, but you also increase the risk of losing data (hence the importance of genetic diversity, something that isn't too well represented in Box Car 2D). Statistically (i.e., over generations), a given rate of mutation will either result in better average fitness or worse, mediated by a slew of different variables.
My point is, I gained an understanding of all of that simply by watching goofy looking box cars try to make it down a random track. There is just something inherently interesting about the algorithm of natural selection. After that game I searched for more and it doesn't appear like there are very many. So I'm glad to see you carrying the torch!
Is this what you're thinking of? Other posters have covered this already, but it makes random changes and then keeps them if the changes helped. More sophisticated simulators could also categorize the type of changes made and decide if they were overall helpful or not, and favor those types of changes.
No nature is enough. They live in a game world much like Super Mario, jumping from pipe to pipe. They fail the calculation, they either don't make it to the pipe or jump over it. Everything except landing on the next pipe and they fall to their death.
Have you ever played Box Car? Just open in a browser tab and keep watching for a generation or 10, or let it run overnight.
Nothing quite as awesome as seeing an animal do animal things, but it's a simple evolution simulator. It attempts to make the best car, based on how far it can go before it inevitably breaks down, and how quickly it got there.
This web-game uses evolutionary algorithms to produce irreducibly complex designs. It's also very amusing.
It's really not hard to produce irreducible complexity with evolution:
In the case of Boxcar2d, most of that will involve wheel placement. One wheel might be placed excellently, but without good placement on other wheels, it's not going to work.
http://boxcar2d.com/ At this website they can watch evolution happening before their eyes. You can google 'genetic algorithm car'. You could also print out recent articles on neanderthal DNA. Anyone who has seen the Maury show understands the value of DNA evidence.
This isn't proof, but, sometimes when you can't appreciate a problem it really helps to see it in action.
There's a website callled BoxCar 2D, which runs a physics simulation in your browser that tries to create the best "car" from a genetic algorithm, which is designed to mimic evolution.
Sometimes it takes a lot of generations to get a decent design, but it gets there. And sometimes the designs that work don't end up looking like what you'd expect (wheels in bizarre places, gigantic poles coming out the back to help with stability issues, etc).
I don't know, just seeing it work in action on the computer helps me to appreciate how it could work in real life, and once you accept that the process works in theory (as you could see on the website), and that you could expect genetic mutations to occur, and that it makes sense that creatures who score better (just have an easier time surviving) tend to be more successful, it's difficult not to accept.
For some reason, genetic algorithms have a lot of star power, which is truly a bizarre thing to say about an artificial intelligence algorithm. But they have a big problem when it comes to using them in games, which is that of the various known machine learning algorithms they are by far one of the slowest. For one thing, they are trading speed for their capabilities, and for another thing, their capabilities are pretty badly oversold for some reason.
Imagine for moment that you're playing this, only it's some sort of game. Imagine that you have to drive around all those little non-functional carts before you get anything even halfway decent. Even with the computer running through them for you, it can be half-an-hour and several hundred little carts before you even get a good one. For that matter look at how many blindingly stupid little carts get run; it can be a dozen generations just to finally filter out the ones that have no wheels at all.
Running any sort of GA at human speeds is effectively impossible, because the (average) human will be bored of your simulation before you get anywhere interesting. Running them faster obscures what's going on and you might as well do something else at that point.
Genetic algorithms are simply way less interesting than they sound.
Why don't they make sense as a result of some random process?
You can watch simulations of how evolution works to get an idea of how a random process can produce a seemingly designed object.
Watch it happen: http://boxcar2d.com/
Searching for 'boxcar2d' will give a couple results that work on smartphones too. Searching youtube for 'genetic algorithm' gives many similar projects, often explained and illustrated; carykh has many entertaining examples.
>How can something so complex suddenly emerge from a past chaos. How can evolution explain that?
You should look up the site BoxCar2D: http://boxcar2d.com/
You start with a random population of cars that are terrible at moving through a level. Then after each member of the population makes their attempt, the best (i.e. the fittest) of the population are taken as the new default with slight mutations. You'll find that you go from absolute garbage to incredibly well performing cars, and it's all based on very simple rules. No designer needed
How is this any different than https://www.youtube.com/watch?v=Y-c9ONfSv-Q?
As far as I can tell, this is a direct ripoff of https://github.com/NeatMonster/Carvolution/blob/master/fr/neatmonster/labs/Carvolution.java, even with the same set of GA parameters and the same initial settings.
From Carvolution:
private static final float CHASS_MINAXIS = 0.1f; private static final float CHASS_MINDENS = 30f; private static final float CHASS_MAXDENS = 300f; private static final float WHEEL_MAXRAD = 0.5f;
From your project:
'min_chassis_axis': (0.1, float), 'min_chassis_density': (30.0, float), 'max_chassis_density': (300.0, float), 'max_wheel_radius': (0.5, float),
Edit: I see you mention that it's "loosely based" on http://boxcar2d.com/index.html, but AFAIK the source for that isn't available and "loosely based" is a weird way to say "used literally the exact same algorithm, settings, and values" as another project developed 5 years ago.
Program by hand a simple evolutionary algortihm. Or maybe play around with existing web applets -- I love this one. In my experience, it's very useful to understand how the actual algortihm unfolds, and how it is so powerful that you can get a very well designed car in just a couple generations.
Thanks. If you're interested Boxcar2D is nice on-line example of evolutionary design (not by us) and Darwin's Demons is an evolutionary arcade game (think space invaders with evolving aliens) that was developed by Polymorphic Games.
I like this analogy. I'd say Contessa's is almost like a genetic algorithm to optimize a problem, even if the solution looks absurd to an outside observer.
If anyone wants to see GAs in action, check out http://boxcar2d.com/ from a desktop browser. It's so fun.
A fun thing to see algorythm breeding is boxcar2d, where randomly generated combinations of triangles and wheels try figure out how to cover the longest distance before getting stuck. Generation 1 has 20 random "cars", generation 2 has mutations of the best "cars" of generation 1, and after a couple generations you will start to recognize similar-looking cars returning every generation.
I invite you and everyone else to check out BoxCar2D: http://boxcar2d.com
It will give you a bit of a foray into understanding how this stuff works. It's a pretty easy concept once you can see it in action, but it can be tremendously powerful if applied to the right problem.
For the record, BoxCar2D is based on some old Genetic Algorithm work done by Qubit from DevIsland (his site isn't around anymore but there's still some stuff, including the old source code, here: http://web.archive.org/web/20130822232624/http://www.qubit.devisland.net/ga/index.html). I feel like he wasn't given enough credit.
It probably isn't what you're looking for, but it sounds a lot like the game at http://boxcar2D.com, which uses genetic algorithms to create cars. On 4chan when it came out (embarrassing time of my life) we called it Derpcycle
I can show you some software simulations that provide evidence for Random Mutations + Natural Selection + Time = Evolution.
The first is a simulation of a 2D car, where the goal is to maximize the distance that cars can travel over random terrain. The highest scoring cars "survive" and undergo further random mutations until you end up with a little car that is adapted for all kinds of different slopes. The mutations are all random, but only the beneficial mutations are selected via this scoring system (which is an analogue of natural selection). Check out: BoxCar 2D. Read the about page to see all the analogies for chromosomes, mutation, and mating. This process really does lead to an increase in information via random mutations.
If you're looking for evidence that evolution can happen in life, then I can show you our longest running evolutionary experiment with E. Coli.
> Although the bacteria in each population are thought to have generated hundreds of millions of mutations over the first 20,000 generations, Lenski has estimated that within this time frame, only 10 to 20 beneficial mutations achieved fixation in each population, with fewer than 100 total point mutations (including neutral mutations) reaching fixation in each population.
Of course, I can't tell you whether or not those mutations are all random or directed.
I've been playing with http://boxcar2d.com/ this weekend (it's addictive) and it is very intuitive that the traits that survive are not just the ones that create the best performance, but the ones that are the most 'robust' - they're not going to cause major problems with only a small mutation.
The linked article notes research that traits are encoded in the maximum number of ways possible, reflecting this principle of robustness. It doesn't say, but inferrs, that a trait that for some reason could not be encoded in multiple ways would be less advantageous, and selected against. (There would be no more direct way to test that proposition, short of developing a viable alternative evolutionary path in the lab or a supercomputer - and even eperiment that would still probably just spit back whatever assumptions you put into it.)
Now, this seems to me like an entirely different principle from survival of the fittest. When you look at a fitness function you only see fitness - no traits. Common traits might in fact be spread all over that diagram.
The concept of entropy in physics means the number of microstates per macrostate (i.e. per trait). It's not based in calculus, as we usually think of fitness.
I was looking for the exact same thing, and I found it!. This was from the HACK Wheel of Fortune video which I believe predates DONG. Also, I found this other one while looking for the one mentioned in the video.
> since it does trend towards perfection
No, it doesn't.
Let this simulation thing run for a few hours. It generates 'cars' with a certain number of wheels (between 0 and 3 by default) and they try and drive as far as possible. The winners in each heat then 'breed', and in theory they would each go further each iteration.
The graph in the top left tracks the furthest progress each heat, but it isn't a constant increase in distance: it declines at random (not entirely random) points.
Furthermore no evolved car may ever get past a certain obstacle, be it "insurmountable" or not. I've often seen it just level off, only to decline, then get back to the same level.
Let me know when you've run the simulation to infinity though, just to be sure
Er... With respect, that is reproduction.
I can't do the algorithm justice. You should read about it: http://boxcar2d.com/about.html
More information: http://en.wikipedia.org/wiki/Genetic_algorithm
There's nothing, in principle, that differentiates reproduction in a genetic algorithm on a computer from genetic reproduction in real life.
It's the same thing as this. Define a goal such as increase position X, or increase score... And have it do an exhaustive trial/error with random random adjustment on successes till you're satisfied with the result.
This isn't AI. It's not learning how to play the game.
I think you used the wrong arguments there. Evolution is an established scientific theory because it went through the process of Hypothesis - Experiment - Theory - Prediction - Testing. The existence of God is stuck at the hypothesis stage and can't move from there (there are experiments around of the effectiveness of prayers and other stuff but they all failed). Evolution instead has survived a huge amount of predictions (certain types of expected fossils) and testing. It's also much more concrete than one would expect. As a computer science I love to show people how virtual objects evolve into something different through genetic algorithms. Something you can show people (let me know if you require explanation for this): http://boxcar2d.com/
I would actually prefer a procedurally generated map ( i.e. No Man’s Sky) so that it would be a unique experience every time, and after each game players get to rate the map which will improve the machine learning process for generating maps, rather than having players memorize the maps like the back of their hands.
But of course this is highly complex and not economical for the price of the game and the clients base.
Edit: a neat thing i forgot to add : http://rednuht.org/genetic_cars_2/ AI learning to generate the ultimate terrain vehicle
this one too : http://boxcar2d.com/
Yeah, something like that. My study is artificial intelligence, and contrary to popular belief it's more than making smart robots. It's about finding solutions to hard problems. So in my case, it will probably be something like an evolutionary algorithm, where you start with maybe 20 initial solutions, find the best ones, pair and modify them in the next generation and so on. An example is http://boxcar2d.com/ where you after some generations get cars that can drive longer.
But instead, apply the algorithm to certain variables regarding a bicycle component.
> I still don't know your answer to my question. But anyway the question is there for you.
I missed the initial question, but I alluded to the answer in my previous post. There are distinct differences between code that is machine generated (or the result of a genetic algorithm), and code that is intentionally crafted. I would assert that we could rule out a programmer if the code was known.
A genetic algorithm (see one in action) often results in messy, inefficient ways to accomplish a goal. For example, biological life appears to operate in a messy and inefficient way. If life were designed, we wouldn't see things like 20% of pregnancies ending in miscarriage or sharing the same tube for eating, drinking, and breathing. Admittedly, this could also point to a terrible programmer. The biggest clue would be our intuition telling us if some aspects of the code make sense at all.
Other types of machine generated code tends to be highly optimized, and highly complex. Instead of a car that can hold one to four people, we would have cars that hold only 1 person, only 2 people, only 3 people, and only 4 people. Our reality doesn't appear to operate this way.
The mark of an intentional and intelligent programmer would be elegant code that combines simple elements and rules to achieve complex results. String theory certainly points in this direction, but that doesn't prove a programmer exists. If the programmer created the game AND the character, we are able to prove or disprove a programmer by determining if a character is too complex to have arisen from the game. If the programmer merely created the game, we can't know either way.
Box Car 2D is a really simple in-browser game. It will generate a random shape with wheels that will try to drive down a hilly course. You control natural selection by up-voting or down-voting a generation of car. The aim is to evolve the best car for going along the course the fastest. http://boxcar2d.com/
That's the thing, though, a neural-network, at some level is still just a bunch of "pieces" that were programmed in at some point. I mean, it adjusts weighting and connections, but it's still only running on a set of preconfigured pieces. I mean, BoxCar2d will "learn" how to make a better car, it wasn't programmed to make a 3 wheeled monstrosity, but it will do so on occasion.
Of course, the counter argument is that all that makes up a person's intelligence could be broken down into a bunch of weighted connections, and therefore all we need to do is get a large enough neural network to get the same amount of nuance. Of course, when you do this, the engineers who study it will be unlikely to make heads or tails of it, so we'll still be at a loss for where the "intelligent message" is coming from.
Anyway, my basic stance on all of this is that it's rather impossible to "draw a line" for AI, and I think we'll have to evaluate any such claim on its own merit. Basically anything we can come up with, someone will eventually program a specially designed algorithm to meet that requirement, and then we'll say, "well, that's obviously not AI", the history of the field is nothing but these arbitrary lines being drawn and crossed and then considered invalid.
Imagine you had a robot that could build a robot just like itself. But the robot wasn't perfect and every time it built a copy of itself, it would introduce some random changes to it's own design by accident.
Now imagine your robot builds two copies of itself before breaking. The first copy is randomly changed for the worse, and can't build any copies of itself. But the second robot is randomly changed for the better, and it can build three copies of itself before breaking. So now the changes for the worse have died out and the changes for the better are in all the new robots.
Now run that crapshoot of a process for literally billions of years. If thumbs help us make new copies of ourselves, we're bound to luck into thumbs eventually. No observation or knowledge is necessary. Just an unimaginable volume of random chances.
Also for funzies, here's a program that evolves a car to run down a track. Watching the car slowly evolve by random chance may help you internalize the process better than text can. http://boxcar2d.com/
There is so much evidence out there in favorite of evolution that it is proven beyond a reasonable doubt. Several completely different disciplines have all come to the same conclusion.
You can even see evolution in action on a computer. Genetic algorithms use evolution to solve problems that cannot be found by simply searching all possibilities. BoxCar2D demonstrates a genetic algorithm using a simple car. Genetic algorithms use:
Edit: Genetic algorithms find solutions much faster than BoxCar2D because judging their fitness doesn't take several seconds to complete. A simple genetic algorithm that I wrote recently ran 10,000 generations per second, with 100 individuals in each generation.
In my opinion, the selection mechanism is more interesting than the mutation, exactly because it provides a "direction" for the changes. Take this silly genetic bicicle generator.
If you remove selection (increase population to 100), you'll get a bunch of weird looking things that ocasionally will be able to move. The selection part of the algorithim is what makes the next generation of bikes perform better (and the process interesting).
Mutation is what makes evolution possible, but selection is what makes it interesting.
Do you mean that flash simulation that uses genetic algorithms on a car going down a track and the cars that go the furthest reproduce to produce offspring for the next generation, so after a lot of generations you get a car that "evolved" to the specific track? If so than it's Boxcar 2d, if not then use more words to describe it.
It is! And boxcar2d is a really fun example, created by a redditor. You can design the first generation of a car and then watch it evolve!
I lost hours to being mesmerized by this. :-)
>I believe somewhere over the course of time Atheists have become the beast they despise.
I share your fear. But my brethren call me an accomadationanist, so there ya go.
>Being a computer scientist...
You'll find this fascinating:
>... I find it more difficult to believe that the world that I enjoy so much was created by a random number generator than that it was created by a god.
Most educated Christians accept scientfic consensus on the Big Bang and evolution. Of course nobody knows what caused the big bang, or abiogenesis. They seem comfortable with that, at least for now.
I love impious humor, but I detest the atheist equivalent of "lol yr a fag".
Here is a good demonstration (it is a genetic algorithm that tries to mimic evolution to get useful designs in its own environment). Watch for awhile, hit refresh, watch some more. Natural selection is when something causes one type of performance to be more likely to survive over another. Sometimes a mediocre design will win out over what was a good one placed in bad circumstances. Sometimes it is just a test of adequacy, (can you run above a flat speed?). Sometimes it is a comparison (can you run faster than your peers?). But something causes one trait to be more likely to survive than another.
Evolution is the long term changes that we see as the result of a prolonged natural selection. It doesn't "choose", per say, but the outcome often deceptively makes it look that way, because of how probability works at larger scales. It is the long-term product of one trait being on average more successful at surviving a set of conditions long enough to reproduce than others, which results in a change over time.
A useful note would be to understand that in evolution, there is no such thing as a "finished product". Every species can be accurately viewed as a "transitional form", and the overall process is basically a random walk with pressures applied through the process of reproduction.
For a simplistic visualization of how specific features might be evolved through random mutations and a fitness landscape, something like this might be helpful. (Try changing the course to see which features are more likely to evolve depending on the landscape.)
That is fantastic! It reminds me of Boxcar2D. How would I start off building a non-autonomous quadrocopter? I have a plane, but no good places to fly in nearby. One of these would give me a lot more choice, and I could add autonomy later on.