博弈论/对策论
博弈论 —— matlab_基于matlab的空间博弈追逃_洋洋菜鸟的博客-CSDN博客(比较简洁 仅出租车,有matlab代码)
博弈论 / 对策论_赢得矩阵_wamg潇潇的博客-CSDN博客(很详细,有原理,后面有混合对策的matlab代码,还有零和博弈的线性规划解法的lingo代码)
博弈论 思路及模板代码_博弈论代码_Alkali!的博客-CSDN博客(详细的四个Nim博弈,c++代码)
博弈论总结 四大博弈模型 SG函数_harry1213812138的博客-CSDN博客(简洁的介绍上面链接的四个模型,有后两个的c++代码)
- 引言
对策论亦称竞赛论或博弈论。是研究具有斗争或竞争性质现象的数学理论和方法。 一般认为,它既是现代数学的一个新分支,也是运筹学中的一个重要学科。对策论发展 的历史并不长,但由于它所研究的现象与人们的政治、经济、军事活动乃至一般的日常 生活等有着密切的联系,并且处理问题的方法又有明显特色。所以日益引起广泛的注意。
深度学习的生成对抗网络的目标函数就是这个原理:二人零和博弈思想,用极大极小原理来判断某个对策是否有鞍点。
在日常生活中,经常看到一些具有相互之间斗争或竞争性质的行为。具有竞争或对抗性质的行为称为对策行为。在这类行为中。参加斗争或竞争的各方各自具有不同的目标和利益。为了达到各自的目标和利益,各方必须考虑对手的各种可能的行动方案,并力图选取对自己最为有利或最为合理的方案。对策论就是研究对策行为中斗争各方是否 存在着最合理的行动方案,以及如何找到这个合理的行动方案的数学理论和方法。
基本概念中包括局中人、行动、信息、策略、收益、均衡和结果等。其中局中人、策略和收益是最基本要素。局中人、行动和结果被统称为博弈规则。
博弈论简单讲就是,A采取措施影响B的行为,B的行为影响A的决策,两者来回博弈,最终达到一个动态平衡。博弈论严格来讲只是一种解题方式。
- 对策问题
对策问题的特征是参与者为利益相互冲突的各方,其结局不取决于其中任意一方的努力而是各方所采取的策略的综合结果。 先考察一个实际例子。
例题1 囚徒的困境
警察同时逮捕了两人并分开关押,逮捕的原因是他们持有大量伪币,警方怀疑他们伪造钱币,但没有找到充分证据,希望他们能自己供认,这两个 人都知道:如果他们双方都不供认,将被以持有大量伪币罪被各判刑 18 个月;如果双 方都供认伪造了钱币,将各被判刑 3 年;如果一方供认另一方不供认,则供认方将被从 宽处理而免刑,但另一方面将被判刑 7 年。将嫌疑犯 A、B 被判刑的几种可能情况列于表 1。
表 1 中每对数字表示嫌疑犯 A、B 被判刑的年数。如果两名疑犯均担心对方供认并希 望受到最轻的惩罚,最保险的办法自然是承认制造了伪币。 从这一简单实例中可以看出对策现象中包含有的几个基本要素。
- 对策的基本要素
- 零和对策含义
零和对策是一类特殊的对策问题。在这类对策中,只有两名局中人,每个局中人都只有有限个策略可供选择。在任一纯局势下,两个局中人的赢得之和总是等于零,即双方的利益是激烈对抗的。
例题
什么是鞍点
直观描绘靶点
上述定理给出了对策问题有稳定解(简称为解)的充要条件。
3、零和对弈的混合策略
具有稳定解的零和问题是一类特别简单的对策问题,它所对应的赢得矩阵存在鞍 点,任一局中人都不可能通过自己单方面的努力来改进结果。然而,在实际遇到的零和对策中更典型的是 μ + ν ≠ 0 的情况。由于赢得矩阵中不存在鞍点,此时在只使用纯策略的范围内,对策问题无解。
例题
4、零和博弈的线性规划算法
- 模型
- 出租车(附matlab代码)
2、AcWing 891.Nim游戏(c++代码)
给定n堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。
问如果两人都采用最优策略,先手是否必胜。
例如:有两堆石子,第一堆有2个,第二堆有3个,先手必胜。
操作步骤:
先手从第二堆拿走1个,此时第一堆和第二堆数目相同
无论后手怎么拿,先手都在另外一堆石子中取走相同数量的石子即可。
解题思路
必胜状态和必败状态
在解决这个问题之前,先来了解两个名词:
必胜状态,先手进行某一个操作,留给后手是一个必败状态时,对于先手来说是一个必胜状态。即先手可以走到某一个必败状态。
必败状态,先手无论如何操作,留给后手都是一个必胜状态时,对于先手来说是一个必败状态。即先手走不到任何一个必败状态。
- AcWing892(c++代码)
- AcWing893(c++代码)
- AcWing894(c++代码)
上面四个AcWing的c++代码放在一个文件夹里面,用vs运行的时候得先注释其他三个,因为不能有四个主函数,都在模型\博弈论对策论\AcWing892,虽然名字892但是都有