博弈论——伯特兰德寡头模型(Bertrand Model)
伯特兰德寡头模型(Bertrand Model)
0 引言
在前面几篇文章中,我们介绍了古诺模型(Cournot duopoly model)和斯塔克尔伯格模型(Stackelberg model)
博弈论——连续产量古诺模型(Cournot duopoly model)
博弈论——斯塔克尔伯格模型(Stackelberg model)
这两个模型都是把厂商的产量作为竞争手段,是一种产量竞争模型,也就是说博弈方的决策变量都是产量,而伯特兰德模型是价格竞争模型。
同时我们也介绍了反应函数法:得益是策略多元连续函数的博弈,都可以求每个博弈方的反应函数,解出各博弈方反应函数的交点就是纳什均衡。这种用反应函数求纳什均衡的方法,称为“反应函数法”。我们也分别用反应函数对古诺模型和斯塔克尔伯格模型进行了求解。
在这篇文章中,我们将继续推进反应函数法的使用,利用该方法来求解伯特兰德模型。
1 伯特兰德寡头模型
1.1 模型建立
在伯特兰德价格博弈模型中,两寡头生产有一定差别的产品。产品差别指在品牌、质量和包装等方面有所不同的同类产品,有很强的替代性,但又不是完全可替代。最后,仍强调两个厂商是同时决策的。假设厂商1生产产品1,厂商2生产产品2。
产品价格:P1、P2分别为厂商1、厂商2的产品价格;
潜在市场规模:a1、a2分别为产品1、产品2的潜在市场规模;
生产成本:假设两个厂商无固定成本,边际生产成本分别为c1和c2;
价格弹性:b1、b2为产品1、产品2的价格弹性;
产品的替代系数:d1、d2为两个产品的替代系数。
根据上述参数设置,我们得到了以下的模型:
假设当厂商1和厂商2价格分别为P1和 P2时,各自的需求函数为:
q 1 = q 1 ( P 1 , P 2 ) = a 1 − b 1 P 1 + d 1 P 2 q_1=q_1 (P_1,P_2 )=a_1-b_1 P_1+d_1 P_2 q1=q1(P1,P2)=a1−b1P1+d1P2
q 2 = q 2 ( P 1 , P 2 ) = a 2 − b 2 P 2 + d 2 P 1 q_2=q_2 (P_1,P_2 )=a_2-b_2 P_2+d_2 P_1 q2=q2(P1,P2)=a2−b2P2+d2P1
在该博弈中,两博弈方的决策变量为产品价格,因此各自的策略空间为 s 1 = [ 0 , P 1 m a x ] s_1=[0,P_{1max}] s1=[0,P1max]和 s 2 = [ 0 , P 2 m a x ] s_2=[0,P_{2max}] s2=[0,P2max],其中 P 1 m a x P_{1max} P1max和 P 2 m a x P_{2max} P2max是厂商1和厂商2还能卖出产品的最高价格。两博弈方的得益是各自的利润,即销售收益减去成本,它们都是双方价格的函数为:
π 1 = π 1 ( P 1 , P 2 ) = P 1 q 1 − c 1 q 1 = ( P 1 − c 1 ) ( a 1 − b 1 P 1 + d 1 P 2 ) π_1=π_1 (P_1,P_2 )=P_1 q_1-c_1 q_1=(P_1-c_1)(a_1-b_1 P_1+d_1 P_2) π1=π1(P1,P2)=P1q1−c1q1=(P1−c1)(a1−b1P1+d1P2)
π 2 = π 2 ( P 1 , P 2 ) = P 2 q 2 − c 2 q 2 = ( P 2 − c 2 ) ( a 2 − b 2 P 2 + d 2 P 1 ) π_2=π_2 (P_1,P_2 )=P_2 q_2-c_2 q_2=(P_2-c_2)(a_2-b_2 P_2+d_2 P_1) π2=π2(P1,P2)=P2q2−c2q2=(P2−c2)(a2−b2P2+d2P1)
1.2 模型求解
我们用反应函数法分析这个博弈。对上述得益函数求偏导,并且偏导为0时存在最大值:
∂ π 1 ∂ P 1 = − 2 b 1 P 1 + c 1 b 1 + a 1 + d 1 P 2 \frac{∂π_1}{∂P_1}=-2b_1 P_1+c_1 b_1+a_1+d_1 P_2 ∂P1∂π1=−2b1P1+c1b1+a1+d1P2
∂ π 2 ∂ P 2 = − 2 b 2 P 2 + c 2 b 2 + a 2 + d 2 P 1 \frac{∂π_2}{∂P_2}=-2b_2 P_2+c_2 b_2+a_2+d_2 P_1 ∂P2∂π2=−2b2P2+c2b2+a2+d2P1
令 ∂ π 1 ∂ P 1 = 0 \frac{∂π_1}{∂P_1}=0 ∂P1∂π1=0, ∂ π 2 ∂ P 2 = 0 \frac{∂π_2}{∂P_2}=0 ∂P2∂π2=0得到两个厂商的反应函数为:
P 1 = R 1 ( P 2 ) = 1 2 b 1 ( c 1 b 1 + a 1 + d 1 P 2 ) P_1=R_1 (P_2 )=\frac{1}{2b_1} (c_1 b_1+a_1+d_1 P_2) P1=R1(P2)=2b11(c1b1+a1+d1P2)
P 2 = R 2 ( P 1 ) = 1 2 b 2 ( c 2 b 2 + a 2 + d 2 P 1 ) P_2=R_2 (P_1 )=\frac{1}{2b_2}(c_2 b_2+a_2+d_2 P_1) P2=R2(P1)=2b21(c2b2+a2+d2P1)
回顾一下我们在反应函数文章中的介绍,该博弈的纳什均衡是两条反应函数对应图像的交点 ( P 1 ∗ , P 2 ∗ ) (P_1^*,P_2^*) (P1∗,P2∗),并且这个交点需要满足:
P 1 ∗ = 1 2 b 1 ( c 1 b 1 + a 1 + d 1 P 2 ∗ ) P_1^*=\frac{1}{2b_1} (c_1 b_1+a_1+d_1 P_2^*) P1∗=2b11(c1b1+a1+d1P2∗)
P 2 ∗ = 1 2 b 2 ( c 2 b 2 + a 2 + d 2 P 1 ∗ ) P_2^*=\frac{1}{2b_2}(c_2 b_2+a_2+d_2 P_1^*) P2∗=2b21(c2b2+a2+d2P1∗)
解上述的二元一次方程组,得:
P 1 ∗ = d 1 ( a 2 + b 2 c 2 ) + 2 b 2 ( a 1 + c 1 b 1 ) 4 b 1 b 2 − d 1 d 2 P_1^*=\frac{d_1 (a_2+b_2 c_2 )+2b_2 (a_1+c_1 b_1)}{4b_1 b_2-d_1 d_2} P1∗=4b1b2−d1d2d1(a2+b2c2)+2b2(a1+c1b1)
P 2 ∗ = d 2 ( a 1 + c 1 b 1 ) + 2 b 1 ( a 2 + b 2 c 2 ) 4 b 1 b 2 − d 1 d 2 P_2^*=\frac{d_2 (a_1+c_1 b_1 )+2b_1 (a_2+b_2 c_2)}{4b_1 b_2-d_1 d_2} P2∗=4b1b2−d1d2d2(a1+c1b1)+2b1(a2+b2c2)
则 ( P 1 ∗ , P 2 ∗ ) (P_1^*,P_2^*) (P1∗,P2∗)为该博弈的唯一纳什均衡。将 P 1 ∗ 、 P 2 ∗ P_1^*、P_2^* P1∗、P2∗代入得益函数中,可以求得两个厂商的均衡得益,这里我就不再赘述了,有兴趣的读者可以自行代入计算。
谢老师的书中,对该模型的各参数做了具体假设: a 1 = a 2 = 28 , b 1 = b 2 = 1 , d 1 = d 2 = 0.5 , c 1 = c 2 = 2 a_1=a_2=28,b_1=b_2=1,d_1=d_2=0.5,c_1=c_2=2 a1=a2=28,b1=b2=1,d1=d2=0.5,c1=c2=2,则可以解得 P 1 ∗ = P 2 ∗ = 20 , u 1 ∗ = u 2 ∗ = 324 P_1^*=P_2^*=20,u_1^*=u_2^*=324 P1∗=P2∗=20,u1∗=u2∗=324。
2 总结
更一般的伯特兰德模型可以有n个寡头,产品也可以是无差别的。产品无差别时,可以考虑消费者对价格的敏感性问题。因为如果所有消费者对价格都非常敏感,则生产无差别产品的厂商中价格高的一方完全卖不出去,价格差别不可能存在。多寡头伯特兰德模型的分析是两寡头模型的简单推广,只需求出每个厂商对其他各个厂商价格的反应函数,解出它们的交点即可。
相关文章:
博弈论——伯特兰德寡头模型(Bertrand Model)
伯特兰德寡头模型(Bertrand Model) 0 引言 在前面几篇文章中,我们介绍了古诺模型(Cournot duopoly model)和斯塔克尔伯格模型(Stackelberg model) 博弈论——连续产量古诺模型(Cournot duopoly model) 博弈论——斯塔克尔伯格模型(Stackelberg model) 这两个模型…...
第一百六十回 SliverPadding组件
文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了SliverAppBar组件相关的内容,本章回中将介绍 SliverPadding组件.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在本章回中介绍的SliverPadding组件类似Pading组件,它主要用…...

