Удаление доминирующих стратегий в стратегической игре

Эта проблема

Я использую Python API Gambit для создания игрового дерева. У меня есть дерево игр со стратегиями, и я хочу уменьшить свое дерево, исключив все строго доминируемые стратегии. 2 Причины, по которым я не делаю этого в пользовательском интерфейсе Gambit: иногда мое дерево слишком велико для него, и оно не позволяет мне сохранить дерево, обрезанное из доминирующих стратегий, что меня раздражает.

В любом случае, я называю это, чтобы получить мне не назначенные стратегии:

undominated = g.support_profile().undominated()

Неудачная попытка № 1:

Я хочу удалить все стратегии, НЕ включенные в этот список, из моей игры (т.е. удалить все доминирующие стратегии в игре). (ЭТО ЧТО Я ХОЧУ ДАЖЕ? Я ТАКЖЕ УДАЛЯЮ СЛАБЫЕ ДОМИНИРОВАННЫЕ СТРАТЕГИИ?) Итак, я звоню:

for strategy in g.support_profile():
    if strategy not in undominated:
        g.support_profile().remove(strategy)

Тем не менее, я думаю, что это оставляет мой список без изменений... (Я ожидал удалить ~200 и остаться с 3 стратегиями, но у меня все еще были мои ~200 стратегий).

Что я мог делать неправильно?

Неудачная попытка № 2:

Я хочу создать НОВУЮ игру со всеми моими не назначенными стратегиями. Однако, если я создаю новую игру под названием "h" со своими игроками, я хочу попробовать добавить эти стратегии в мою новую игру (неортодоксально, но я подумал о том, чтобы попробовать).

for strategy in undominated:
    h.strategies.add(strategy)

AttributeError: 'gambit.lib.libgambit.GameStrategies' 
object has no attribute 'add'

что смущает меня, потому что я думал, что это был объект Стратегии, как упомянуто здесь: http://www.gambit-project.org/gambit15/pyapi.html

Вопрос

Может кто-нибудь, ПОЖАЛУЙСТА, помочь мне понять, что я должен делать здесь?

Редактировать:

Как @Gabriel заявил, что я должен сделать, я выложу кратко резюмированный ответ здесь. Решение включало вызов:

undominated = g.support_profile().undominated().restrict()

Метод restrict() создает и возвращает новую матричную игру на основе заданного StrategySupportProfile. Это немного медленно, когда дерево становится большим, но оно выполняет свою работу.

1 ответ

Решение

Я разместил проблему здесь, и похоже, что она была решена. https://github.com/gambitproject/gambit/issues/204

Редактировать:

Как @Gabriel заявил, что я должен сделать, я выложу кратко резюмированный ответ здесь. Решение включало вызов:

undominated = g.support_profile().undominated().restrict()

Метод restrict() создает и возвращает новую матричную игру на основе заданного StrategySupportProfile. Это немного медленно, когда дерево становится большим, но оно выполняет свою работу.

Другие вопросы по тегам