background image

Uniwersytet Śląski w Katowicach 
Wydział Informatyki i Nauki o Materiałach 
 

 
 

Sztuczna Inteligencja 

 

Temat:

 

Algorytmy ewolucyjne 

 
 
 
 
 
 
 
 
 
 
 

 

 
 

Opracowali: 

Piotr Gacek 

Paulina Giereś 

Ewelina Kania 

Maciej Niewiński 

 

Inżynieria biomedyczna rok III, OM1 

 

 

 

background image

Genetyka - uogólniając jest to nauka dziedziczności i zmienności organizmów, które są oparte 
na informacji zawartej w podstawowych jednostkach dziedziczności  czyli genach. 
 
 
Zarys historyczny genetyki: 
 
Pierwsze próby wyjaśnienia przyczyn dziedziczenia opierały się na teorii zapatrzenia dziś 
uznawanej za błędną. Inne koncepcje wiązały dziedziczenie z krwią. Wiedza, iż istoty żywe 
dziedziczą cechy po swoich rodzicach była stosowana od czasów prehistorycznych w celu 
poprawy wielkości plonów oraz uzyskiwania lepszych odmian zwierząt poprzez hodowlę 
selektywną.  

Nowoczesna genetyka stara się zrozumieć proces dziedziczenia, a za jej prekursora uważa się 
niemiecko-czeskiego zakonnika i naukowca Grzegorza Mendla, który w 1866 roku po raz 
pierwszy opisał podstawowe prawa dziedziczenia cech. W swoich dokumentach "Versuche über 
Pflanzenhybriden" ("Eksperymenty krzyżowania roślin") zaprezentowanych w 1865 roku 
Stowarzyszeniu Badań Natury (Naturforscher Verein) w Brnie, Mendel naszkicował modele 
dziedziczenia pewnych cech w oparciu o groch zwyczajny i opisał je matematycznie.  

W czasach Mendla podstawową teorią dziedziczenia była teoria mieszanego dziedziczenia. 
Polega ona na tym, że jednostki dziedziczą różny kompleks cech po swoich rodzicach. Prace 
Mendla obaliły tą teorię pokazując, że cechy są raczej kombinacją różnych genów niż stałym 
ich kompleksem. Inna teoria, która ówcześnie była dość popularna, mówiła o dziedziczeniu 
przyswojonych cech, tj. jednostki dziedziczą cechy wzmocnione przez ich rodziców. Teoria ta 
(zazwyczaj kojarzona z Jean-Baptiste de Lamarck) jest obecnie uważana za nieprawdziwą – 
doświadczenia jednostek nie mają wpływu na geny, które dziedziczą ich dzieci. Inne teorie to 
pangeneza Charlesa Darwina (która mówi o obu – nabytych i dziedziczonych cechach) i jej 
ponowne ujęcie pangenezy Francisa Galtona. 

Rezultaty prac Mendla nie były rozumiane do czasu jego śmierci, kiedy to inni naukowcy 
pracujący nad podobnymi zagadnieniami ponownie odkryli jego badania. William Bateson 
orędownik pracy Mendla wymyślił w 1905 roku słowo "genetyka". Spopularyzował on użycie 
tego słowa, aby opisać badanie dziedziczenia w inauguracyjnej odezwie na Trzecią 
Międzynarodową Konferencję Krzyżowania Roślin w Londynie (The Third International 
conference on Plant Hybrydization in London) w 1906 roku.  Po ponownym odkryciu prac 
Mendla naukowcy starali się określić, które molekuły w komórkach były odpowiedzialne za 
dziedziczenie. W 1910 roku Thomas Hunt Morgan, bazując na obserwacjach udowodnił, że 
geny mają związek z chromosomami. W 1913 roku jego student Alfred Sturtevant użył 
fenomenu genetycznego łączenia, aby pokazać, że geny są rozmieszczone liniowo na 
chromosomach. 

 

 

 

 

 

 

background image

 
Algorytm genetyczny jest to rodzaj algorytmu, który przeszukuje przestrzeń alternatywnych

 

 

   

 

 

 

 

 

 

rozwiązań danego problemu po to,aby znaleźć najlepsze rozwiązanie. Sposób działania

 

 

 

 

 

 

 

 

 

 

algorytmów genetycznych nieprzypadkowo przypomina zjawisko ewolucji biologicznej,

 

 

 

 

 

 

 