Mapfree智驾方案,怎样实现成本可控?
整理|睿思 编辑|祥威 编者注:本文是HiEV出品的系列直播「智驾地图之变」第二期问答环节内容整理。 元戎启行副总裁刘轩与连线嘉宾奥维咨询董事合伙人张君毅、北汽研究总院智能网联中心专业总师林大洋、主持嘉宾周琳展开深度交流,并进行了答疑。 本期元…...

javascript: Bubble Sort
// Sorting Algorithms int JavaScript /** * file Sort.js * 1. Bubble Sort冒泡排序法 */ function BubbleSort(arry, nszie) {var i, j, temp;var swapped;for (i 0; i < nszie - 1; i){swapped false;for (j 0; j < nszie - i - 1; j){if (arry[j] > arry[j …...
DM数据库根据rowid删除重复的记录
oracle中rowid的用法-CSDN博客 delete from stu a where rowid not in (select max(b.rowid) from stu b where a.nob.no and a.name b.name and a.sex b.sex); //这里max使用min也可以...

【AI视野·今日Robot 机器人论文速览 第四十期】Mon, 25 Sep 2023
AI视野今日CS.Robotics 机器人学论文速览 Mon, 25 Sep 2023 Totally 36 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚CloudGripper, 一套云化的机器抓取人数据采集系统,包含了32个机械臂的集群。(from KTH Royal Institute of Te…...

HashMap底层源码,数据结构
HashMap的底层结构在jdk1.7中由数组链表实现,在jdk1.8中由数组链表红黑树实现,以数组链表的结构为例。 JDK1.8之前Put方法: JDK1.8之后Put方法: HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,…...

计算机等级考试—信息安全三级真题八
一、单选题...

番外6:下载+安装+配置Linux
#########配置Linux---后续 step08: 点击编辑虚拟机设置,选择下载好的映像文件.iso进行挂载; step09: 点击编辑虚拟机选项,选择UEFI启动模式并点击确定; step10: 点击开启虚拟机,选择Install rhel ; 备注&…...
javascript验证表单字段有效性,使用checkValidity()方法和他的属性
<script type"text/javascript">function LoginCheckValidity(){var txt"";var rmb1document.getElementById("rmb1");if(rmb1.checkValidity()false){if(rmb1.validitionMessageundefined){txt"输入金额有误,金额10-200之间";}…...

pdf怎么调整大小kb?pdf文件过大这样压缩
在日常的工作和生活中,我们常常会遇到需要调整PDF文件大小的问题。有时候,我们需要将大型的PDF文件上传到某些平台,但平台的限制让我们不得不压缩文件的大小。那么,如何有效地调整PDF文件的大小呢? 一、使用嗨格式压缩…...
vue3中的watch
在Vue3中,watch中的参数可以分为两部分,即要监听的响应式数据以及回调函数。 语法格式如下: watch(要监听的响应式数据, 回调函数)除了以上的两个还有其他的参数 immediate:是否在初始化时立即执行一次回调函数,默认…...

开绕组电机零序Bakc EMF-based无感控制以及正交锁相环inverse Park-based
前言 最近看论文遇到了基于反Park变换的锁相环,用于从开绕组永磁同步电机零序电压信号中提取转子速度与位置信息,实现无感控制。在此记录 基于零序Back EMF的转子估算 开绕组电机的零序反电动势 e 0 − 3 ω e ψ 0 s i n 3 θ e e_0-3\omega_e\psi_…...

番外5:下载+安装+配置Linux
任务前期工作: 01. 电脑已安装好VMware Workstation软件; 02.提前下载好Rhel-8.iso映像文件(文件较大一般在9.4GB,建议采用迅雷下载),本人使用的以下版本(地址ed2k://|file|rhel-8.4-x86_64-dvd…...

新手--安装好Quartus II13.0(带modelsim集成包)并用Quartus II搭建一个工程
前言 今天是国庆节,我们正式来学习Quartus II13.0软件的安装与使用。学习verilog与学习C语言都是学习一门语言,那么学习一门语言,光看理论不敲代码绝对是学习不好的。要用verilog语言敲代码,就要像C语言那样搭建起语言的编译环境&…...
python监控软件内存、cpu和GDI
目录 前言代码 前言 最近做软件测试需要监控软件内存、cpu和GDI对象数,用psutil库可以很方便的实现监控内存和CPU,但是GDI好像还不行,最后来的win32api来调用的Windows API接口来实现GDI监控的,在此做个记录。 代码 import psu…...

wordpress搭建自己的博客详细过程以及踩坑
WordPress作为一款开源的内容管理系统(CMS),具有诸多优势。首先,它的易用性使得即使对于没有编程经验的用户来说也能轻松上手,通过直观的用户界面和友好的管理工具,用户可以方便地创建、编辑和发布内容。其…...
在jupyter中更改、增加内核
今天在配置llama2的环境,在学院实验室的服务器上面用jupyter,怎么都不会增加内核。今天说一下怎么把创建好的conda环境增加到jupyter列表中。 例如我有个环境叫做llama2,很简单只要两步。 第一步先激活conda环境。 conda activate llama2第…...

Redis代码实践总结(二)
使用 CLI 探索 Redis 外部程序使用 TCP 套接字和 Redis 特定协议与 Redis 进行通信。该协议在不同编程语言的 Redis 客户端库中实现。然而,为了使使用 Redis 进行黑客攻击变得更简单,Redis 提供了一个命令行实用程序,可用于向 Redis 发送命令…...

读取一张图片各种颜色占比
提问之初 <small> 读取一张图片各种颜色占比 /storage/emulated/0/Pictures/Screenshots/Screenshot_20230725_195440.jpg有趣优雅热情沉着的代码与注释/每行每行 from PIL import Image # 导入PIL大法,这是处理图像的必备神器# 图片路径,此处为…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...

手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...