Jak stworzyć rozsądną sztuczną inteligencję?


11

Tworzę grę logiczną opartą na grze Fox and Hounds. Gracz gra lisa, a AI ogara. (o ile widzę) udało mi się uczynić AI idealną, aby nigdy nie traciła. Pozostawienie go jako takiego nie byłoby dobrą zabawą dla ludzkich graczy.

Teraz muszę ogłuszyć AI, aby człowiek mógł wygrać, ale nie jestem pewien, jak to zrobić. Obecna logika AI opiera się na dopasowywaniu wzorców - jeśli wprowadzę losowe ruchy, które powodują, że plansza wychodzi poza obszar wzorców, AI najprawdopodobniej grałaby głupio do końca gry.

Jakieś pomysły, jak ogłuszyć sztuczną inteligencję w taki sposób, że nie przechodzi z „geniuszu” do „całkowicie głupiego” jednym ruchem?


Więc znalazłeś i wdrożyłeś optymalną, zawsze zwycięską strategię. Dlaczego nie przejść teraz do nieco bardziej skomplikowanych gier? Albo co z wyzwaniem: wdrożyć strategię, która zawsze przegrywa , bez względu na to, co robi drugi gracz. Zobacz także: Przegrana w szachy / Antichess
Martin Sojka

Może chciałbyś rzucić
Tyn

Lis i psy gończe nie są tak złożone jak szachy. Jeden zły ruch i AI na pewno przegrywa. Bardzo łatwo jest sprawić, by sztuczna inteligencja wyglądała głupio. Fakt, że rozwiązałem go za pomocą długopisu i kartki oraz godzin strategicznego myślenia, nie oznacza, że ​​moi gracze zrobią to samo.
Milan Babuškov,

Odpowiedzi:


7

Wiele implementacji może prowadzić do losowej ważonej szansy na ruchy - powiedzmy, szansy na wykonanie ruchu optymalnego i szansę na ruch nieoptymalny. Określenie, jak mało optymalny jest ruch, może być bardzo trudnym problemem, ale doprowadzi również twoją AI do podejmowania znacznie bardziej pozornie inteligentnych decyzji.

Ważna uwaga: Bez względu na ustawienie trudności, prawdopodobnie byłoby kiepskim pomysłem, aby AI zmarnowało szansę na natychmiastowe zwycięstwo w grze. Jeśli istnieje możliwość wykonania ruchu, który zakończy grę w tej turze, należy ją zawsze podjąć. Jeśli nie, absolutnie zniszczy wrażenie gracza o tym, jak działa AI.


Dzięki. Postanowiłem pozwolić, aby grała mądrze dla wszystkich prostych wzorów. Istnieją dwa złożone wzorce, w których droga gracza do wolności nie jest dobrze widoczna, dlatego stworzyłem dodatkowe wzorce, które powodują, że AI przegrywa, wykonując ruchy, które przypominałyby początkującego człowieka na takiej pozycji. Na początku gry losowo zmieniam zwycięski wzór, tracąc go dla takich pozycji.
Milan Babuškov

10

Ponieważ wydaje się, że jest to „rozwiązana” gra, jedyną odpowiedzią jest to, że komputer musi celowo wykonywać złe ruchy.

Szybkim rozwiązaniem może być obliczyć najlepszy ruch, a następnie obliczyć kolejny legalny ruch, który może nie być tak dobry. Stopień trudności sztucznej inteligencji byłby mierzony procentową szansą, że wybierze on inny niezbyt dobry ruch, w stosunku do idealnego ruchu.

  • Trudne - 90% dobrych ruchów
  • Trudne - 70% dobrych ruchów
  • Normalny - 50% dobrych ruchów
  • Proste - 20% dobrych ruchów
  • Został upuszczony jako dziecko - <5% dobrych ruchów
  • Hotdog - wszystkie losowe

10
Jest to prawdopodobnie dobry pomysł, ale skończyłbyś się opóźnioną sztuczną inteligencją, jeśli celowo wykonuje niewłaściwe ruchy. Z czubka głowy najpierw wykonałem podanie do „legalnych” ruchów, następnie przyłożyłem ciężary do każdego ruchu i posortowałem je według wagi, przy czym najwyższa waga jest najlepszym ruchem. Następnie możesz sprawić, że RNG zbiega się w kierunku lepszych ruchów w zależności od poziomu trudności.
Jonathan Connell,

4
Zgadzam się z @Jonathan Connell. Zastanów się: chowanie się za skrzynkami vs chowanie się za wybuchowymi beczkami vs chowanie się wśród skrzyń i aktywnego granatu. AI powinna ocenić, jak zły jest ruch, przy czym lepsza AI częściej wykonuje lepsze ruchy. Sztuczna inteligencja nie będzie ani świetna, ani trudna, jeśli w 70% przypadków zastrzeli cię i w 30% przypadków wybuchnie. To będzie po prostu zabawne.
doppelgreener

2
@Adrian Seeley Twój ostatni komentarz naprawdę dotyka największego problemu; dla mnie człowiek grający przeciwko AI zawsze instynktownie znajdzie uzasadnienie swoich wyborów, nawet jeśli teoretycznie są całkowicie losowe. Na przykład w grze planszowej można temu przeciwdziałać, ograniczając liczbę iteracji w przewidywaniu ruchów, więc może to może być dobre rozwiązanie w rozwiązanej grze?
Jonathan Connell,

2
Zgadzam się z obydwoma Jonathanami, ale daję tę odpowiedź +1 za „Został upuszczony jako dziecko” i „Hotdog”
thedaian

2
@Jonathan Connell: Powinieneś opublikować swoją propozycję / rozwiązania jako odpowiedź. Zasługiwałoby to na pozytywne głosy.
bummzack
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.