博弈论 / 对策论

1 引言 

社会及经济的发展带来了人与人之间或团体之间的竞争及矛盾,应用科学的方法来 解决这样的问题开始于 17 世纪的科学家,如 C.,Huygens 和 W.,Leibnitz 等。现代对策论起源于 1944 年 J.,Von Neumann 和 O.,Morgenstern 的著作《Theory of Games and Economic Behavior》。

对策论亦称竞赛论或博弈论。是研究具有斗争或竞争性质现象的数学理论和方法。 一般认为,它既是现代数学的一个新分支,也是运筹学中的一个重要学科。对策论发展 的历史并不长,但由于它所研究的现象与人们的政治、经济、军事活动乃至一般的日常 生活等有着密切的联系,并且处理问题的方法又有明显特色。所以日益引起广泛的注意。

深度学习的生成对抗网络的目标函数就是这个原理:二人零和博弈思想,用极大极小原理来判断某个对策是否有鞍点

在日常生活中,经常看到一些具有相互之间斗争或竞争性质的行为。具有竞争或对抗性质的行为称为对策行为。在这类行为中。参加斗争或竞争的各方各自具有不同的目标和利益。为了达到各自的目标和利益,各方必须考虑对手的各种可能的行动方案,并力图选取对自己最为有利或最为合理的方案。对策论就是研究对策行为中斗争各方是否 存在着最合理的行动方案,以及如何找到这个合理的行动方案的数学理论和方法。 

目录

1 引言 

2 对策问题           例题1 囚徒的困境

2.1  对策的基本要素     (i)局中人  (ii)策略集(iii) 赢得函数(支付函数)  

2.2 零和对策(矩阵对策)           例题2  

什么是鞍点    最优纯策略 

极大极小原理-----判断某个对策是否有鞍点       对策问题的多个解之间的关系(两条性质)

3 零和对策的混合策略 

3.1 零和对策的混合策略               3.2 混合策略对策问题的鞍点           例题3 

3.3 关于对策解集性质的主要结果的三个定理

4 零和对策的线性规划解法  例题4 

 5 二人非常数和对策 

5.1 常数和对策                    5.2 纯策略问题 ---分析囚徒困境

5.3 双矩阵对策   5.4 Nash平衡点 / 纳什均衡

5.5 混合对策问题 

(1) 混合对策问题的基本概念:赢得值         (2)混合对策问题的求解方法        例题5           习题


2 对策问题 

对策问题的特征是参与者为利益相互冲突的各方,其结局不取决于其中任意一方的努力而是各方所采取的策略的综合结果。 先考察一个实际例子。 

例题1 囚徒的困境

 警察同时逮捕了两人并分开关押,逮捕的原因是他们持有大量伪币,警方怀疑他们伪造钱币,但没有找到充分证据,希望他们能自己供认,这两个 人都知道:如果他们双方都不供认,将被以持有大量伪币罪被各判刑 18 个月;如果双 方都供认伪造了钱币,将各被判刑 3 年;如果一方供认另一方不供认,则供认方将被从 宽处理而免刑,但另一方面将被判刑 7 年。将嫌疑犯 A、B 被判刑的几种可能情况列于表 1。

表 1 中每对数字表示嫌疑犯 A、B 被判刑的年数。如果两名疑犯均担心对方供认并希 望受到最轻的惩罚,最保险的办法自然是承认制造了伪币。     从这一简单实例中可以看出对策现象中包含有的几个基本要素。

2.1  对策的基本要素 

(i)局中人 

(ii)策略集

(iii)赢得函数(支付函数) 

本节我们只讨论有两名局中人的对策问题,其结果可以推广到一般的对策模型中 去。 

2.2 零和对策(矩阵对策)

零和对策是一类特殊的对策问题。在这类对策中,只有两名局中人,每个局中人都 只有有限个策略可供选择。在任一纯局势下,两个局中人的赢得之和总是等于零,即双 方的利益是激烈对抗的。 

