W ramach przedmiotu „Metody Sztucznej Inteligencji” na studiach musiałem zaprogramować prosty automat komórkowy wzorowany na obliczeniach Wolframa.
Automat taki napisałem w JavaScript + HTML/CSS i udostępniam innym, być może komuś się przyda (na pewno kolejnym studentom mojego kierunku ;)).
Nie będę rozpisywał się o automatach komórkowych czy metodach sztucznej inteligencji – po prostu ten temat mnie przerasta by wdrażać się w szczegóły :-)
Zainteresowani tematem bez trudu jednak znajdą masę materiałów, a nawet całych książek o samych automatach komórkowych. Od siebie dam tylko następujący kalkulator.
Krótki opis działania kalkulatora
- Wprowadzamy liczbę w systemie dziesiętnym do pola: Wprowadź liczbę.
- Liczba ta jest następnie tłumaczona na system dwójkowy i wpisywana do pola Wartość binarna liczby.
- W polu Liczba iteracji ustawiamy liczbę iteracji, w których kalkulator będzie wyznaczał kolejne stany komórek.
- Klikamy Start i czekamy na wyniki.
Niestety kalkulator nie jest idealny i można by go jeszcze długo udoskonalać i poprawiać. Kilka szybkich pomysłów, które można by wdrożyć:
- Liczba iteracji
Musimy na sztywno określić ile iteracji ma wykonać kalkulator. Idealnym rozwiązaniem byłaby taka modyfikacja skryptu, aby obliczenia kończyły się automatycznie po wyliczeniu automatu (liczba stanów w automacie komórkowym jest skończona, choć może być dowolnie duża). - Początkowe stany automatu
W pierwszej iteracji przyjmuję losowe wartości stanów automatu. Dobrze by było umożliwić ustawianie pierwszych wartości dla automatu. - Ilość liczb w kalkulatorze
Kalkulator może na sztywno przyjmować tylko 10 liczb (10 kolumn). Idealnym rozwiązaniem byłoby udostępnienie opcji na samodzielne określanie ilości liczb w kalkulatorze.
Zastosowanie automatów komórkowych
Na pewno warto zainteresować się automatami komórkowy i wykorzystaniem ich w życiu codziennym programisty. Powiem tylko jedno: warto.
Jako przykład wykorzystania posłużę się bardzo nietypową wyszukiwarką stworzoną przez wspomnianego Stephena Wolfram: Wolfram Alpha. Jest to genialne narzędzie wykorzystujące metody sztucznej inteligencji celem odszukania pożądanych przez użytkownika informacji (hasła można wpisywać jako polecenia matematyczne lub zadając pytania językiem naturalnym – niestety tylko angielskim).
Uwielbiam dziedzinę zwaną sztuczną inteligencją, z której automaty komórkowe są chyba najbardziej widowiskowe, można się bawić i przyglądać godzinami :).
Jak ktoś chciałby się bliżej zapoznać polecam: http://robert.nowotniak.com/pl/artificial-intelligence/GameOfLife/
Też myślałem by dorzucić Grę w życie jako kolejny przykład wykorzystania automatów komórkowych – chyba najpopularniejszy z możliwych przykładów :-)
Co do sztucznej inteligencji – na pewno warto interesować się tą dziedziną nauki, bo jest bardzo przyszłościowa.
Kalkulator jest bardzo nieidealny.
Wpisz 255, a potem 1 – reguła pozostanie bez zmian.
Skasuj wartość w polu na liczbę a reguła będzie NaN11111.
:)
A teraz coś z sensem – co tam kalkulator, NN’y to dopiero frajd. Uczyć cyfrowe żyjątka by poprawnie wykonywały działania :)
Zainspirowany tematem … znalazłem swoje NN’y ze studiów… całe dwa :)
Michał, akurat te błędy, które wychwyciłeś to drobnostka – poprawione (błąd był tylko przy prezencji, dane były prawidłowo przechowywane w tablicy i dalej obliczane). Jestem jednak pewien, że znalazłoby się więcej niedopracowań. Kod też marnej jakości, ale doktorowi chodziło tylko o efekt końcowy. A mi tylko o ocenę :-)
O sieciach neuronowych też trochę miałem i były praktyczne zadania, ale raczej nic ambitnego.