斯塔克尔伯格竞争模型(主从博弈模型)
基本概念
古诺模型实际上是假定两个寡头厂商同时作出各自的产量决策的。
现在假设厂商1先决定它的产量,然后厂商2知道厂商1的产量后再做出它的产量决策。因此,在确定自己产量时,厂商1必须考虑厂商2将如何作出反应。其他假设与古诺模型相同,这一模型称为斯塔克伯格(Stackelberg)模型。
斯塔克尔伯格竞争模型是一个价格领导模型,厂商之间存在着行动次序的区别。产量的决定依据以下次序:领导性厂商决定一个产量,然后跟随者厂商可以观察到这个产量,然后根据领导性厂商的产量来决定他自己的产量。
要注意的是,领导性厂商在决定自己的产量的时候,充分了解跟随厂商会如何行动——这意味着领导性厂商可以知道跟随厂商的反应函数。
因此,领导性厂商自然会预期到自己决定的产量对跟随厂商的影响。正是考虑到这种影响的情况下,领导性厂商所决定的产量将是一个以跟随厂商的反应函数为约束的利润最大化产量。在斯塔克尔伯格模型中,领导性厂商的决策不再需要自己的反应函数。
设市场需求函数为:
D=D(p1+p2)=a−b(p1+p2) D = D ( p 1 + p 2 ) = a − b ( p 1 + p 2 )
其中
p1 p 1 和
p2 p 2 分别是两个企业的产量。假设两企业的成本函数相同,都为
C=c0p C = c 0 p ,首先考虑在给定企业1的计划产量下,企业2寻求使自己利润最大化的最优产量
p2 p 2 ,即:
maxp2[a−b(p1+p2)]−cp2 max p 2 [ a − b ( p 1 + p 2 ) ] − c p 2
上面优化模型中的最优解的
p2 p 2 显然是
p1 p 1 的函数
p2=g(p1) p 2 = g ( p 1 ) ;
在知道企业2 对任意给定产量的反应后,企业1的最优产量模型为:
maxp1[a−b(p1+p2)]−cp1,s.t.p2=g(p1) max p 1 [ a − b ( p 1 + p 2 ) ] − c p 1 , s . t . p 2 = g ( p 1 )
因此斯塔克尔伯格(Stackelberg)模型是先求解如下的优化模型:
maxp2[a−b(p1+p2)]−cp2 max p 2 [ a − b ( p 1 + p 2 ) ] − c p 2
得到
p2=g(p1) p 2 = g ( p 1 )
然后再求解如下的优化模型:
maxp1[a−b(p1+p2)]−cp1,s.t.p2=g(p1) max p 1 [ a − b ( p 1 + p 2 ) ] − c p 1 , s . t . p 2 = g ( p 1 )
得到
p1 p 1 ,代入
p2=g(p1) p 2 = g ( p 1 ) 得到
p2 p 2 ,如此得到斯塔克尔伯格均衡时的
(p1,p2) ( p 1 , p 2 ) 。
斯塔克尔伯格应用实例
设市场需求函数为 D=61.2−10∗(p1+p2) D = 61.2 − 10 ∗ ( p 1 + p 2 ) ,两企业的成本函数都为 C=1.2p C = 1.2 p ,求斯塔克尔伯格均衡时两个企业的产量。(企业1为领导者,企业2为跟随者)
解:首先求解如下的优化模型:
maxp2[61.2−10∗(p1+p2)]−1.2p2 max p 2 [ 61.2 − 10 ∗ ( p 1 + p 2 ) ] − 1.2 p 2
得到
p2=60−10p120 p 2 = 60 − 10 p 1 20 ,然后求解下列优化模型:
maxp1[a−b(p1+p2)]−cp1,s.t.p2=60−10p120 max p 1 [ a − b ( p 1 + p 2 ) ] − c p 1 , s . t . p 2 = 60 − 10 p 1 20
得到结果为
p1=3,p2=1.5 p 1 = 3 , p 2 = 1.5 。
MATLAB实现
clear
clc
syms x z;
y2=-x*(61.2-10*(x+z))+1.2*x;
eq=diff(y2,x);
p2=solve(eq,x);
y1=-z*(61.2-10*(z+p2))+1.2*z;
vdpf = matlabFunction([y1],'Vars',{z});
[p1,fval1]=fminsearch(vdpf,0);
p2=subs(p2,'z',p1);
[p1,p2]