例题2  

 

什么是鞍点

最优纯策略

极大极小原理-----判断某个对策是否有鞍点

给定一个对策G ,如何判断它是否具有鞍点呢?为了回答这一问题,先引入下面 的极大极小原理。 

    上述定理给出了对策问题有稳定解(简称为解)的充要条件

对策问题的多个解之间的关系(两条性质)

  当对策问题有解时, 其解可以不唯一,当解不唯一时,解之间的关系具有下面两条性质: 

3 零和对策的混合策略 

具有稳定解的零和问题是一类特别简单的对策问题,它所对应的赢得矩阵存在鞍 点,任一局中人都不可能通过自己单方面的努力来改进结果。然而,在实际遇到的零和对策中更典型的是 μ + ν ≠ 0 的情况。由于赢得矩阵中不存在鞍点,此时在只使用纯策略的范围内,对策问题无解

3.1 零和对策的混合策略

3.2 混合策略对策问题的鞍点

 使用纯策略的对策问题(具有稳定解的对策问题)可以看成使用混合策略的对策问 题的特殊情况,相当于以概率 1 选取其中某一策略,以概率 0 选取其余策略。

例题3 

 

3.3 关于对策解集性质的主要结果的三个定理

4 零和对策的线性规划解法

例题4 

编写程序如下: 