ponieważ ich twórca John Henry Holland właśnie z biologii czerpał inspiracje do swoich prac.

 

 

 

 

 

 

   

 

 

 

 

 

 

Obecnie zalicza się go do grupy algorytmów ewolucyjnych. Zatem można stwierdzić, że

 

 

 

 

 

 

 

 

 

 

 

 

algorytmy genetyczne służą głównie do tego, żeby rozwiązywać zadania optymalizacji.  
 

 

 

 

Najczęściej działanie algorytmu przebiega następująco: 

Losowana jest pewna populacja początkowa. 

Populacja poddawana jest ocenie (selekcja). Najlepiej przystosowane osobniki biorą

 

 

 

 

 

 

 

 

 

udział w procesie reprodukcji. 

Genotypy wybranych osobników poddawane są operatorom ewolucyjnym: 

są ze sobą kojarzone poprzez złączanie genotypów rodziców (krzyżowanie), 

przeprowadzana jest mutacja, czyli wprowadzenie drobnych losowych zmian. 

Rodzi się drugie (kolejne) pokolenie. Aby utrzymać stałą liczbę osobników w populacji

 

 

 

 

 

 

 

 

 

   

 

te najlepsze (według funkcji oceniającej fenotyp) są powielane, a najsłabsze usuwane.

 

 

 

 

 

   

   

 

 

Jeżeli nie znaleziono dostatecznie dobrego rozwiązania, algorytm powraca do kroku

 

 

 

 

 

 

 

 

 

 

drugiego. W przeciwnym wypadku wybieramy najlepszego osobnika z populacji - jego

   

 

 

 

 

   

   

 

genotyp to uzyskany wynik. 

Działanie algorytmu genetycznego obejmuje kilka zagadnień potrzebnych do ustalenia: 

ustalenie genomu jako reprezentanta wyniku, 

ustalenie funkcji przystosowania/dopasowania, 

ustalenie operatorów przeszukiwania. 

background image

 
Zastosowanie algorytmów genetycznych: 
 

Rozwiązywanie problemów NP : 
Algorytmy genetyczne znajdują zastosowanie tam, gdzie nie jest dobrze określony lub

 

 

 

 

 

 

 

 

 

 

 

poznany sposób rozwiązania problemu, ale znany jest sposób oceny jakości

 

 

 

 

 

 

 

 

 

 

rozwiązania. Przykładem jest np. problem komiwojażera, gdzie należy znaleźć

 

 

 

 

 

 

 

 

 

najkrótszą drogę łączącą wszystkie miasta, tak by przez każde miasto przejść tylko raz.

 

 

 

 

 

   

 

 

 

 

 

 

Ocena jakości proponowanej trasy jest błyskawiczna, natomiast znalezienie optymalnej

 

 

 

 

 

 

 

 

 

trasy kwalifikuje się do klasy problemów NP-trudnych. Przy zastosowaniu podejścia

 

 

 

 

 

 

 

 

 

 

ewolucyjnego dobre rozwiązanie można znaleźć bardzo szybko, ale oczywiście pewni

 

 

 

 

 

 

 

 

 

 

możemy być jedynie uzyskania rozwiązań sub-optymalnych, co wynika z formalnie

 

 

 

 

 

 

 

   

 

opisanej trudności problemów klasy NP. Algorytmy genetyczne równie dobrze radzą

 

 

 

 

 

 

 

 

 

 

sobie w znajdowaniu przybliżeń ekstremów funkcji, których nie da się obliczyć

 

 

 

 

 

 

 

 

 

 

 

analitycznie. 

Projektowanie genetyczne  
Algorytmy genetyczne wykorzystywane są również do zarządzania populacją sieci

 

 

 

 

 

 

 

 

 

neuronowych. Projektowanie maszyn bądź obwodów elektrycznych jest doskonałym

 

 

 

 

 

 

 

 

polem dla wykazania się algorytmów genetycznych. Inżynierowi podczas tworzenia

 

 

 

 

 

 

 

 

 

nowych pomysłów nie chodzi o znalezienie najlepszego możliwego rozwiązania.

 

 

 

   

 

 

 

 

Wystarczy tylko przybliżone spełnienie granicznych warunków oraz optymalizacja

 

 

 

 

 

 

 

 

