@TagliatelliMonster
You said...
So, what does the programmer actually model in this algorithm?
1. the chromosome. The "genotype". And that in terms of structure, not in terms of encoding. The chromosomes of generation 1 could essentially be generated randomly. Usually though, in practice, they'll start with "the best" design that the human engineers came up with and optimize that one with the algorithm. But it will also work if you start with randomized strings - it will just take longer for the algorithm to complete as a lot more generations will be required.
So there is no possibility of anything being destroyed?
So you know that none of these generations will destroy anything, to the point you have to start with a new genotype?
I don't know what you mean with "destroyed".
If you mean going extinct, then no. You could do it by for example also programming in a chance that an asteroid will destroy the room in which the piping is being optimized, but what would be the point of that?
You could also implement a "minimum score" and simply "kill" all individuals that score less then that. So if an entire generation doesn't achieve the minimum score, there would be nobody left to produce a new generation. But again: what would be the point of that? The point of the GA is to look for solutions, after all.
In real life, not reaching the minimum score would indeed mean the end of the line: it won't survive to reproduce. But GA's aren't real life. They merely use the principles of biological evolution as an optimization module and / or search heuristic.
Extinction is the result of radical environmental change with the population's evolutionary pace not being able to "keep up" with these environmental changes. Such changes can be any number of things: new natural enemies evolving and/or migrating into the habitat and the population not having an evolutionary answer fast enough. Or indeed natural disasters or rapid climate change like the start or end of ice ages, etc.
If you mean "harmfull mutations" causing a result that is actually worse then the previous generation: sure, that can and does happen. Those will be discarded quickly though, as they won't find themselves in the top X performers and won't be selected for producing a new generation.
So the more generations used do not have a significant impact on the success of accumulated beneficial mutations?
Off course they do.... the more generations it runs, the more time opportunities there are for accumulation of improvements. This goes on until the population reaches a "local optimum". The "local optimum" is a genotype state from which there are no more easily accessible (or even possible) gradual evolutionary pathways towards further improvement. This is essentially what punctuated equilibrium is all about. Which means that if the selection pressures (= the total sum of environmental parameters) stay stable, then there comes a point where natural selection will favour the status quo. Pace of evolutionary change at this moment slows down, or even comes to a halt.
When the selection pressure change again, the local optimum moves and new evolutionary pathways towards further optimization open up. Selection now no longer favours the status quo by default.
In the Boxcar2d example I gave you, this would be the moment you could change the track, which would turn selection pressure on its head. The cars that were optimized for the track they evolved on, will no longer be fully optimized for the new track.
For one thing, the programmer assumes he gets to the point of "the best".... thus he programs for the best.
You said it.
Congratulations.
You managed to completely misunderstand everything I said, it seems.
Eventhough I really took the time to give you a comprehensive explanation of how all a GA programmer does is implement evolutionary logic and model an environment in which this logic is then applied, which results in optimized designs for that environment and where these designs
are entirely the work of the blind algorithm, not the programmer.
I mean............ think about it......
If it was indeed the work of the programmer.... then why even go through the immens and costly trouble to build this GA algorithm and the entire simulation engine (which can be EXTREMELY complicated), only to end up with a design that the programmer was already programming against from the beginning?
It makes no sense at all.
The entire reason why people use GA's, is precisely because the GA's
themselves are capable of coming up with better solutions then the human engineers (or programmers).
Please think it through next time.