Поради для ботів King of the Hill


12

Які загальні поради щодо створення бота для участі у виклику King of the Hill? Які стратегії ви використовуєте для вирішення проблеми створення бота? Які структури даних ви вважаєте найбільш корисними?

Будь ласка, опублікуйте одну пораду на відповідь.


16
Я відчуваю, що це занадто багато залежить від конкретної проблеми.
Позов по

@QPaysTaxes Я моделював це безпосередньо після багатьох питань, що стосуються інших порад. Чи є спосіб виправити це питання, щоб бути кращим? Крім того, чи потрібно також виправити ці старі поради?
mbomb007

Наскільки я можу сказати, старіші запитання підказок базуються на мовах, що означає, що поради є універсальними, але ви не можете ними користуватися. Це питання є більш аналогічним "Поради щодо проблем Code Golf" - там, де це повністю залежить від проблеми. Однак, як підтверджують відповіді нижче, є кілька універсальних речей. Я конфліктний.
Фонд позову Моніки

2
Я думаю, що це залежить стільки ж від конкретних питань, скільки "поради щодо гри в гольф в (lang)", тому що ви в будь-якому випадку використовуєте багато різних мовних функцій у різних викликах
руйнівний лимон

Відповіді:


4

Знаходження рівноваги Неша

Це дуже важлива концепція, коли КОТХ передбачає відносно простий набір рішень, передбачає лише декілька гравців (як правило, 2) та є детермінованим. Рівновага Неша описує позицію "блокування": якщо два гравці визначилися з двома стратегіями, то два гравці будуть фактично заблоковані на цих позиціях: будь-який гравець, що змінює свою стратегію, просто створює додаткові вразливості.

Прикладами ігор, де важлива рівновага Неша, є:

  • Ножиці Rock-Paper-Scissors (-Lizard-Spock), у яких "неперевершена" стратегія - випадкова гра
  • Морра , який має "спектр" рівноваг. Пітер Тейлор написав хороший приклад у своїй відповіді тут .
  • Ділема в'язня, спільна гра, що відрізняється тим, що "заблукали всі"

Як знайти рівновагу

Знайти рівновагу насправді досить просто для більшості простих ігор і часто досить інтуїтивно зрозуміло. Тонну деталей з різноманітними методами можна знайти в Інтернеті. Основна концепція, яка зазвичай застосовується, полягає у створенні списку можливих стратегій, які можуть використовувати два гравці (варіанти, які надає гра). Якщо в одній стратегії "домінує" інша, то цю стратегію можна видалити зі списку, і процес повториться. Під "домінуванням" я маю на увазі, що якщо стратегія А завжди дає рівноцінний або кращий результат, ніж стратегія B, проти всіх решти стратегій противника, то стратегію B можна видалити зі списку.

Приклад: Ножиці-папір-папір

У RPS є щось, що називається "змішаною" рівновагою, що означає розподіл . Замість того, щоб грати в один і той же рух кілька разів (що призведе до швидкої поразки), рівновага полягає в тому, щоб грати 1/3 рок, 1/3 папір та 1/3 ножиці у випадковому розподілі. Якщо я граю навмання, мій противник нічого не може зробити, щоб отримати перевагу на мені, період. Якщо мій опонент вирішить не грати випадково, то це лише створює вразливість з його боку.

