sobota, 12 marca 2011

RoboMind: Dyskusja na temat utworzenia i działania ligi


Autor: Dondu


W nawiązaniu do pierwszych dwóch edycji zawodów w programowaniu wirtualnego robota w środowisku RoboMind, zebranych doświadczeń i gorących dyskusji w trakcie trwania zawodów oraz chęci wielu z Was do uczestnictwa w takich zawodach, postanowiłem zaproponować Wam utworzenie:




Wstępne założenia

Moim celem jest jak największe odciążenie mnie zarówno w zakresie czasu poświęconego prowadzeniu Ligi jak i podejmowania decyzji, i przerzuceniu tego w znacznej części na zawodników. Tylko w takiej sytuacji będę mógł taką ligę poprowadzić.

Moja propozycja jest następująca:
  1. wspólnie ustalamy regulamin i inne zasady Ligi.
  2. przygotowujecie mapy i zadanie do wykonania zgłaszacie je do Ligi, 
  3. mapy wraz zadaniami są ocenianie przez ankietę i na jej podstawie kolejne zawody są rozgrywane na mapie, która zdobędzie najwięcej głosów. Każde zawody mają się rozegrać na innej mapie lub z innymi zasadami. Brak co najmniej jednej mapy oznacza brak zawodów i oczekiwanie aż ktoś opracuje jakąś.
  4. do funkcjonalności kont na blogu dodam odpowiednie mechanizmy umożliwiające przesyłanie map i zadań, głosowania nad nimi oraz wspomagające i porządkujące proces wyboru zwycięzcy, bo na razie był niezły bałagan z wieloma wersjami nadsyłanymi przez zawodników, przez co miałem dużo zbędnej pracy,
  5. zawody rozgrywane raz w miesiącu w wybrany weekend,
  6. do moich obowiązków będzie należało ich przeprowadzenie, czyli uruchomienie wszystkich programów i ocena wyników ich działania według ustalonych dla danej mapy zasad,
  7. po zakończeniu terminu przesyłania programów, wszystkie byłyby publikowane jeszcze przed podaniem wyników,
  8. regulamin będzie musiał przewidywać czas na oprotestowanie programów na etapie ich prezentacji zgodnie z pkt. 7 (to odciąży mnie od sprawdzania, czy dany program jest zgodny z zasadami ustalonymi dla danej mapy). Każdy zawodnik mógłby zgłosić zastrzeżenie do każdego programu. Jeżeli program zostałby oprotestowany, to o jego dopuszczeniu lub odrzuceniu decydowałby mechanizm głosowania (ankieta) przez startujących zawodników  z moim głosem decydującym w przypadku remisu głosowania - oczywiście byłby jakiś termin np. 24h na oddanie głosów,
  9. każdy program będzie publikowany niezależnie od wyników jakie osiągnie,
  10. prowadzony będzie ranking zawodników,
  11. niekulturalnych zawodników eliminujemy z naszego kręgu,
  12. nagrody ... jakieś zdobędziemy :-)


Pierwsze pomysły

Poniższe propozycje dot. przykładów zasad dla jakiejś mapy. Dla innej mapy będą mogły być inne.

Propozycja 1
Aby uniknąć dostosowywanie programu do konkretnej mapy zaproponowałem, żeby program był sprawdzany na dwóch mapach. Możemy prezentować obie mapy od razu, albo tylko jedną, a drugą dopiero po zakończeniu zawodów. Wynik łączny z dwóch map w oparciu o statystyki oraz poprawnie wykonane zadanie.


Po zawodach z dn. 9-10 listopada 2013r. istotne uwagi nadesłał Mariusz:

Propozycja 2
Proponuję aby algorytm był tak napisany, aby robot potrafił trafić do celu niezależnie od miejsca w którym się go umieści na planszy. Wtedy będzie większa szansa, że robot będzie się kierował "własną inteligencją" a nie "wykonywał plan". Technicznie można to rozwiązać w ten sposób, że wszyscy będą znali mapkę, znali zadanie ale nie będą wiedzieli skąd robot startuje. Miejsce startu zostałoby podane dopiero po zakończeniu przyjmowania prac.

