通过案例研究二项分布和泊松分布之间关系(2)

通过案例研究二项分布和泊松分布之间关系

    • 2. 汽车出事故的概率p与保险公司盈利W之间的关系
    • 3.通过遗传算法多次迭代计算控制p为多少时公司盈利最大
      • (1) 计算过程
      • (2) 结果及分析(计算过程详见附录二程序)
    • 4.改变思路求解固定p为0.01时,保险费用如何设置公司可获得最大利润
      • (1)计算过程
      • (2) 结果及分析(计算过程详见附录三程序):
  • 结论分析
    • 附录二
    • 附录三
    • 附录四

书接上回

2. 汽车出事故的概率p与保险公司盈利W之间的关系

运输公司共有n=600辆汽车参加保险,每辆车的保险费用为C=1000,每辆车的赔偿金额为L=10000,在一年内每辆汽车出事故的概率为p,且每辆汽车之间是否出事故相互独立, 因此一年内出事故的汽车数量X服从二项分布:X∼b(n,p),其中n=600,p=0.01。
由于保险公司的总盈利为 n ∗ C − X ∗ L , n*C-X*L, nCXL,
我们利用发生事故车辆的期望值,即E(X)=n×p,以此作为预期的事故数量来简化总盈利的计算,故简化后的保险公司总盈利为
W = n × C − n × p × L , W=n×C-n×p×L, W=n×Cn×p×L,
同时上式可以作为W和p之间的关系表达式。
根据上式可以反推出p的表达式
p = ( n × C − W ) / ( n × L ) , p=(n×C-W)/(n×L), p=(n×CW)/(n×L),
代入W=200000,可以求得当盈利200000时p为多少,作为盈利200000的预期事故发生概率的值。
下面将根据上述推导结果,计算并绘制W和p之间的关系图像,如下图II所示.
图II:公司盈利W和每辆车出事故概率p的关系
根据图II所示,公司的盈利W和每辆车出事故的概率p之间的关系是线性递减的。当W=200000时,对应预期的p=0.0067,从而给出了二者的关系,更有利于分析。

3.通过遗传算法多次迭代计算控制p为多少时公司盈利最大

(1) 计算过程

⮚ 适应度函数:利用泊松分布计算出事故数量不超过 k m a x ( k m a x = ( n × C − W ) / L ) kmax(kmax=(n×C-W)/L) kmax(kmax=(n×CW)/L)的累计概率(即未盈利的概率),然后用其补集得到盈利的概率。
⮚ 种群和选择:创建一个初始种群,其中的概率值在[0,0.1]之间,从当前种群中依据适应度选择较高的个体作为父代。
⮚交叉和变异:实现了简单的单点交叉和基于概率的变异。
交叉:基于父代生成两个子代,通过加权平均的方式创建新的个体。
变异:在一定概率下对个体产生小的随机扰动,增强多样性。
⮚迭代:运行遗传算法,通过多次迭代改进种群,寻找最佳事故概率
⮚可视化和输出:输出最终的最佳事故概率及其对应的最大盈利概率,并绘制盈利概率随事故概率变化的图形。

(2) 结果及分析(计算过程详见附录二程序)

图III:事故概率与盈利概率的关系(限制p 小于等于 0.1)
如果事故概率可控制,对于保险公司盈利最大的事故概率为p=0.0699。
由可视化的输出可以看出,当我们固定概率区间为[0,0.1]时,这一限制基于现实生活中事故发生的概率通常不会太高。限制概率有助于保险公司设计出更具有可用性的保险产品,同时控制风险并保持可持续发展。在实际应用中,概率不仅仅是一个理论概念,而是用于制定实际决策的工具。通过掌握如何计算和应用概率,我们能更好地理解和管理不同情况下的风险。

4.改变思路求解固定p为0.01时,保险费用如何设置公司可获得最大利润