projektu. Algorytmy genetyczne w odróżnieniu od człowieka nie działają

 

 

 

 

 

 

 

 

 

schematycznie. Program nie zna wcześniejszych projektów i dlatego czasami wykazuje

 

 

 

 

 

   

 

 

 

się pewną inwencją. Co więcej człowiek często opiera się na bardzo przybliżonych

 

 

 

 

 

 

 

 

 

 

 

 

modelach, które dają fałszywy obraz problemu. Algorytm genetyczny może

 

 

 

 

 

 

 

 

 

przeanalizować złożony model / zagadnienie i znaleźć rozwiązanie, na które człowiek

 

 

   

   

 

   

 

 

by nie wpadł. 

Przeszukiwanie  
Algorytmy genetyczne zapewniają skuteczne mechanizmy przeszukiwania dużych

 

 

 

 

 

 

 

przestrzeni rozwiązań. Ponieważ grupowanie należy do tej kategorii zadań to oczywiste

 

 

 

 

   

 

 

   

 

jest, że algorytmy genetyczne stosowane są w grupowaniu. Algorytmy genetyczne są

 

 

 

 

     

 

 

   

bardziej niezależne od wstępnej inicjalizacji oraz mniej skłonne do znajdowania

 

 

 

 

 

 

 

 

 

 

lokalnych rozwiązań w miejsce optymalnych. Przykładem może być zagadnienie

 

 

 

 

 

 

 

 

 

grupowania w którym w miejsce klasycznych algorytmów z powodzeniem stosuje się

   

   

 

 

   

 

 

 

algorytmy genetyczne. 

Projektowanie obwodów elektrycznych  
Algorytmy genetyczne można wykorzystać do projektowania obwodów elektrycznych.

 

 

 

 

 

 

 

 

Ocena każdego osobnika opiera się na ilości elementów oraz własnościach

 

 

 

 

 

 

 

 

 

 

elektrycznych, które łatwo jest obliczyć. Główna różnica tkwi w algorytmie budowy

 

 

 

 

 

 

 

   

 

 

osobnika na podstawie genomu. Ma on postać instrukcji dla programu, który na jego

 

 

 

 

 

 

 

 

 

 

 

 

 

podstawie buduje obwód elektryczny. Najpierw mamy proste połączenie wejścia z

 

 

 

 

 

 

 

 

   

wyjściem. Następnie program dodaje i usuwa połączenia i elementy. Zbudowany tak

 

 

 

   

 

   

 

 

 

obwód jest oceniany na podstawie prostych zależności fizycznych. Podobny algorytm

 

 

 

 

 

 

 

 

 

 

genetyczny zbudował samodzielnie filtr drabinkowy. 

background image

 

Optymalizacja - wyznaczenie spośród dopuszczalnych rozwiązań danego problemu rozwiązania

   

 

 

 

 

 

 

 

najlepszego za względu na przyjęte kryterium (wskaźnik) jakości (np. koszt, zysk,

 

 

 

 

 

 

 

 

 

 

 

niezawodność).  

 

Algorytm ewolucyjny - algorytm wzorowany na biologicznej ewolucji, stosowany do zadań

 

   

 

 

 

 

 

 

 

 

optymalizacyjnych i modelowania.

  

 

Podział: 

Algorytmy genetyczne 

Programowanie genetyczne 

Programowanie ewolucyjne 

Przeszukiwanie rozproszone 

Strategie ewolucyjne 

Neuroewolucje (Neuroevolution) 

 

 

 

 

 

 

Strategie ewolucyjne to popularna metoda ewolucyjna. Główny obszar zastosowań to

 

 

 

 

 

 

 

 

 

 

optymalizacja

funkcji

rzeczywistych

wielowymiarowych.

W

przypadku

algorytmów

 

 

 

 

 

 

 

genetycznych zakodowanie parametrów liczbowych wymaga ustalenia liczby bitów, co

 

 

 

 

 

 

 

 

 

ogranicza nam dokładność obliczeń. W przypadku strategii ewolucyjnych kod genetyczny

 

 

 

   

 

 

 

 

 

składa się po prostu z liczb zmiennoprzecinkowych (o precyzji limitowanej tylko przez

 

 

 

   

 

 

 

 

 

 

 

używany język programowania), co znacznie ułatwia kodowanie problemu i poprawia

 

 

 

 

 

 

 

   

 

