Strona 1 z 1

Mrówka Langtona

: 30 lip 2012 23:20
autor: Nevendar
Witam,
mam problem, chciałem stworzyć mrówkę Langtona, lecz po ukończeniu nie działa poprawnie, punkt (mrówka) zamiast poruszać się wg ustalonych zasad miga w miejscu. Nie wiem co się dzieje, mam wrażenie, że problemem jest case po prawej stronie siedzący w długim case True/False, lecz starałem się na 3 sposoby to rozwiązać i zawsze był ten sam efekt migotania.

Zasady działania tego automatu komórkowego są proste, można je przeczytać na wiki: http://pl.wikipedia.org/wiki/Mr%C3%B3wka_Langtona.

Program jest w załączniku.
Może wyjaśnię krótko co tu się dzieje.
Te 2 wartości 10 i 10 określają w którym miejscu ma być mrówka początkowo, natomiast dwójka jest znacznikiem ułożenia mrówki, malutki case obraca ją w lewo lub w prawo, a wspomniany domniemany problematyczny case zmienia położenie mrówki.

Bardzo proszę o pomoc bo już na prawdę nie wiem w czym rzecz.
I z góry dziękuję

Re: Mrówka Langtona

: 31 lip 2012 01:18
autor: Garreth
Proszę:) Problemem było to, iż w wewnętrznym FOR co prawda zmieniałeś położenie i kierunek mrówki, ale tylko w danej iteracji tego FOR. Następna iteracja przywracała poprzednie wartości kierunku i położenia. Problem rozwiązałem używając w prosty sposób zmiennych lokalnych, dodatkowo zwiększyłem planszę i położenie początkowe by było widać ten charakterystyczny regularny wzór (i widać;) ), aczkolwiek przeszukiwanie całej macierzy dwoma pętlami FOR nie jest zbyt optymalnym rozwiązaniem.

Powodzenia w projekcie!

EDIT:

Dobra, stwierdziłem, że nie mogę zostawić tej wersji tak nieoptymalnej, więc dorzucam do postu plik Ant_final (2).vi :) Dotarcie do regularnego wzoru trwa w drugiej wersji 40 sekund, w Twojej to około 90 sekund, więc różnica znaczna - zwłaszcza, że moja wersja ma czas prawdopodobnie niezależny od rozmiaru macierzy. Oczywiście miliseconds to wait ustawiłem na 0, aby program wykorzystywał 100% rdzenia i liczył tak szybko jak potrafi - do debuggingu wpisz sobie tam te 1000 ms lub wiecej. Tylko dorzuć do programu warunki jego zatrzymania po dotarciu mrówki do krawędzi, żeby nie liczył bez sensu w nieskończoność:)

Re: Mrówka Langtona

: 31 lip 2012 17:25
autor: Nevendar
Na prawdę bardzo, bardzo dziękuje za pomoc.
Niestety mam problem, bo ja dysponuje LabView w wersji 8.5 a Ty chyba w 11. z tego co pamiętam jest opcja by zapisywać z konwersją do jakiejś poprzedniej wersji. Bardzo bym był wdzięczny jeśli mógłbyś to zrobić. :)

Mam jeszcze pytanie czy może orientujesz się czy w Intensity Graph da się zmieniać kolorystykę pól?

Re: Mrówka Langtona

: 31 lip 2012 18:04
autor: Garreth
Ach, przepraszam, byłem przekonany, że jak edytuję Twoją wersję pliku to LV automatycznie zapisze w takiej samej wersji a nie w nowszej... Oba pliki wrzucam tutaj jeszcze raz, mam nadzieję, że będzie okej.

Kolorki można ustawić w taki sposób: http://digital.ni.com/public.nsf/allkb/ ... 6F007C7B58

Mrówka Langtona

: 01 sie 2012 22:57
autor: Nevendar
Jeszcze raz bardzo dziękuję za pomoc. :)