保持原有条件p和L不变,找到通过遗传算法得到的最佳的每辆车的保险费用。

(1)计算过程

⮚适应度函数:
我们确保计算出的利润高于p时返回该利润,否则返回负无穷,使得这些不符合盈利条件的个体在选择中被排除。
⮚初始化种群:
在500到5000元的范围内随机产生初始保险费用。生成初始的保险费用种群。
⮚选择:
根据适应度选择具有较高适应度的保险费用个体作为“父代”进行交叉和变异通过计算适应度的概率分布,根据适应度高的个体赋予更高的选择概率。
⮚交叉和变异:
基于父代生成两个新个体(子代)采用加权平均方式,产生新的保险费用。通过随机扰动操作对个体进行修改,增加种群的多样性,确保算法不至于陷入局部最优解生成新个体并保证其保险费用在合理的范围内。
⮚输出结果:
在迭代结束后,输出最佳保险费用C和最大利润,并将两者之间的关系可视化。将利润函数的变化与最佳保险费用进行对比,用图形更直观地展示结果。通过比较当前最佳个体与上一代最佳个体,并在条件下确定是否终止外层循环

(2) 结果及分析(计算过程详见附录三程序):

图IV:保险费用与利润的关系
最佳保险费用C=4183.30元。
最大利润: 1909980.94元。
根据图像及迭代输出的结果进行分析,本次迭代进行了200×1000次的充分迭代,最终输出的结果中最佳保险费用稳定在4683.54元附近,最终的最大利润稳定在2210126.09元附近,对保险公司保险费用的设定上提供了一定的参考价值。

结论分析

本实验通过具体实际的案例研究了二项分布和泊松分布之间关系,并列讨论了案例中保险公司最大盈利W与汽车出事故的概率p之间的关系,具体结论如下:
二项分布是描述n重伯努利试验中某事件成功的次数,而泊松分布是描述在固定的时间或空间内,某事件发生的次数。根据泊松定理可知,当二项分布中的参数n很大,p很小的时候,且λ=n×p保持为常数时,二项分布可以由泊松分布近似,本实验结合具体案例从定量的角度再次印证了泊松定理的正确性。
本实验将二项分布和泊松分布进行对比,并且对问题中的保险公司一年赚钱不少于200000元的概率进行了求解,并展开对保险公司保险费用的定价和保险公司盈利最大值的探讨,充分分析了两个分布的关系,并对实际的生产进行了探究。

附录二

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson
from tqdm import tqdm  # 导入 tqdm 库

# 定义遗传算法参数
POPULATION_SIZE = 100  # 种群大小
GENERATIONS = 100  # 迭代代数
MUTATION_RATE = 0.1  # 变异率
CONVERGENCE_THRESHOLD = 1e-5  # 收敛阈值

# 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 保险公司参数
n = 600  # 汽车数量
C = 1000  # 每辆车的保险费
L = 100000  # 每辆车的赔偿金额
P = 200000  # 保险公司希望盈利不少于的金额

def fitness_function(p):
    """计算给定事故概率 p 的适应度"""
    k_max = (n * C - P) // L
    prob = 1 - poisson.cdf(k_max, n * p)  # 计算盈利概率
    return prob

def create_population(size):
    """创建初始种群(生成的概率范围在0到0.1之间)"""
    return np.random.rand(size) * 0.1  # 确保范围在 [0, 0.1] 之间

def select_parents(population, fitness_scores):
    """选择适应度较高的父代"""
    probabilities = fitness_scores / fitness_scores.sum()  # 适应度比例
    idx = np.random.choice(np.arange(len(population)), size=2, p=probabilities)
    return population[idx]

def crossover(parents):
    """进行单点交叉"""
    point = np.random.rand()  # 生成交叉点
    child1 = parents[0] * point + parents[1] * (1 - point)
    child2 = parents[1] * point + parents[0] * (1 - point)
    return np.clip([child1, child2], 0, 0.1)  # 保证子代在 [0, 0.1] 之间