Propozycja 3
Drugi sposób to opisanie w treści konkursu jakie czynności robot powinien umieć wykonywać ale mapka i miejsce startu nie byłyby znane uczestnikom. Publikacja mapki podobnie jak we wcześniejszej propozycji następowałaby dopiero po zakończeniu odbierania prac. Ten wariant byłby trudniejszy, bo nikt nie wiedziałby jaką charakterystykę ma trasa, więc nie byłoby szansy, aby dedykować działanie robota konkretnie pod ten wygląd mapki. (sprawdzałem algorytmy konkursowe i przy innym punkcie startowym niekoniecznie dawałyby sobie radę z dotarciem do celu)


Zapraszam do dyskusji

Jeżeli macie konta na Google logujcie się proszę i dopiero dodawajcie komentarze, wtedy Wam będzie łatwiej, a mnie pozwoli to ocenić ile osób faktycznie jest zainteresowanych taką ligą.





Edit: 19 Listopada 2013r.

Mariusz przesłał pierwszą propozycję mapy:


Do pobrania: mariusz_arena.map

Zadanie do wykonania określił następująco:

Mariusz napisał:

Poziomy trudności:
  1. Ustawienie robota nieznane
  2. Ustawienie robota nieznane, nieznana lokalizacja min
  3. Ustawienie robota nieznane, nieznana lokalizacja min, nieznane rozmieszczenie drzew
Robot ma znaleźć wszystkie miny i umieścić je na czarnych kropkach.
Robot powinien całkowicie samodzielnie podejmować decyzje, co oznacza, że niezależnie od jego lokalizacji powinien wykonać zadanie.


Inne propozycje Mariusza:

Mariusz napisał:

W celu odciążenia Ciebie od wyszukiwania błędnych algorytmów, proponuję aby po publikacji prac i wytypowaniu pierwszych trzech miejsc, każdy algorytm byłby poddany do weryfikacji innych, poprzez zmienianie pozycji wyjściowej robota. Jeżeli ktokolwiek odszukałby pozycję, z której robot nie wykonałby zadania, algorytm byłby zdyskwalifikowany.

Czas na weryfikacje 24h.

Gracze przysyłający prace sami podawaliby punkty, (weryfikacje ich prawdziwości sprawdzaliby inni podczas testów). W przypadku podania nieprawdziwej ilości punktów przez autora - dyskwalifikacja.

Mogę przygotować takie funkcjonalności, które ułatwią mnie i Wam zgłaszanie wyników i ich weryfikację.

Co sądzicie o propozycji?

