讲一讲演化博弈-1

前期声明:演化博弈本身内涵十分复杂,本篇是笔者在平时学习演化博弈的文献以及自己写文章过程中得出的一些心得,也是提供给接触该方向的学者一个思路。如有错误恳请大佬们轻喷(手动狗头)        

1.什么是演化博弈? 

演化博弈理论(Evolutionary Game Theory)。演化博弈理论一般会探讨博弈论在生物学中的应用,有一个非常有名的理论,就是纳什均衡理论,其认为任何一个系统都是无数次动态博弈的稳定状态,或者说成:物竞天择,适者生存。虽然演化思想最初来自于生物学领域,但演化博弈论都把“创新,选择和扩散”视为演化的主要机制,演化博弈论也为演化经济学提供了微观基础。具体可以参考这篇文章:博弈论 | 演化博弈理论(Evolutionary Game Theory)的理解-CSDN博客

演化博弈论是把博弈理论分析和动态演化过程分析结合起来的一种理论。强调的是一种动态的均衡。当前演化博弈的发展多从角度和方法而言,比如从最初始的二方(双方)博弈、三方、四方博弈等等。或者多从原始演化博弈,创新演化博弈,群众效应演化博弈。简单而言就是在演化博弈的基础上,对复制动态方程的界定,支付矩阵的建立考虑复杂理论进行改进,又或者是通过某一种算法对系统偏向概率选择进行优化。

2.现有演化博弈存在的问题

现有演化博弈已经接近饱和,特别是传统的演化博弈模型,有太多学者用这个模型应用在各种各样的行业,比如金融,图书管理,情报学,心理学,甚至是最近的科技发展,大数据等方向。但归根到底,其内涵没有变化,都是最初始的0-1概率选择。找到新的突破方向是打破当前演化博弈局限性的关键。

其次,演化博弈模型存在强主观性,对于不同变量的赋值,难以找到一个标准界定,甚至是难以建立一个数学公式计算变量值。笔者看过大部分文献,都是简单一言概括变量的取值是根据某某文献而来,但是追溯该文献中,对变量的取值也没有明确的说明。这也证明了,当前演化博弈模型的合法性,敏感性缺乏实质性的依据。

最后,其实仔细总结不难发现,大部分的演化博弈类文章存在根据结果推过程的嫌疑。这也决定了这部分文章的质量并不高。例如有些演化博弈文章是研究电车能源与政府,企业之间的博弈,那必然得到的趋势点是1,1,1的稳定点。因此,不少作者由结论推过程,并在过程上“加花”处理,修饰假设,以此来达到优化模型的目标,但实际上,这类做法有点拙略。可能演化博弈实质上是一种理论模型,它在一定程度上确实无法用数据来说明。但是初学该模型非常容易陷入脱离数据的犯错点/

3.小结

其实避免以上问题,最为关键i的作者自己要明确演化博弈的内涵,而不是以水一篇文章为目标。从模型假设开始,变量的选择以及界定,最好根据一定现实数据量作为参考,根据现有数据搭建参数的数学公式,让模型更有说服力。其次,要对现有模型提出改进,摆脱常见的数值仿真,而是利用神经网络,机器学习对博弈进行迭代选择,或者是结合进化理论,比如说从众效应,协同效应等理论,丰富演化博弈模型,做好这两点,那这一篇演化博弈文章就不会太差了。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于演化博弈论的模型种类繁多,此处给出一个简单的例子:囚徒困境。 囚徒困境是一个经典的博弈论问题,涉及两个囚犯,被控告犯有某个罪行。检察官给每个囚犯提供了一个选择:承认罪行或者否认罪行。如果两个人都否认罪行,那么他们都将被判无罪;如果两个人都承认罪行,那么他们都将被判有罪;如果其中一个人承认罪行而另一个人否认罪行,那么承认罪行的人将被判有罪,而另一个人将被判无罪。囚犯之间不能互相沟通,也不能改变自己的选择。 假设有两种策略:承认罪行和否认罪行,分别用数字 1 和 0 表示。我们可以用一个列表来表示一个囚犯的策略,例如 [1, 0] 表示囚犯承认罪行。 下面的代码中,我们将使用博弈论的 Nash 均衡理论来计算囚徒困境的最优策略。具体地,我们采用了 Replicator Dynamics 算法来模拟演化过程。 ```python import numpy as np # 定义囚徒困境的收益矩阵 # 注意:这里的矩阵是按照 [0, 1] 表示否认罪行,[1, 0] 表示承认罪行的顺序排列的 payoff_matrix = np.array([[3, 0], [5, 1]]) # 定义 Replicator Dynamics 算法 def replicator_dynamics(payoff_matrix, num_iterations): num_strategies = len(payoff_matrix) population = np.random.rand(num_strategies) for i in range(num_iterations): fitness = np.dot(population, payoff_matrix) avg_fitness = np.dot(fitness, population) new_population = population * (fitness / avg_fitness) population = new_population / np.sum(new_population) return population # 计算 Nash 均衡 nash_equilibrium = replicator_dynamics(payoff_matrix, 10000) # 输出结果 print('Nash 均衡点:', nash_equilibrium) print('最优策略:', np.argmax(nash_equilibrium)) ``` 运行结果可能如下: ``` Nash 均衡点: [0.25 0.75] 最优策略: 1 ``` 上述代码中,我们使用了 numpy 库来处理矩阵运算。在 replicator_dynamics 函数中,我们首先随机生成了一个初始的人口比例向量 population,然后在循环中不断更新该向量。具体来说,我们计算了每个策略的适应度 fitness(即期望收益),然后计算了所有策略的平均适应度 avg_fitness,最后根据 Replicator Dynamics 公式计算出新的人口比例向量 new_population。最后我们将 new_population 归一化,以保证总人口比例为 1。循环结束后,我们返回最终的人口比例向量,即 Nash 均衡点。 在上述代码中,我们计算了 Nash 均衡点和最优策略。对于囚徒困境来说,最优策略是承认罪行,因为这样能够获得更高的收益。Nash 均衡点是 [0.25, 0.75],表示在这个比例下,承认罪行和否认罪行两种策略的期望收益相等。这个结果比较符合直觉,因为在囚徒困境中,承认罪行虽然能够获得更高的收益,但是如果双方都承认罪行,那么双方的收益都会很低,因此有一定比例的人选择否认罪行是比较合理的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值