Wyzwanie - algorytm koła fortuny

0

Wyobraźmy sobie grę w koło fortuny, ale nie symulację, a prawdziwą grę w studio fizycznym kołem. Założenia:

  • znana jest ilość i znaczenie pól
  • gra 2 graczy, a zamiast trzeciego gracza jest uchylne ramię z siłownikiem, który "udaje" rękę gracza i popycha koło

Maszynę można skalibrować przed grą, czyli w dowolny sposób można zbadać charakterystykę działania koła, tzn mozna np w celu kalibracji (albo inaczej mówiąc, nauczenia AI) zakręcić kołem z zadaną siłą, żeby sprawdzić ile czasu koło się obracało i na którym polu się zatrzymało, zapisując także, z którego pola wystartowało. Zakładamy, że kalibracja polega jedynie na skończonej (jak najmniejszej - ile będzie wymagane?) liczbie prób, ale nie ustawiamy pola startowego, można tylko zakręcić kołem z dowolną siłą.

Zadanie:

  • przygotować algorytm, który na podstawie kalibracji w wyżej wymieniony sposób będzie w stanie każdorazowo obliczyć minimalną siłę (zakładamy, że koło musi wykonać co najmniej jeden pełny obrót), którą trzeba przyłożyć kręcąc kołem, tak aby koło zatrzymało się zawsze na jednym określonym polu z najwyższą stawką. Pytanie: ile razy trzeba zakręcić kołem kalibrując maszynę, aby prawdopodobieństwo, że obliczana na podstawie tej kalibracji siła kręcenia kołem zapewniła w 95% sukces

Zadanie 2:

  • jak wyżej, ale bez wcześniejszej kalibracji, a jedynie na podstawie obserwacji zachowania koła (gra jest jak zwykle, a znamy tylko siłę, z którą maszyna kręci kołem, czyli wtedy, gdy jest kolej maszyny). Po ilu kolejkach prawdopodobieństwo sukcesu, czyli trafienia przez maszynę zawsze najwyższej stawki na kole wzrośnie do 95% i czy przydatna jest w jakikolwiek sposób obserwacja zachowania koła obracanego przez graczy (nie znamy przyłożonej przez nich siły, znamy pole początkowe i końcowe oraz czas, jaki koło się obracało). Dla uściślenia zakładamy, że maszyna zawsze podczas swojej kolejki kręci kołem 2 razy, tzn tak jakby gracz trafił literę, a potem zakręcił drugi raz i traci kolejkę.

Ciekawy jestem, czy ktoś z forowiczów byłby w stanie zaprojektować taki algorytm, sieć neuronową itd i z której strony ugryźć taki temat :P

0

Nie wiem, czy tutaj jest potrzebna sieć neuronowa. Wystarczy zauważyć że g(F) = N, gdzie F to siła, N to liczba przeskoczonych pól (g czyli funkcja jest nieznana).
Ponieważ zależność jest trywialna to zwykły algorytm stosowany w PID da radę.
Ba, prosty model typu:
F' = F*(1 - (dN-N)/N) wystarczy.
F' - siła obrotu gdy chcemy obrócić koło o N pól.

Można też bawić się w interpolację/ekstrapolację, i przeliczać współczynniki po każdym obrocie.

Kwestia 95% zależy mocno od g(F), jeśli jest to funkcja liniowa to po dwóch obrotach już będzie 100%, przy funkcjach bardziej złożonych zależy to od modelu.

0

Co do pytania zawartego w zadaniu 1, to wydaje mi się, że wystarczą dwie kalibracje: max siła i (max siła)/2. Pod warunkiem, że ta druga wykona przynajmniej jeden obrót. Reszta to ekstrapolacja.

1 użytkowników online, w tym zalogowanych: 0, gości: 1