Sutikku Opublikowano 23 Sierpnia 2014 Autor Udostępnij Opublikowano 23 Sierpnia 2014 W sumie taki symulator mrówek już ktoś zrobił, ale top-down, więc mrówki nie kopią tuneli, co trochę mija się z celem. http://gmc.yoyogames.com/index.php?showtopic=566078 Tutaj natomiast już ktoś zrobił mrówki które kopią losowe tunele, ale napisane w C++. Kusi o dekompilacje ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 23 Sierpnia 2014 Udostępnij Opublikowano 23 Sierpnia 2014 Cztery wyjścia to chyba nie tak dużo wg mnie Edyt: a, o takie mrówki chodzi, z tym byłby problem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 23 Sierpnia 2014 Udostępnij Opublikowano 23 Sierpnia 2014 Tam nie jest napisane że to sieć neuronowa więc pewnie nie jest bo autor tego przykładu by się tym pochwalił :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 23 Sierpnia 2014 Autor Udostępnij Opublikowano 23 Sierpnia 2014 Znalazłem kolejny artykuł na ten temat --link--. I tak się teraz zastanawiam, czy trudno by było przerobić zwykły perceptron, żeby zamiast zwracać 0 lub 1, zwracał -1, 0, 1? W sumie to nie, więc można na takiej podstawie zrobić pseudointeligentne chodzenie stworka. -1 w lewo, 1 to w prawo, a 0 jakaś akcja lub zatrzymanie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 23 Sierpnia 2014 Udostępnij Opublikowano 23 Sierpnia 2014 Ja pierniczę brak tablic 3D w GMie straszliwie mnie przy robieniu takiej sieci boli :/ Mam nadzieję że w końcu zrobią w GMie struktury. To by bardzo ułatwiło. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 23 Sierpnia 2014 Udostępnij Opublikowano 23 Sierpnia 2014 Perceptron może zwracać dowolną wartość od -1 do 1, zresztą ten zakres można dowolnie modyfikować. Poszukaj sobie różnych funkcji aktywacji, oprócz skokowych są też liniowe, sigmoidalne itp. Sęk w tym, że pojedynczy perceptron nie nadaje się do tego typu zadań - jest to zbyt prosta struktura, żeby można nią było modelować złożone zachowania, zależne od dużej ilości bodźców. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 23 Sierpnia 2014 Udostępnij Opublikowano 23 Sierpnia 2014 Tyle na razie zrobiłem, wizualizacje całej sieci. Neurony są instancjami obiektów niestety. Zrobiłem tak by obejść zagnieżdżanie data struktur, jako że nie ma tablic 3D. Jak mi się uda coś podziałać to dam znać i wrzucę tutaj przykład. Sieć jest dowolnie konfigurowana, można sobie dostawiać warstw ile się chce. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 23 Sierpnia 2014 Autor Udostępnij Opublikowano 23 Sierpnia 2014 Wiem, wiem, taki jeden perceptron nie powinien robić czegoś bardziej złożonego, bo nie będzie to zbyt dobre. Ale ja i tak pewnie coś zmajstruje, powiedzmy, że jest to w liście ToDo: (razem z symulacją mrówek). Na tej wizualizacji są trzy obiekty? Wejście, wyjście i środkowe neurony? Czy jest to jeden obiekt, który sam wykrywa swoją funkcje? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 23 Sierpnia 2014 Udostępnij Opublikowano 23 Sierpnia 2014 Lecę według tego artykułu http://software.com.pl/sieci-neuronowe-w-grach/ To jest wielowarstwowy perceptron. Pierwsza warstwa to neurony wejścia ich zadaniem jest jedynie odczytanie wektora, który podaje agent ( agent czyli obiekt, którym ta sieć steruje. W moim przypadku będzie to samolocik lecący ciągle w górę ). Wektor jest długości ilości tych neuronów wejściowych. I u mnie będzie to po prostu 5 czujników sprawdzających czy zbliża się przeszkoda. Te kropki to warstwy ukryte neuronów, tutaj można sobie dowolnie ustalić ile ich ma być i ile neuronów w każdej warstwie będzie. Linie które z nich wychodzą to synapsy (patrz artykuł) A ostatnia warstwa neuronów zajmuje się odczytaniem wag z poprzedniej warstwy i konwertuje to z powrotem do wektora, który zostanie przekazany agentowi. Tym razem będzie mniejszy bo są tylko trzy neurony i są to: Skręcaj w lewo, skręcaj w prawo oraz nic nie rób. No i tak to mniej więcej będzie wyglądać ale nie wiem czy nie napotkam jakiegoś problemu na którym stanę i nie będę wiedział jak go rozwiązać :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 23 Sierpnia 2014 Autor Udostępnij Opublikowano 23 Sierpnia 2014 Tablice 3D w GM'ie byłyby dobrodziejstwem dla twórców. Ja będę chyba pisał prosty perceptron ale w C++, trochę klas, funkcji i może wyjść ciekawie. Jeszcze zwizualizować wszystko w SFML albo Allegro i cud miód. Z tym, że większe sieci są już dla mnie zbyt trudne do zrozumienia, chyba muszę trochę podrosnąć i nabrać wiedzy. A projekt pokazujący takowe sieci, też ciekawe. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 23 Sierpnia 2014 Udostępnij Opublikowano 23 Sierpnia 2014 Ciekawostka: każda sieć wielowarstwowa z N warstwami ukrytymi może być przekształcona w sieć z jedną warstwą ukrytą Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 23 Sierpnia 2014 Udostępnij Opublikowano 23 Sierpnia 2014 Tylko że efektywność się pewnie różni? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 23 Sierpnia 2014 Udostępnij Opublikowano 23 Sierpnia 2014 Mam na myśli dokładne przekształcenie. Czyli dowolną sieć o N warstwach ukrytych można zamienić w sieć z jedną warstwą o tej samej funkcjonalności. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Sierpnia 2014 Udostępnij Opublikowano 24 Sierpnia 2014 Stanąłem na chyba prostym przekształceniu matematycznym: mam zmienną X, której wartości są w zakresie 0 do 1 i chcę to przekształcić w zakres -maxSpeed do +maxSpeed. Chcę zmieniać w ten sposób hspeed. Będzie to wyglądać tak że: gdy X = 0 to hspeed = -maxSpeed gdy X = 0.5 to hspeed = 0 gdy X = 1 to hspeed = +maxSpeed podejrzewam że to banał jest, wie ktoś jak to przekształcić? Dobra przekształciłem sobie, xDDD durny jak but jestem że mi to tak długo zajęło hspeed = (X - 0.5)*2*maxspeed; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się