def mutate(individual):
    """进行变异操作"""
    if np.random.rand() < MUTATION_RATE:
        return np.clip(individual + np.random.normal(0, 0.01), 0, 0.1)  # 变异范围控制在 [0, 0.1]
    return individual

# 多次迭代直到得到稳定的最佳事故概率
stable_best_prob = None
converged = False

for iteration in tqdm(range(100), desc="Outer Iterations", unit="iteration"):
    population = create_population(POPULATION_SIZE)

    for generation in range(GENERATIONS):
        # 向量化计算所有个体的适应度
        fitness_scores = np.array([fitness_function(p) for p in population])
        new_population = []

        for _ in range(POPULATION_SIZE // 2):
            parents = select_parents(population, fitness_scores)  # 选择父代
            children = crossover(parents)  # 交叉
            new_population.extend(map(mutate, children))  # 变异

        population = np.array(new_population)

    # 找到当前最佳个体
    best_p = population[np.argmax(fitness_scores)]

    # 检查稳定性
    if stable_best_prob is None:
        stable_best_prob = best_p
    elif abs(best_p - stable_best_prob) < CONVERGENCE_THRESHOLD:
        converged = True
    stable_best_prob = best_p  # 更新稳定值

max_profit_probability = fitness_function(stable_best_prob)

print(f"最佳事故概率 p: {stable_best_prob:.4f}")
print(f"最大盈利概率: {max_profit_probability:.4f}")

# 可视化结果
plt.figure(figsize=(16, 9))  # 设置输出图像画幅为16:9
x = np.linspace(0, 0.1, 100)
y = [fitness_function(p) for p in x]
plt.plot(x, y, label='盈利概率')
plt.scatter(stable_best_prob, max_profit_probability, color='red', label='最佳解')
plt.title('事故概率与盈利概率的关系(限制 p ≤ 0.1)',fontsize=16)
plt.xlabel('事故概率 p',fontsize=14)
plt.ylabel('盈利概率',fontsize=14)
plt.legend()
plt.grid()
plt.show()

附录三

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson
from tqdm import tqdm  # 导入 tqdm 库

# 定义遗传算法参数
POPULATION_SIZE = 100  # 种群大小
INNER_GENERATIONS = 200  # 内层迭代代数
OUTER_GENERATIONS = 1000 # 外层迭代代数
MUTATION_RATE = 0.1  # 变异率
CONVERGENCE_THRESHOLD = 1e-5  # 收敛阈值

# 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 保险公司参数
n = 600  # 汽车数量
p = 0.01  # 每辆车出事故的概率
L = 100000  # 每辆车的赔偿金额
P = 200000  # 保险公司希望盈利不少于的金额

def fitness_function(C):
    """计算给定保险费用 C 的适应度"""
    k_expected = n * p  # 预期出事故的数量
    profit = n * C - k_expected * L  # 利润计算

    # 使得目标是在最大化利润的同时,满足盈利条件
    if profit >= P:
        return profit  # 返回利润
    else:
        return 0  # 如果不满足条件则返回0,表示适应度为0

def create_population(size):
    """创建初始种群(生成的保险费用范围在500到5000之间)"""
    return np.random.uniform(500, 5000, size)  # 保险费用在500到5000元之间

def select_parents(population, fitness_scores):
    """选择适应度较高的父代"""
    probabilities = fitness_scores / fitness_scores.sum()  # 适应度比例
    idx = np.random.choice(np.arange(len(population)), size=2, p=probabilities)
    return population[idx]

def crossover(parents):
    """进行单点交叉"""
    point = np.random.rand()  # 生成交叉点
    child1 = parents[0] * point + parents[1] * (1 - point)
    child2 = parents[1] * point + parents[0] * (1 - point)
    return np.clip([child1, child2], 500, 5000)  # 保证子代在[500, 5000]之间

def mutate(individual):
    """进行变异操作"""
    if np.random.rand() < MUTATION_RATE:
        return np.clip(individual + np.random.normal(0, 100), 500, 5000)  # 变异范围控制在 [500, 5000]
    return individual

# 多次迭代直到得到稳定的最佳保险费用
stable_best_prob = None
converged = False

for outer_iteration in tqdm(range(OUTER_GENERATIONS), desc="Outer Iterations", unit="iteration"):
    population = create_population(POPULATION_SIZE)

    for inner_generation in range(INNER_GENERATIONS):
        fitness_scores = np.array([fitness_function(c) for c in population])  # 计算适应度得分
        new_population = []

        for _ in range(POPULATION_SIZE // 2):
            parents = select_parents(population, fitness_scores)  # 选择父代
            children = crossover(parents)  # 交叉
            new_population.extend(map(mutate, children))  # 变异

        population = np.array(new_population)

    # 找到当前最佳个体
    best_p = population[np.argmax(fitness_scores)]

    # 检查稳定性
    if stable_best_prob is None:
        stable_best_prob = best_p
    elif abs(best_p - stable_best_prob) < CONVERGENCE_THRESHOLD:
        converged = True
    stable_best_prob = best_p  # 更新稳定值

max_profit_probability = fitness_function(stable_best_prob)

print(f"最佳保险费用 C: {stable_best_prob:.2f} 元")
print(f"最大利润: {max_profit_probability:.2f} 元")

# 可视化结果
plt.figure(figsize=(16, 9)) 
x = np.linspace(500, 5000, 100)
y = [fitness_function(c) for c in x]
plt.plot(x, y, label='利润函数')
plt.scatter(stable_best_prob, max_profit_probability, color='red', label='最佳 C')
plt.title('保险费用与利润的关系',fontsize=16)
plt.xlabel('保险费用 C (元)',fontsize=14)
plt.ylabel('利润 (元)',fontsize=14)
plt.legend()
plt.grid()
plt.show()

附录四

import numpy as np
import matplotlib.pyplot as plt

# 保险公司参数
n = 600  # 汽车数量
C = 1000  # 每辆车的保险费
L = 100000  # 每辆车的赔偿金额

# 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 定义出事故的概率范围
p_values = np.linspace(0, 0.1, 100)  # 从0到0.1取100个点
W_values = n * (C - p_values * L)  # 计算对应的盈利

# 计算当盈利为200000时的p值
target_profit = 200000
p_calculated = (n * C - target_profit) / (n * L)  # 计算概率p
if p_calculated < 0 or p_calculated > 0.1:
    print("计算结果不在合理范围内。")
else:
    print(f"当公司盈利为 {target_profit} 元时,事故概率 p = {p_calculated:.4f}")

# 绘制盈利与概率的关系图
plt.figure(figsize=(10, 6))
plt.plot(p_values, W_values, label='盈利 W', color='blue')
plt.axhline(0, color='red', linestyle='--', label='零盈利线')  # 添加零盈利线
plt.axvline(p_calculated, color='purple', linestyle='--', label=f'p = {p_calculated:.4f}')  # 紫色虚线
plt.scatter(p_calculated, target_profit, color='red', label='盈利 = 200000')  # 红色点

plt.title('公司盈利 W 与每辆车出事故概率 p 的关系',fontsize=16)
plt.xlabel('每辆车出事故的概率 p',fontsize=14)
plt.ylabel('公司盈利 W (元)',fontsize=14)
plt.legend()
plt.grid()
plt.xlim(0, 0.1)  # 限制 x 轴范围
plt.ylim(-50000, 600000)  # 限制 y 轴范围以进行良好查看
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/960559.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql 学习5 mysql图形化界面DataGrip下载 安装 使用

一、下载和安装 下载&#xff1a; 其他版本 - DataGrip PS&#xff1a;安装目录最好不要有中文。 C:\Program Files\JetBrains\DataGrip 2023.3.4 二、 夸克网盘分享 当前电脑是下载到 &#xff1a;D:\Ctool\mysql\datagrip2023_3_4\datagrip2024\jetbra-datagrip\scripts …

2025.1.21——八、[HarekazeCTF2019]Avatar Uploader 2(未完成) 代码审计|文件上传

题目来源&#xff1a;buuctf [HarekazeCTF2019]Avatar Uploader 2 一、打开靶机&#xff0c;整理信息 跟Avatar Uploader 1 题目长得一样&#xff0c;先上传相同文件看看情况&#xff0c;另外这道题还有源码&#xff0c;可以看看 二、解题思路 step 1&#xff1a;上传同类…

使用EVE-NG-锐捷实现OSPF

一、OSPF基础知识 Open shortest Path First(OSPF)开放式最短路径优先协议 1.OSPF的关系状态 (1)邻居关系(TWO-WAY) 只发送hello包不发送LSA包(链路状态通告包) (2)邻接关系(FULL) OSPF设备与设备之间相互建立OSPF关系&#xff0c;初始为邻居关系(TWO-WAY)状态&#xff0…

未来五年高速线缆市场有望翻3倍!AEC凭借传输距离优势占比将更高

未来五年高速线缆市场有望翻3倍&#xff01;AEC凭借传输距离优势占比将更高 高速铜缆凭借高带宽、高速等优势&#xff0c;有望成为数据中心连接的最优解。铜缆高速连接主要用于数据中心内部服务器与交换机之间、交换机... - 雪球 高速铜缆凭借高带宽、高速等优势&#xff0c;有…

zyNo.19

哈希&#xff08;md5&#xff09;绕过问题 本质上是弱类型问题的延申 题型 登录的哈希验证 $a ! $b Md5($a) md5($b) 解决办法Md5绕过 var_dump ("0e123456" "0e4456789"); //true 0e545993274517709034328855841020//true 参考资料0e开头的哈希…

怎么样把pdf转成图片模式(不能复制文字)

贵但好用的wps&#xff0c; 转换——转为图片型pdf —————————————————————————————————————————— 转换前&#xff1a; 转换后&#xff1a; 肉眼可见&#xff0c;模糊了&#xff0c;且不能复制。 其他免费办法&#xff0c;参考&…

飞致云开源社区月度动态报告(2025年1月)

自2023年6月起&#xff0c;中国领先的开源软件公司飞致云以月度为单位发布《飞致云开源社区月度动态报告》&#xff0c;旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况&#xff0c;以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源运营数据概览&…

hive:数据导入,数据导出,加载数据到Hive,复制表结构

hive不建议用insert,因为Hive是建立在Hadoop之上的数据仓库工具&#xff0c;主要用于批处理和大数据分析&#xff0c;而不是为OLTP&#xff08;在线事务处理&#xff09;操作设计的。INSERT操作会非常慢 数据导入 命令行界面:建一个文件 查询数据>>复制>>粘贴到新…

Dismissible组件的用法

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了GestureDetector Widget相关的内容,本章回中将介绍Dismissible Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的Dismissible是一个事件响应Widget,它和GestureDetector类似,不过它只…

【Redis】缓存+分布式锁

目录 缓存 Redis最主要的使用场景就是作为缓存 缓存的更新策略&#xff1a; 1.定期生成 2.实时生成 面试重点&#xff1a; 缓存预热&#xff08;Cache preheating&#xff09;&#xff1a; 缓存穿透&#xff08;Cache penetration&#xff09; 缓存雪崩 (Cache avalan…

开源物业管理系统赋能社区管理提升居民服务体验与满意度

内容概要 在现代物业管理中&#xff0c;开源物业管理系统的出现为社区管理带来了新的契机。这种系统的核心思想是通过开放、共享的方式&#xff0c;为各类物业管理需求提供灵活的解决方案。从基本的信息传递到复杂的投诉处理&#xff0c;开源物业管理系统能够根据不同社区的实…

动态规划DP 数字三角型模型 数字三角形

数字三角形 原题链接 AcWing 898.数字三角形 题目描述 给定一个如下图所示的数字三角形&#xff0c;从顶部出发&#xff0c;在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点&#xff0c;一直走到底层&#xff0c;要求找出一条路径&#xff0c;使路径上的数字…

全连接神经网络(前馈神经网络)

一、全连接神经网络介绍 在多层神经网络中&#xff0c; 第 N 层的每个神经元都分别与第 N-1 层的神经元相互连接。 1、神经元 这个神经元接收的输入信号为向量 &#xff0c; 向量为输入向量的组合权重&#xff0c; 为偏置项&#xff0c; 是一个标量。 神经元的作用是对输入向…

Linux:多线程[2] 线程控制

了解&#xff1a; Linux底层提供创建轻量级进程/进程的接口clone&#xff0c;通过选择是否共享资源创建。 vfork和fork都调用的clone进行实现&#xff0c;vfork和父进程共享地址空间-轻量级进程。 库函数pthread_create调用的也是底层的clone。 POSIX线程库 与线程有关的函数构…

DeepSeek崛起:中国AI新星如何撼动全球资本市场格局

引言 近期&#xff0c;中国人工智能实验室DeepSeek发布的两款开源模型——DeepSeek V3和DeepSeek R1——以其优异的性能和低廉的成本迅速爆火&#xff0c;引发了全球资本市场的震动&#xff0c;尤其对美国资本市场产生了显著影响。DeepSeek R1更是能够在数学、代码和推理任务上…

【物联网】ARM核常用指令(详解):数据传送、计算、位运算、比较、跳转、内存访问、CPSR/SPSR、流水线及伪指令

文章目录 指令格式&#xff08;重点&#xff09;1. 立即数2. 寄存器位移 一、数据传送指令1. MOV指令2. MVN指令3. LDR指令 二、数据计算指令1. ADD指令1. SUB指令1. MUL指令 三、位运算指令1. AND指令2. ORR指令3. EOR指令4. BIC指令 四、比较指令五、跳转指令1. B/BL指令2. l…

图像处理算法研究的程序框架

目录 1 程序框架简介 2 C#图像读取、显示、保存模块 3 C动态库图像算法模块 4 C#调用C动态库 5 演示Demo 5.1 开发环境 5.2 功能介绍 5.3 下载地址 参考 1 程序框架简介 一个图像处理算法研究的常用程序逻辑框架&#xff0c;如下图所示 在该框架中&#xff0c;将图像处…

病理AI领域基础模型及多实例学习方法的性能评估|顶刊精析·25-01-27

小罗碎碎念 这篇论文聚焦于组织学全切片图像分析&#xff0c;旨在探究多实例学习&#xff08;MIL&#xff09;与基础模型&#xff08;FMs&#xff09;结合的效果。 由于全切片图像&#xff08;WSI&#xff09;分析面临标注有限和模型直接处理困难等问题&#xff0c;MIL成为常用…

Tensor 基本操作2 理解 tensor.max 操作,沿着给定的 dim 是什么意思 | PyTorch 深度学习实战

前一篇文章&#xff0c;Tensor 基本操作1 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 目录 Tensor 基本操作torch.max默认指定维度 Tensor 基本操作 torch.max torch.max 实现降维运算&#xff0c;基于指定的 d…

以太网详解(六)OSI 七层模型

文章目录 OSI : Open System Interconnect&#xff08;Reference Model&#xff09;第七层&#xff1a;应用层&#xff08;Application&#xff09;第六层&#xff1a;表示层&#xff08;Presentation&#xff09;第五层&#xff1a;会话层&#xff08;Session&#xff09;第四…