Ігри зі змішаною рівновагою, мабуть, найпоширеніші в PPCG, оскільки вони можуть приймати різні форми ( єдина цікава гра, яку я можу придумати з чистою рівновагою, - це дилема в'язня). Зазначу, що змішана рівновага не повинна бути рівномірно випадковою , просто щось інше, ніж щоразу грати в один і той же рух.

Використання цієї інформації

Рівновага Неша в грі часто являє собою "базову лінію", з якою вам слід спробувати оперувати. У RPS грає випадковим чином, гарантує фінішне місце біля середини пакету. Для того щоб перейти до вершини, ви повинні почати виявляти слабкі сторони іншого гравця.

Для цього вам слід дотримуватися рівноваги, коли не знаєте слабкості противника. Після виявлення цих слабких сторін (ви виявили, що ваш опонент не перебуває в рівновазі), тоді вам потрібно обережно вийти з рівноваги, щоб скористатися своїм супротивником. Ця дія, в свою чергу, створює ваші слабкі сторони. Тоді ви повинні виявити, коли ваш опонент змінює свою стратегію, щоб потім ви могли зупинити атаку і відновити випадкову гру.

Виявлення варіації від рівноваги

Це досить складно, і я не фахівець. Варіації можуть бути різними:

  • Улюблені деякі варіанти вище / нижче інших без будь-якої причини, наприклад, плеєр RPS, який грає в рок удвічі частіше, ніж ножиці, або той, що уникає відтворення паперу. Деякі відносно прості статистичні дані можуть це виявити.
  • Обгрунтування поточного відхилення від минулих ходів за деякою передбачуваною схемою. Сюди входять коти-копії, боти "б'є те, що б'ється за твій останній хід", або "катання на велосипеді". Це потребує додаткової логіки для виявлення, оскільки загальний розподіл ходу може бути розподілений рівномірно, навіть якщо ходи не є випадковими. Вам слід спробувати взяти запис рухів і знайти кореляції на кшталт "хід, який я зробив 2 оберти тому, і хід, який зробив мій опонент зараз", і "хід, який він зробив 1 оборот назад, і хід, який він зробив зараз", і т.д.
  • Ботів, чий розподіл переміщення базується на ваших. Уразливість в цих ботів часто не створюється (в вимірюваної величини) до тих пір , після того, як ви самі не варіювали від випадкового розподілу. Взагалі, ваш власний бот підпадає під цю категорію.

3

Будьте конкретні щодо вимог до запуску вашого бота

Боти можна писати різними мовами (і версіями цих мов), тому це допомагає всім, коли ви:

  1. Перевірте його в середовищі, яке задає ОП (або якнайближче до нього).
  2. Якщо це можливо, протестуйте його в різних інших середовищах (щоб допомогти іншим, хто хоче запустити його).
  3. Будьте конкретні щодо мови та версії, якою ви користуєтесь, та поясніть, як запустити свого бота.

Як бонус: якщо ви використовуєте менш відому мову, зробіть посилання на те, де люди можуть завантажити бінарний / джерело для запуску.


2

Якщо заснована команда, працюйте разом зі своєю командою

Хоча зазвичай ви можете написати бота, який працює сольно для виконання завдань, щоб допомогти своїй команді, є набагато більша перевага, коли ви координуєте і в грі, і поза нею. Яскравий приклад цього можна побачити у Red vs. Blue - Pixel Team Battlebots .

Під час розробки команди мали змогу поспілкуватися та обговорити, як координувати своїх ботів, щоб вони функціонували краще, ніж окремо. Хоча технічно той самий бот, SphiNotPi3000 був написаний, щоб він працював у тандемі з іншим із себе, і міг рухатися способами, які пояснювали б його слабкі сторони, якби він був сам. Кінцевим результатом було те, що вони змогли майже повністю домінувати на полі бою, навіть коли вони були просто двома проти всієї іншої команди .

Тож поза грою плануйте та координуйте з товаришами по команді, які стратегії слід охопити. Можливо, у когось є бот, який сканує карту по діагоналі? Проведіть сканування горизонтально (лише приклад). Всередині гри, якщо виклик дозволяє спілкуватися в команді, скористайтеся нею. Наприклад, у грі бойових ботів ви можете надіслати повідомлення товаришам по команді про положення ботів поза їх полем зору, а потім заохотити їх писати ботів сумісним способом, щоб використовувати ці сигнали.


2

Використовуйте мета-стратегію

Практично для кожної розумної стратегії є інша стратегія, яка її перемагає: Наприклад, ваш опонент може використовувати саме ті ж міркування, що і ви, щоб передбачити наступний крок, а потім протидіяти йому. Тепер ви можете спробувати знову відгадати опонента, але важко знати, коли зупинитись .

Ще одна проблема полягає в тому, що стратегія, яка добре вгадує розумного противника, може бути далеко не оптимальною щодо більш простих супротивників.

Як ви можете це вирішити? Ви дозволяєте вашому боту самостійно вирішувати, яку стратегію використовувати!

Для цього ви починаєте з надання боту репертуару різних стратегій. Потім перед кожним ходом ваш бот розглядає записану історію гри до цих пір і оцінює, як ці різні стратегії спрацювали б. Тоді виходить той, який був би найбільш успішним.

В тому числі стратегії, які сильні в першу чергу, допоможуть надати вашому боту хороші варіанти на вибір. Але слід також включити справді прості, адже вони часто краще працюють проти німих опонентів.

Ви можете подумати про те, щоб поставити упередження на деякі стратегії, щоб уникнути перевиконання (наприклад, намагатися обіграти схему, коли опонент діє лише випадковим чином), або віддати перевагу певним стратегіям на початку, коли ще не так багато інформації.

Звичайно, такий підхід буде працювати лише для певних видів королівських проблем. Мені це було дуже добре в матчі « Рок-папір-ножиці-ящірка-спок» . В інших іграх майже неможливо оцінити, наскільки б певна стратегія виправдалася, якби її насправді не грали.

Крайньою формою цього мета-підходу (що межує з обманом) було б включення відомої поведінки всіх інших ботів у ваш власний бот, щоб він міг чудово передбачити їхні кроки.


в тому числі відомого поведінки всіх інших бот в ваш власний бот не тільки кордонів на обмані, то це обман. Я впевнений, що це заборонена лазівка.
mbomb007
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.