78
WACŁAW FRYDRYCHOWICZ, MAGDALENA TRUSZKOWSKA
Do tradycyjnych metod optymalizacji danych należą: metody analityczne, przeglądowe i losowe. Od wyżej wymienionych metod algorytmy ewolucyjne różnią się następującymi cechami [2], [4]:
1) Algorytmy ewolucyjne przetwarzają zakodowaną postać warunków optymalizacji zagadnienia tak, aby wyselekcjonowany kandydat (parametr) był najlepszy w sensie dopasowania do kodu genetycznego.
2) Algorytmy ewolucyjne prowadzą poszukiwanie rozwiązania, wychodząc z pewnego zbioru punktów.
3) Algorytmy ewolucyjne korzystają jedynie z funkcji celu.
4) Algorytmy ewolucyjne stosują probabilistyczne reguły wyboru: zmiana parametrów rekombinacji lub mutacji następuje losowo. Z drugiej strony, operatory doboru (selekcji) mogą być zarówno deterministyczne jak i stochastyczne.
Powyższe cechy sprawiają, że wyselekcjonowany przez algorytm ewolucyjny kandydat jest najlepszy w sensie dopasowania do materiału genetycznego. Innymi słowy, wyselekcjonowany kandydat ma największe szanse przetrwania.
Programowanie genetyczne może być wykorzystywane do automatycznego generowania programów komputerowych. Stosuje się tutaj język programowania LISP, w którym program jest reprezentowany jak dane - w postaci drzewa.
Algorytmy ewolucyjne można wykorzystywać m.in. w medycynie czy biologii.
6. Język programowania PROLOG
W badaniach sztucznej inteligencji szerokie zastosowanie ma język programowania PROLOG. Jest to język programowania w logice. Należy do klasy języków programowania, w których opisuje się rozwiązanie problemu. Jest to odmienna sytuacja niż w przypadku innych języków programowania, w których zapisuje się algorytmy. Dzięki opracowaniu przez Alana Robinsona w roku 1965 tzw. ”Resolution principle” dla rachunku predykatów 1 - rzędu, czyli zasady rezolucji, stało się możliwe automatyczne wnioskowanie rozwiązania na podstawie formuł logicznych opisujących problem. Najprostszym sposobem znajdowania rozwiązania jest tzw. metoda generowania i testowania. Polega ona na systematycznym generowaniu kolejnych rozwiązań i weryfikowaniu ich. Jako przykład można podać problem znajdowania najmniejszego elementu w danym zbiorze. Kiedy problem chcemy rozwiązać za pomocą języka programowania, np. C+-1- zaczynamy od zapisania pętli ”for ... do”, która przebiega wszystkie elementy zbioru, porównując je z najmniejszym dotychczas znalezionym elementem. Natomiast stosując język programowania typu PROLOG trzeba skupić się na warunku jaki musi spełnić element zbioru, aby uznać go za najmniejszy. Szukamy więc takiego elementu zbioru, że nie istnieje w tym zbiorze element od niego mniejszy. Warunek jaki ma spełniać szukany element najmniejszy N, dla danego zbioru liczb Z, można wyrazić formalnie w następujący sposób:
N w Z i nieprawda, że (X w Z i X < N),
gdzie ” w” jest warunkiem przynależności do zbioru, a ” <” jest relacją mniejszości między liczbami.