在战略博弈中去除占优策略
Removing Dominated Strategies in Strategic Game
问题
我正在使用 Gambit 的 Python API 创建游戏树。我有带有策略的博弈树,我想通过消除所有严格占优的策略来减少我的树。我在 Gambit UI 中不这样做的 2 个原因是:有时我的树对它来说太大了,它不会让我保存一棵被支配策略修剪过的树,这让我很烦。
无论如何,我称之为让我获得不被控制的策略:
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'
这让我感到困惑,因为我认为这是此处提到的 Strategies 对象:http://www.gambit-project.org/gambit15/pyapi.html#gambit.Strategies
问题
有人可以帮我弄清楚我在这里应该做什么吗?
编辑:
正如@Gabriel 所说我应该做的,我将post 简要总结一下这里的答案。解决方案涉及调用:
undominated = g.support_profile().undominated().restrict()
restrict() 方法根据给定的 StrategySupportProfile 创建并 returns 一个新的矩阵游戏。当树变大时它有点慢,但它完成了工作。
我post在这里解决了这个问题,看起来它已经解决了。 https://github.com/gambitproject/gambit/issues/204
编辑:
正如@Gabriel 所说我应该做的那样,我将post 在这里简要总结一下答案。解决方案涉及调用:
undominated = g.support_profile().undominated().restrict()
restrict() 方法根据给定的 StrategySupportProfile 创建并 returns 一个新的矩阵游戏。当树变大时它有点慢,但它完成了工作。
问题
我正在使用 Gambit 的 Python API 创建游戏树。我有带有策略的博弈树,我想通过消除所有严格占优的策略来减少我的树。我在 Gambit UI 中不这样做的 2 个原因是:有时我的树对它来说太大了,它不会让我保存一棵被支配策略修剪过的树,这让我很烦。
无论如何,我称之为让我获得不被控制的策略:
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'
这让我感到困惑,因为我认为这是此处提到的 Strategies 对象:http://www.gambit-project.org/gambit15/pyapi.html#gambit.Strategies
问题
有人可以帮我弄清楚我在这里应该做什么吗?
编辑:
正如@Gabriel 所说我应该做的,我将post 简要总结一下这里的答案。解决方案涉及调用:
undominated = g.support_profile().undominated().restrict()
restrict() 方法根据给定的 StrategySupportProfile 创建并 returns 一个新的矩阵游戏。当树变大时它有点慢,但它完成了工作。
我post在这里解决了这个问题,看起来它已经解决了。 https://github.com/gambitproject/gambit/issues/204
编辑:
正如@Gabriel 所说我应该做的那样,我将post 在这里简要总结一下答案。解决方案涉及调用:
undominated = g.support_profile().undominated().restrict()
restrict() 方法根据给定的 StrategySupportProfile 创建并 returns 一个新的矩阵游戏。当树变大时它有点慢,但它完成了工作。