12 komentarzy:

  1. Ja jestem za tym bardziej, że jeszcze nie uczestniczyłem w takich zawodach tylko się przyglądałem i trochę próbowałem samodzielnie. Na pewno mogę przygotować jakąś mapę i zadanie, a może nawet kilka i sądzę, że inni także z chęcią coś przygotują. Konta google nie posiadam.

    OdpowiedzUsuń
  2. Z chęcią spróbuje swoich sił :) Uważam że ukrycie punktu startowego to wielkie utrudnienie ale można spróbować, co do ukrycia całej mapki to jestem na nie.
    Pozdrawiam

    OdpowiedzUsuń
  3. Myślę że jeśli poziom będzie wysoki to można ukrywać punkt startowy - bo to duże utrudnienie ;)
    Na zawody też byłym chętny, zawsze można się pobawić.
    Tylko - czy programy koniecznie muszą być w wersji polskiej?

    OdpowiedzUsuń
    Odpowiedzi
    1. Polskie były na początek, by zachęcić tych co kompletnie nie znali angielskiego w naszych dwóch akcjach weekendowych. Liga rozgrywana byłaby oczywiście na wersji angielskojęzycznej.

      Usuń
    2. Wersja anglojęzyczna to dobry pomysł. Uniknelibysmy błedów wynikłych z tłumaczenia.

      Usuń
  4. Utrudnienia są konieczne. Algorytmy z ostatniego konkursu tak naprawdę nie wyszukiwały drogi ale wykonywały trasę którą z góry określił programista. Roboty jedynie sprawdzały, czy juz dotarły do określonego punktu i kiedy im się to udało, wykonywały kolejne instrukcje aby dotrzeć do celu. Jezeli ktoś testował programy konkursowe, to zauważył, że roboty wogóle nie błądziły - szły do celu prosto jak po sznurku. Ale wystarczyło przestawić któryś z robotów w inne miejsce trasy (którą sam "wyliczył") - kazdy się gubił.
    Co dobitnie swiadczy, że Te algorytmy bardziej przypominały przepis na zrobienie tortu niż program do szukania trasy.
    W przypadku konkursu w którym punkt startu robota nie bedzie wiadomy, uczestnicy konkursu beda zmuszeni do wymyslenia takiego algorytmu, który by spowodował, aby robot sam znalazl trase niezaleznie w jakim miejscu mapy sie go ustawi.
    pozdrawiam
    Mariusz

    OdpowiedzUsuń
    Odpowiedzi
    1. Ukrycie początku trasy jest koniecznością w tego typu zawodach, bo jeżeli znane będą warunki to będą powstawały kolejne zoptymalizowane na przedstawioną trasę algorytmy.
      Nie mozna mieć pretensji do autorów programów, że ich algorytmy gubią się po przestawiu robota w inne miejsce. Uniwersalny algorytm, który sterowałby robotem rozpoczynającym trase w dowolnym miejscu miałby kiepskie statystyki i zająłby jedno z ostatnich miejsc w rankingu. Przeciez każdy kto wysyłał program chciał wygrać w konkursie.
      Można też rozważyć ukrywanie części mapy, przez którą ma przejechać robot (taka dodatkowa niespodzianka) przy znanym położeniu mety.

      Usuń
    2. Nie mam pretensji, bo potraktowałem te zawody jako zabawę. Nie zmienia to jednak faktu, ze konkursowe programy nie spelnialy zalozen regulaminu.
      Przyklad - pierwsza praca - robot z "nieznanych" przyczyn podejmuje decyzje, skretu w lewo majac z prawej strony sciane, a prosto wolna przestrzen. Kawalek dalej w identycznym otoczeniu robot juz nie skrenca. Dlaczego?
      Bo programista nakazal mu skret tylko w tym miejscu, a dalej wykonuje juz inny algorytm, potem nastepny itd.. Rownie dobrze mozna bylo napisac w programie ciag instrukcji typu:
      prosto x
      prawo y
      prosto x
      lewo z itd.
      Robot przebylby wtedy trase nawet sie nie rozgladajac. Oczywiscie np. maszyny CNC lub roboty przemyslowe wlasnie tak dzialaja, ale nie o to chyba chodzilow tym zadaniu.
      Jak slusznie zauwazyles, ktos kto napisal algorytm inaczej - nie mial szans.
      Sam wlasnie tak napisalem. :)
      Przez to robot wyszukiwal droge sam, co wydluzylo trase.
      Moj robot ustawiony w kazdym miejscu trasy ktora przebywal, na 99% trafial do celu i wykonywal zadanie.
      Ale nie mam do nikogo pretensji, bo regulamin byl nieprecyzyjny i uczestnicy konkursu ktorzy poszli na "skroty" podjeli ryzyko dyskfalifikacji - udalo sie - ich zysk:)
      W tej dyskusji mamy jednak mozliwosc unikniecia takich bledow w przyszlosci, stad moja dygresja. Co bylo minelo, postarajmy sie, aby w przyszlosci bylo lepiej :)
      pozdrawiam Mariusz

      Usuń
  5. Z tego co widzę zainteresowanie konkursem chyba się skończyło?

    OdpowiedzUsuń
    Odpowiedzi
    1. Przypuszczałem, że tak będzie :-)
      Ale spróbujemy ożywić ją jeszcze raz, ponieważ jeden z zawodników, przesłał swoją mapę i zadanie do realizacji. Ukaże się jutro.

      Usuń
  6. Mariusz, czy jesteś pewien, że takie zadanie da się wykonać za pomocą dostępnych rozkazów?

    OdpowiedzUsuń
    Odpowiedzi
    1. Myślę, że jest to możliwe. Nie twierdzę, że będzie to łatwe zadanie ale wykonalne.
      Najprostrzym sposobem aby sie o tym przekonać jest spróbować :)
      Moje zadanie jest tylko prowokacją - zapraszam do składania własnych propozycji - wybierzemy najciekawszą :)
      Pozdrawiam
      Mariusz

      Usuń