clear 
a=[1/3,1/2,-1/3;-2/5,1/5,-1/2;1/2,-3/5,1/3];b=10; 
a=a+b*ones(3);   %把赢得矩阵的每个元素变成大于0的数 
[x0,u]=linprog(ones(3,1),-a',-ones(3,1),[],[],zeros(3,1)); 
x=x0/u,u=1/u-b 
[y0,v]=linprog(-ones(3,1),a,ones(3,1),[],[],zeros(3,1)); 
y=y0/(-v),v=1/(-v)-b 

下面我们使用式(2)和(3),利用 LINGO 编程求例 4 的解。LINGO 程序如下: 

model: 
sets: 
player1/1..3/:x; 
player2/1..3/:y; 
game(player1,player2):c; 
endsets 
data: 
ctrl=?; !ctrl取1求局中人1的策略,ctrl取0求局中人2的策略; 
c=0.3333333 0.5 -0.3333333 
-0.4 0.2 -0.5 
0.5 -0.6 0.3333333; 
enddata 
max=u*ctrl-v*(1-ctrl); 
@free(u);@free(v); 
@for(player2(j):@sum(player1(i):c(i,j)*x(i))>u); 
@for(player1(i):@sum(player2(j):c(i,j)*y(j))<v); 
@sum(player1:x)=1; 
@sum(player2:y)=1; 
end 

由定理4知,混合对策问题的求解问题可以转化为求不等式约束的可行点,而 LINGO软件很容易做到这一点。我们编写如下Lingo程序求解上述问题。 

model: 
sets: 
player1/1..3/:x; 
player2/1..3/:y; 
game(player1,player2):c; 
endsets 
data: 
c=0.3333333 0.5 -0.3333333 
  -0.4 0.2 -0.5 
  0.5 -0.6 0.3333333; 
enddata 
@free(u); 
u=@sum(game(i,j):c(i,j)*x(i)*y(j)); 
@for(player1(i):@sum(player2(j):c(i,j)*y(j))<u); @for(player2(j):@sum(player1(i):c(i,j)*x(i))>u); 
@sum(player1:x)=1; 
@sum(player2:y)=1; 
end 

 

 5 二人非常数和对策 

5.1 常数和对策

所谓常数和对策是指局中人I和局中人II所赢得的值之和为一个常数。显然,二人零和对策是二人常数和对策的特例,即常数为零。 对于二人常数和对策,有纯策略对策混合策略对策,其求解方法与二人零和对策是相同的。 二人非常数和对策也称为双矩阵对策。也有纯策略对策和混合策略对策两种策略。

5.2 纯策略问题 ---分析囚徒困境

例1给出了典型的二人非常数和对策,每人的赢得矩阵是不相同的,因此称为双矩阵对策

问题分析: 这是一个二人非常数和对策问题。从表面上看,两犯罪嫌疑人拒不供认,只能被判18个月徒刑,结果是最好的。但仔细分析,却无法做到这一点。因为犯罪嫌疑人A如 果采用不供认策略,他可能被判刑的刑期为18个月或7年,而犯罪嫌疑人B 可能判的刑 期为0或18个月。而 A选择供认,他被判的刑期为0或3年,此时,犯罪嫌疑人B 可能判 的刑期为3年或7年。因此,犯罪嫌疑人 A一定选择供认。基于同样的道理,犯罪嫌疑 人B 也只能选择供认。 选择供认是他们最好的选择,各自被判3年。

5.3 双矩阵对策 

5.4 Nash平衡点 / 纳什均衡

5.5 混合对策问题 

如果不存在使式(4)成立的对策,则需要求混合对策。类似于二人零和对策情况, 需要给出混合对策的最优解。 

(1) 混合对策问题的基本概念:赢得值

对于混合对策问题有如下定理

(2)混合对策问题的求解方法 

由定义6可知,求解混合对策就是求非合作对策的平衡点,进一步由定理8得到, 求解非合作对策的平衡点,就是求解满足不等式约束(5)的可行点。因此,混合对策问题的求解问题就转化为求不等式约束(5)的可行点,而LINGO软件可以很容易做到 这一点。

例题5  

有甲、乙两支游泳队举行包括三个项目的对抗赛。这两支游泳队各有一名健 将级运动员(甲队为李,乙队为王),在三个项目中成绩都很突出,但规则准许他们每 人只能参加两项比赛,每队的其他两名运动员可参加全部三项比赛。已知各运动员平时 成绩(秒)见表 3。 

 

clc,clear 
a=[59.7 63.2 57.1 58.6 61.4 64.8
 67.2 68.4 63.2 61.5 64.7 66.5 
74.1 75.5 70.3 72.6 73.4 76.9]; 
m=3;n=3;kk=3;T=1000; 
sc1=[5:-2:1,zeros(1,3)]; %1-6 名的得分 
sc2=repmat(sc1,kk,1); 
for i=1:m     
    for j=1:n         
        b=a;         
        b(i,3)=T;b(j,4)=T; %不参加比赛,时间成绩取为充分大          
        [b,ind]=sort(b,2); %对 b 的每一行进行排序         
        for k=1:m             
            sc2(k,ind(k,:))=sc1; %计算得分         
        end         
        A_sc(i,j)=sum(sum(sc2(:,1:m)));  %统计得分 
        B_sc(i,j)=sum(sum(sc2(:,m+1:end)));     
    end    
end 
A_sc,B_sc 
fid=fopen('txt2.txt','w'); 
fprintf(fid,'%f\n',A_sc'); 
fwrite(fid,'~','char');       %往纯文本文件中写 LINGO 数据的分割符 fprintf(fid,'%f\n',B_sc'); 
fclose(fid); 

按照定理8,求最优混合策略,就是求不等式约束(5)的可行解,写出相应的LINGO 程序如下:

model: 
sets: 
pa/1..3/:x; 
pb/1..3/:y; 
link(pa,pb):c1,c2; 
endsets 
data: 
c1=@file(txt2.txt); 
c2=@file(txt2.txt); 
enddata 
v1=@sum(link(i,j):c1(i,j)*x(i)*y(j)); 
v2=@sum(link(i,j):c2(i,j)*x(i)*y(j)); 
@for(pa(i):@sum(pb(j):c1(i,j)*y(j))<v1); 
@for(pb(j):@sum(pa(i):c2(i,j)*x(i))<v2); 
@sum(pa:x)=1;@sum(pb:y)=1; 
@free(v1);@free(v2); 
end 

 

习题

 

  • 46
    点赞
  • 167
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值