【纳什均衡,单目标规划,条件概率为做出最正确的决定而生】

为做出最正确的决定而生

第一章 python之纳什均衡

现实映射关系:
两个值p1,p2根据函数变换成p1’,p2’的类型
在这里插入图片描述

循环条件:
像这种类型的函数变换就只需要看max(abs(p1- p1’),abs(p2-p2’))<0.01就可判断其是否趋于稳定
循环变量,p1=p1’
结果图
![在这里插入图片描述](https://img-blog.csdnimg.cn/f31942d2c4524737a97d819c7435e83e.png

第二种类型 多目标规划与单目标规划

现实映射关系:
根据p1值得到opt1’值的,
在这里插入图片描述

循环条件:
就可判断其是否稳定

则需要明确p1的定义域,
循环变量,p1=p1+1,要明确其定义域,
结果图
在这里插入图片描述

第三种类型 条件概率遍历数据

条件概率最重要的变量是其样本空间
已知条件是缩小样本空间的变量
在这里插入图片描述

画图代码

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10, 6))

# 绘制点
for point in what_a_revenue:
    plt.scatter(point[0], point[1], color="black")

# 绘制连接线
for i in range(len(what_a_revenue) - 1):
    start = what_a_revenue[i]
    end = what_a_revenue[i + 1]
    plt.plot([start[0], end[0]], [start[1], end[1]], color="black")

plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
plt.xlabel('A公司,/元', fontsize=16)
plt.ylabel('B公司,/元', fontsize=16)
plt.title("A、B公司,策略的博弈曲线", fontsize=18)
print(
    "加入我的qq群,大家一起讨论管理、规划类问题的算法\n群里我会不定期上传一些我自己和其他大神的算法源码\n群号为:808756207")
# 显示图像
plt.show()
---




## 第一种类型完整代码
```c

# 定义每个商品的成本
cost = 200
# A 公司产品的销量函数和收益函数
def q1(p1, p2):
    return round(600 * (1 - p1 * 1.7 / (p1 + p2)))
def revenue_A(p1, p2):
    return (p1 - cost) * q1(p1, p2)
# B 公司产品的销量函数和收益函数
def q2(p1, p2):
    return round(400 * (1 - p2 * 1.4 / (p1 + p2)))
def revenue_B(p1, p2):
    return (p2 - cost) * q2(p1, p2)
# 寻找 A 公司的最优响应函数
def best_response_A(p1, p2, opt_revenue=float('-inf')):
    opt_p1 = p1
    for p1_ in range(cost, 1000):
        rev_A = revenue_A(p1_, p2)
        if rev_A > opt_revenue and rev_A != 0:
            opt_revenue = rev_A
            opt_p1 = p1_
            break
    return opt_p1, opt_revenue
# 寻找 B 公司的最优响应函数
def best_response_B(p2, p1, opt_revenue=float('-inf')):
    opt_p2 = p2
    for p2_ in range(cost, 1000):
        rev_B = revenue_B(p1, p2_)
        if rev_B > opt_revenue and rev_B != 0:
            opt_revenue = rev_B
            opt_p2 = p2_
            break
    return opt_p2, opt_revenue
# 执行迭代过程,目标是寻找 A 公司和 B 公司的纳什均衡价格
p1 = 200  # 初始价格
p2 = 200
opt_revenue_p1 = 0  # 初始收益
opt_revenue_p2 = 0
delta = 1  # 价格变化量,如果 delta 的值比某个小数值(如 0.01)还要小,说明我们已经找到了一个稳定的纳什均衡点
count = 0
what_a_game = []  # 用来存储每次博弈的价格
what_a_revenue = []  # 用来存储每次博弈的价格

while delta > 0.5:
    what_a_game.append([p1, p2])

    count += 1
    print(f"循环了{count}次")

    p1_new, opt_revenue_1 = best_response_A(p1, p2, opt_revenue_p1)
    p2_new, opt_revenue_2 = best_response_B(p2, p1_new, opt_revenue_p2)
    delta = max(abs(p1_new - p1), abs(p2_new - p2))
    p1 = p1_new
    p2 = p2_new
    opt_revenue_p1 = opt_revenue_1
    opt_revenue_p2 = opt_revenue_2
    print(f"p1={p1}")
    print(f"p2={p2}")
    print(f"opt_revenue_p1={opt_revenue_p1}")
    print(f"opt_revenue_p2={opt_revenue_p2}")
# 输出结果
print("A 公司的最优定价为 %d 元" % p1)
print("B 公司的最优定价为 %d 元" % p2)

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10, 6))

# 绘制点
for point in what_a_game:
    plt.scatter(point[0], point[1], color="black")

# 绘制连接线
for i in range(len(what_a_game) - 1):
    start = what_a_game[i]
    end = what_a_game[i + 1]
    plt.plot([start[0], end[0]], [start[1], end[1]], color="black")

plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
plt.xlabel('A公司定价/元', fontsize=16)
plt.ylabel('B公司定价/元', fontsize=16)
plt.title("A、B公司定价策略的博弈曲线", fontsize=18)

# 显示图像
plt.show()
---
第二种类型完整代码
风险与利润的关系代码:
clc,clear
t=0;
hold on
while t<0.05
    D=[-0.05,-0.27,-0.19,-0.185,-0.185];
    N=[zeros(4,1),diag([0.025,0.015,0.055,0.026])];
    F=t*ones(4,1);
    Neq=[1,1.01,1.02,1.045,1.065];
    Feq=1;
    LF=zeros(5,1);
    [X,Q]=linprog(D,N,F,Neq,Feq,LF);
    Q=-Q;
    plot(t,Q,'*r');
    t=t+0.00025;
  end
  xlabel('t'),ylabel('Q')
  axis([0 0.035 0 0.3]);
  grid on
---

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值