Biological evolution and mechanisms of natural selection proved to be an extremely effective tool for the adaptation of living organisms to environmental conditions. Polar bear superbly adapted to cold Arctic, horned viper - to the heat of the Sahara desert. Half a century ago, at the dawn of the computer era, programmers had the idea to try to apply the laws discovered by Darwin, to solve technical problems. Thus was born the evolutionary algorithms. On the current state of affairs in the field of genetic programming and evolutionary strategies can be found by visiting the last international conference in Amsterdam GECCO (Genetic and Evolutionary Computation Conference).
Versions of the technical solutions mate and produce offspring
In the struggle for existence, survival of the fittest - so how nature. But this does not necessarily mean physical force. The strongest - and this may be the highest or the squat, the heaviest or lightest, most fat or skinny, the fastest or the most sluggish, and the most cunning or the most clever ... It all depends on the conditions in which the body has put the external environment.
On the same principles built and evolutionary modeling, but here are fighting for survival are not animals in the wild, and the technical solutions in the computer. For example, different nozzle design of the engine. Mark Harman (Mark Harman), a professor of computer science at University College London, explains: "We usually start modeling with a random set of solutions a technical problem. Just as in nature, making our choices can mate and produce offspring, some of the descendants of may not be perfect parents. As soon as the generations pass, can crystallize one or two successful solutions. When it comes to the engine nozzle, it can be design to ensure a higher degree of compression of fuel. Our program they have more chances to give birth . "
Optimization of technical solutions is itself
The selection criteria is set, of course, people. This may be, for example, the efficiency of the nozzle: from the most efficient design survive and the less effective die and withdrawn computer. And a few hundred generations later the computer if you are lucky, may suddenly give out an optimized version of the jets - an option that could never have imagined living design engineer. Professor Harman explains, "The great advantage of evolutionary algorithms is that successful solutions crystallize themselves. We do not know exactly how it is born or that decision, we can only conclude that it is indeed better than others. And all the work is done for us evolution . "
It is clear that the possibilities of this method are not limitless. Depending on the complexity of the problem, computer modeling based on evolutionary algorithms may require many weeks of computer time, he says: "It took billions of years of evolution to the fact that life has evolved from bacteria to humans. But we certainly can not wait that long. Therefore, we start modeling, usually try to set a good starting position. Figuratively speaking, our evolution begins not with the bacteria, and a monkey. "
Index - to set the boundary conditions
It takes on special significance skill of the programmer and his sense of proportion, if he asks too vague, uncertain boundary conditions, the digital evolution can take too much time, but if the conditions are too narrow and rigid, evolution can and does "not go". According to Professor Harman, the method was already quite widespread among engineers, especially in solving optimization problems. But after a few years of evolutionary algorithms may be of interest and software developers, said the scientist, "One idea that seems to me very interesting, is that these algorithms can detect and even self-correct errors in the program - and at the same time, when the program is running. So far, however, this idea is at an early stage of development, but in two years it will hopefully be possible to implement in practice. "
Perhaps in the near future, connected to the charger overnight smartphone will be able to independently verify the compatibility of the next update of the operating system with installed applications. And in the case of conflict notify the owner, and even better - just adapt the new version of the operating system to existing applications.
372417 956082 884084 535071 208752 768481 202956 563382 418577 228445 666539 746169 650434 262331 344906 492056 841089 605471 382765 302220 612086 799395 911170 740038 439502 468761 655476 884940 854518 693652 487780 876799 376724 982222 392762 291599 140361 680919 755014 168034 745282 720991 455169 606350 935885 548791 140210 143780 585092 595398 468723 598488 627713 811234 787402 786757 899511 458215 851574 680755 166725 741458 375984 963276 279624 585887 936949 266249 783840 675573 477080 147069 363849 719632 474714 840085 406805 471171 155017 639389 496518 147632 254369 395274 861074 634544 508475 677628 813014 789880 190895 905903 765471 559876 669405 607605 657929 388745 898760 139615 816214 357842 182724 429296 257674 743177 917622 218145 130378 728884 965443 157873 790783 624053 198101 362430 594914 189386 254633 839650 758918 353674 659048 378720 511492 303925 132637 463975 599045 716076 769563 606345 330575 631857 375273 233776 219330 543173 869719 522740 662597 872858 428565 592284 520801 689441 276619 788259 303091 548606 954670 133168 632119 601022 326858 584549 853040 498461 857813 340565 708646 731316 391791 357363 788547 298359 835364 878817 610603 607377 493764 574308 429686 433628 181884 679815 795367 344712 848526 538289 493937 796084 847462 135367 664273 132707 489978 130939 152449 828024 922288 537297 490926 676801 670513 407401 528511 791748 227532 524499 926068 410976 335746 210133 408247 200972 680480 796071 623325 878280 977213 937068 823261 816932 203625 862076 260409 523891 303477 915905