dokładność końcowego rozwiązania.  

 

 

 

 

 

 

 

background image

 

Heurystyka – w informatyce metoda znajdowania rozwiązań, dla której nie ma gwarancji

     

 

 

 

 

 

 

 

 

 

znalezienia rozwiązania optymalnego, a często nawet prawidłowego. Rozwiązań tych używa

 

 

   

 

 

 

 

 

 

się np. wtedy, gdy pełny algorytm jest z przyczyn technicznych zbyt kosztowny lub gdy jest

 

 

 

 

 

 

   

 

 

 

 

 

 

 

nieznany (np. przy przewidywaniu pogody lub przy wykrywaniu niektórych zagrożeń

 

 

 

 

 

 

 

 

 

 

komputerowych, takich jak wirusy lub robaki). Metody używa się też często do znajdowania

 

 

 

 

 

 

 

 

 

 

 

 

 

rozwiązań przybliżonych, na podstawie których później wylicza się ostateczny rezultat pełnym

 

   

 

 

 

 

 

 

 

 

algorytmem. To ostatnie zastosowanie szczególnie dotyczy przypadków, gdy heurystyka jest

 

 

 

 

 

 

 

 

 

 

wykorzystywana do nakierowywania pełnego algorytmu ku optymalnemu rozwiązaniu, aby

 

 

 

 

 

 

 

 

 

zmniejszyć czas działania programu w typowym przypadku bez poświęcania jakości

 

 

 

 

 

 

 

 

 

 

rozwiązania (np. algorytm A*).  

 

Dwie naczelne zasady heurystyki informacyjnej to: 

● zasada wyczerpania (kompletności) 
● zasada właściwego doboru materiału (relewantności) 

 
 
 
 
Chromosom - miejsce przechowywania genotypu osobnika. 

 

Fenotyp - ujawniające się “na zewnątrz” cechy danego osobnika. W przypadku algorytmów

   

 

 

 

 

 

 

   

 

 

ewolucyjnych są to te parametry (cechy) rozwiązania, które podlegają ocenie. 
 
Genotyp - “plan konstrukcyjny”, kompletny i jednoznaczny opis osobnika zawarty w jego

   

 

 

   

 

 

 

   

 

genach. W przypadku algorytmów ewolucyjnych cechy rozwiązania (punktu z przestrzeni

 

 

 

 

 

 

 

   

 

stanów) kodowane są w określony sposób, np. za pomocą ciągów binarnych ustalonej długości

 

     

 

 

   

 

 

 

 

 

(odpowiednikiem genotypu osobnika jest w tym przypadku ciąg bitów). 
 
Krzyżowanie wymiana części genotypu między dwoma osobnikami. Przykładowy sposób

 

 

 

 

 

 

 

 

 

zastosowania operatora krzyżowania: 

 

 

 

 

background image

 
 
Działanie operatora krzyżowania: 
 a) krzyżowanie jednopunktowe (one-point crossover),  
 b) krzyżowanie dwupunktowe (two-point crossover). 
 

 

 
 
 
 
 

Mutacja - niewielka, losowa zmiana genotypu danego osobnika. 
 
 
Działanie operatora mutacji: 
 

 

  

 
 
 
 
 
 
 
 

background image

 
 
Przykładowy sposób zastosowania operatora mutacji: 
 

 

 
 

 

Locus– określony obszar chromosomu zajmowany przez gen. W obrębie chromosomu znajduje

 

 

 

 

 

 

   

 

 

 

się wiele różnych loci, stanowią one rodzaj logicznych pojemników na samodzielne,

 

 

 

 

 

 

 

 

 

 

 

strukturalizowane fragmenty informacji genetycznej, nazywane genami. W określonym locus

 

 

 

 

 

   

 

 

mogą się znaleźć różne warianty związanego z nim genu (różniące się sekwencją nukleotydów

 

 

 

 

 

   

 

 

 

 

 

 

w DNA); warianty te są nazywane allelami.  
 
Gen to podstawowa jednostka dziedziczności determinująca powstanie jednej cząsteczki

 

 

 

 

 

 

 

 

 

białka

lub

kwasu

rybonukleinowego

zapisana

w

sekwencji

nukleotydów

kwasu

 

 

 

 

 

 

 

 

 

deoksyrybonukleinowego.