Удаление доминирующих стратегий в стратегической игре
Эта проблема
Я использую 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. Это немного медленно, когда дерево становится большим, но оно выполняет свою работу.