2019-01-05, 01:56 AM
An interesting new paper, Why We Do Not Evolve Software? Analysis of Evolutionary Algorithms, by Roman V Yampolskiy, at https://journals.sagepub.com/doi/10.1177...4318815906 .
Excerpts:
Yampolskiy concludes that the bottom line is, Darwin’s mechanism as simulated by genetic evolutionary algorithms just doesn’t do what Darwin would have expected. He lays down a challenge to the evolutionary algorithms community to address this.
He lists several possible reasons for this failure, including that we might have failed to implement Darwinian evolution correctly. Unlikely. Another: maybe there are insufficient computational resources to simulate evolution. Maybe.
Yet another possibility is the problem of complexity, which I think is close to the core of it:
He grudgingly lists the final possibility for this failure: that Darwin might have been wrong, as far as nontrivial complex biological systems are concerned.
Excerpts:
Quote:"It is interesting to do a thought experiment and try to imagine what testable predictions Charles Darwin would have made, had he made his discovery today, with full knowledge of modern bioinformatics and of computer science. His predictions may have included the following: (1) simulations of evolution will produce statistically similar results at least with respect to complexity of artifacts produced and (2) if running evolutionary algorithms (EAs) for as long as possible continued to produce nontrivial outputs, scientists would run them forever.
Likewise, he would be able to make some predictions, which would be able to falsify his theory, such as (1) representative simulations of evolution will not produce similar results to those observed in nature, (2) researchers will not be able to evolve software or other complex or novel artifacts, and (3) there will not be any projects running EAs long term because their outputs would quickly stop improving and stabilize.
..............................
Our analysis of relevant literature shows that no one has succeeded at evolving nontrivial software from scratch.....The reason we do not evolve software is that the space of working programs is very large and discrete. Although hill-climbing heuristic–based evolutionary computations are excellent at solving many optimization problems, they fail in the domains of noncontinuous fitness. This is also the reason we do not evolve complex life or novel engineering designs.
With respect to our 2 predictions, we can conclude that (1) simulations of evolution do not produce comparably complex artifacts and (2) running EAs longer leads to progressively diminishing results. With respect to the 3 falsifiability conditions, we observe that all 3 are true as of this writing.
..............................
We are not evolving complex artifacts, we are not running EAs for as long as possible, we are not evolving software, and the public is unaware of most complex products of evolutionary computation. On close examination, all “human-competitive” results turn out to be just optimizations, never fully autonomous programming leading to novel software being engineered."
Yampolskiy concludes that the bottom line is, Darwin’s mechanism as simulated by genetic evolutionary algorithms just doesn’t do what Darwin would have expected. He lays down a challenge to the evolutionary algorithms community to address this.
He lists several possible reasons for this failure, including that we might have failed to implement Darwinian evolution correctly. Unlikely. Another: maybe there are insufficient computational resources to simulate evolution. Maybe.
Yet another possibility is the problem of complexity, which I think is close to the core of it:
Quote:"...genetic algorithms do not scale well with complexity. That is, where the number of elements which are exposed to mutation is large there is often an exponential increase in search space size. This makes it extremely difficult to use the technique on problems such as designing an engine, a house or plane. In order to make such problems tractable to evolutionary search, they must be broken down into the simplest representation possible. Hence we typically see evolutionary algorithms encoding designs for fan blades instead of engines, building shapes instead of detailed construction plans, and airfoils instead of whole aircraft designs. The second problem of complexity is the issue of how to protect parts that have evolved to represent good solutions from further destructive mutation, particularly when their fitness assessment requires them to combine well with other parts."
He grudgingly lists the final possibility for this failure: that Darwin might have been wrong, as far as nontrivial complex biological systems are concerned.