На стене есть переключатель.
Прессинг, который иногда приводит к голу, иногда нет. Это означает, что переключатель может быть не таким, как мы думаем.
Вопрос можно поставить абстрактно.
Пусть существует набор {a, b, c, d}.
Некоторые из элементов могут быть состояниями, некоторые действиями.
Предположим, что действия — это {a, b}, состояния {c, d}.
Имеем: с|d=a(c), с|d=b(c), c=a(d), с|d=b(d).
Здесь "|" означает «либо».
Итак, c|d=b(d) означает: из состояния d под действием b следует либо c, либо d. Попробуем интерпретировать это по-другому.
Предположим: действия {a, c}, состояния {b, d}.
Пусть имеем: b=a(b), b|d=c(b), d=a(d), b=c(d).
Разница, если ее выразить количественно, заключается в более однозначном поведении второй гипотезы.
В первом случае коэффициент однозначности, принятый как отношение всех переходов к однозначным ко всем произошедшим переходам, будет равен 4/7. Во втором случае оно будет равно 4/5. Или, другими словами, мы имеем почти детерминированное пространство состояний.
По которым уже можно делать прогнозы с приемлемой точностью.
Это было введение.
Теперь к самой статье.
Имеется объект исследования (пространство состояний), уникальность которого достаточно высока.
И есть несколько агентов, целью которых является достижение целевых состояний.
Что, в частности, может совпадать.
Оговорюсь, что эти агенты не знают о других агентах.
Поэтому их ходы определяются только их картами QL, которые агенты формируют в результате исследования пространства состояний.
В отличие от игр, допускающих частичное или полное знание QL-карт других участников.
Следствием является возможность оптимизации маршрута при попеременных ходах, включая опцию эмпатии.
Возможно, эта тема будет обсуждаться в будущем.
Теперь к технической стороне описания.
Загрузите сгенерированные графики load_file. В качестве демонстрации в игре представлены три агента.
Цель каждого — достичь состояния=9. Условие=10 следует избегать.
Второй агент с загруженным графом_b — это возможность двигаться только по черным стрелкам.
Начиная с состояния = 4, мы имеем неоднозначность, поскольку за действием 11 может следовать либо состояние = 5, либо состояние = 1. Из состояния=3 его нет, поскольку действие 11 отличается от действия 13. Вызов g2.get_ku() вернет коэффициент уникальности 0,917=11/12. Третий агент с графом_w — возможность перемещения как по чёрным, так и по синим стрелкам.
Для сравнения: g3.get_ku() вернет 0,933. Первый агент с графом_w1 имеет те же возможности, что и граф_w за исключением перехода 9=12(2), т.е.
перехода в 9 из 2 при действии 12 нет. Его коэффициент уникальности равен 0,929.
Создадим список агентов [[g1, {e: 5, b: -6}, s, e, 1], [g2, {e: 5, b: -6}, s, e, 1], [ g3, {е:5, б:-6}, с, е, 1]].{ "1": [["2", "11"], ["10", "15"]], "2": [["3", "11"]], "3": [["4", "11"], ["2", "13"], ["6", "12"]], "4": [["5|1", "11"]], "5": [["6", "11"]], "6": [["7", "11"]], "7": [["8", "11"], ["5", "12"]], "8": [["9", "11"]], "9": [], "10":[["5", "15"]] } { "1": [["2", "11"], ["10", "15"]], "2": [["3", "11"]], "3": [["4", "11"], ["2", "13"]], "4": [["5|1", "11"]], "5": [["6", "11"]], "6": [["7", "11"]], "7": [["8", "11"]], "8": [["9", "11"]], "9": [], "10":[["5", "15"]] } { "1": [["2", "11"], ["10", "15"]], "2": [["3", "11"], ["9", "12"]], "3": [["4", "11"], ["2", "13"], ["6", "12"]], "4": [["5|1", "11"]], "5": [["6", "11"]], "6": [["7", "11"]], "7": [["8", "11"], ["5", "12"]], "8": [["9", "11"]], "9": [], "10":[["5", "15"]] }
Зададим количество игр k=1.
Здесь первый игрок, у которого=0, сформирует QL-карту, по которой будет проложен маршрут [1,2,3,6,7,8,9].
Второй агент последовательно проходит все состояния.
Третий агент имеет самый короткий маршрут. При поочередных ходах путь к цели выглядит по-другому.
Маршрут представлен кортежами (агент, состояние).
Из начального состояния=1 агент=0 переходит в состояние=2. Далее, кто=1 переходит в состояние=3. Затем who=2 согласно своей карте QL возвращается обратно в состояние=2 (так выглядит его оптимальный путь).
Первый агент из состояния = 2 выбирает состояние = 3, поскольку в его сознании это единственный путь к цели.
Видно, что из состояния = 4 третий агент попадает в состояние = 1 (из-за неоднозначности выбора из состояния = 4).
Маршрут петляет. И только со второй попытки третий агент оказывается в состоянии=5. Затем последовательно до состояния = 9 с поочередными ходами.
Победителем становится агент, у которого = 0. Теперь давайте сгенерируем 100 игр.
Результат ниже.
Для второго агента оказалось, что пути к цели по результату последней игры нет. Это произошло потому, что от состояния=3 до состояния=4 ql=1,57, а до состояния=2 ql=2,39. Другими словами, состояния 2 и 3 закольцованы.
Почему карта QL сформировалась именно так? Следствие (косвенное) неоднозначности при переходе из состояния = 4. Увеличим количество ходов = 4 за раз для второго агента.
Видно, что в последней игре он последовательно выбирает [3, 4, 1, 2].
При победе из 100 игр три в таком порядке ходов в большинстве случаев являются третьим агентом.
Код приведен ниже.
Никаких сложностей это не представляет. import random, pickle, json
class GenGraph():
Теги: #Алгоритмы #игра #нка #коэффициент уникальности #пространство состояний #чередование ходов #QL-карта
-
Чем Может Помочь Чит Для Starcraft 2?
19 Oct, 24 -
Playstation Suite Sdk: Релиз В Ноябре
19 Oct, 24 -
Акция На Обновление От Toshiba
19 Oct, 24