Czy lenie pchają świat do przodu?O automatyzacji programowania
Piotr Wikieł, MeetIT Toruń, 2016 @pwikiel, piotr.wikiel@gmail
„Jest całkiem duża szansa, że skończymy z jakąś formą dochodu
gwarantowanego za sprawą automatyzacji.”
– Elon Musk
Exponential growth of computing. 20th to 21st centuries. CC-BY-1.0 Coutesy of Ray Kurzweil and Kurzweil Technologies, Inc.
Soft computing
• Logika rozmyta (Fuzzy Logic)
• Logika probabilistyczna (Probabilistic Logic)
• Machine learning (Machine Learning)
• Obliczenia ewolucyjne (Evolutionary Computation)
Algorytmy ewolucyjne• Algorytmy genetyczne
• Programowanie genetyczne
• Programowanie ewolucyjne
• Neuroewolucja
• …
Function Set i Terminal Set
Mutacja(if (< x 3) (+ (* 2 x) 3) (* (- x 2) x))
(if (< x 3) (+ (* 4 (/ x 2)) 3) (* (- x 2) x))
Krzyżowanie(if (< x 3) (+ (* 2 x) 3) (* (- x 2) x))
(if (< x 3) (+ (* 4 (/ x 2)) 3) (/ (* x Math/PI) 2))
(if (< x 3) (+ (* 2 x) 3) (/ (* x Math/PI) 2))
Zmiana struktury(if (< x 3) (+ (* 2 x) 3) (* (- x 2) x))
(defn foo1 [x] (+ (* 2 x) 3))
(if (< x 3) (foo1 x) (* (- x 2) x))
Funkcja przystosowania
• (ang. fitness function)
• Musi odpowiadać na pytanie „jak dobrze program wykonuje swoją pracę?”
• Może zawierać „kary”
• Lexicase selection
Search spaceb2 4 4ac
WAT?
Push&PushGP• Język do tworzenia systemów ewolucyjnych
• Oparty o kilka stosów:
• dla różnych typów danych
• dla kodu
• dla wykonywanego programu
• … i o operacje na elementach stosów
(run-push ’(2 2 integer_add) (make-push-state))
:integer (4)
(run-push ’(2 2 3 integer_add integer_mult) (make-push-state))
:integer (10)
Zastosowania programowania genetycznego
• Problemy obliczeniowe
• Tworzenie skomplikowanych systemów
• Modelowanie życia
• https://github.com/lspector
• http://www.genetic-programming.com/
• http://faculty.hampshire.edu/lspector/push.html
Top Related