【2024数模国赛赛题思路公开】国赛B题思路丨附可运行代码丨无偿自提

news2024/12/26 0:01:58

2024年国赛B题解题思路

问题 1: 抽样检测方案设计

【题目分析】

分析:

  • 目标是设计一个高效的抽样检测方案,在尽量少的样本数量下,确保在高信度水平下做出正确的接受或拒收决策。
  • 需要处理两个不同的信度要求,这对样本量的计算提出了挑战。

思路:

  • 贝叶斯抽样优化:可以使用贝叶斯方法结合贝叶斯抽样优化(Bayesian Optimization)来动态调整样本量,以达到所需的信度水平。通过将次品率建模为贝叶斯后验分布,可以逐步减少样本量,同时保证决策的可靠性。
  • 自适应序贯抽样:使用逐步抽样方法,根据初始样本的检测结果动态调整后续样本量,优化检测成本和时间。
  • 蒙特卡洛模拟:模拟大量的抽样检测场景,估计在不同样本量下达成信度要求的概率,找到最小样本量的解决方案。

【解题思路】

目标

设计一个抽样检测方案,以确定是否接受供应商提供的零配件,要求在尽可能少的检测次数下达到两个信度标准:

  1. 在 95% 信度下认定零配件次品率超过标称值(拒收)。
  2. 在 90% 信度下认定零配件次品率不超过标称值(接收)。

建模过程

  1. 定义变量和假设
    • 设次品率为p ,标称次品率为p0=0.10 (即10%)。
    • 抽样样本量为n ,检测出次品的数量为 x。
    • 我们需要对p  进行假设检验,并根据检验结果决定是否接受或拒收。

    2. 抽样检测模型

  • 根据二项分布,我们有
  • 检验假设:

原假设

备择假设(用于拒收的情况)

  • 使用正态近似来简化问题,当 n较大时, 可近似为正态分布:

  • 标准化后的检测统计量为:

3. 检验条件

  • 我们设定显著性水平α  对应的信度为1-α 。
  • 对于拒收情况,信度为 95%,则 α=0.05。
  • 计算临界值:,其中为标准正态分布的逆函数。
  • 对于接收情况,信度为 90%,则 α=0.10。

4. 计算样本量n

    • 拒收的决策规则:若 Z>Z0.05,则拒收。
    • 结合样本量的计算公式,我们得到:

  • 通过展开可以得到对 n 的不等式:

  • 为简化计算,可以迭代求解n。

5. 智能优化算法引入

  • 为了优化样本量 n,引入贝叶斯优化。贝叶斯优化是一种基于高斯过程(Gaussian Process)的黑箱优化方法,可以在不确定的环境下高效找到最优参数。
  • 步骤
    1. 定义目标函数:最小化检测成本 ,其中 c 为单次检测成本。
    2. 目标函数中包含信度约束,使用贝叶斯优化逐步逼近最优的 n。
    3. 通过模拟不同的样本量 n,评估在95%和90%信度下的检测成功率,并调整 n 使得目标函数最小。

6. 贝叶斯优化流程

    • 初始化样本集,随机选择 n0 的样本量进行检测,计算检测成本。
    • 使用高斯过程拟合当前的检测结果。
    • 通过高斯过程预测新的 n,并计算期望改进(Expected Improvement, EI)。
    • 选择使期望改进最大的 n 作为下一步的检测样本量。
    • 更新高斯过程模型,重复迭代,直到找到满足信度约束且成本最低的样本量n* 。

7. 最终方案

  • 通过贝叶斯优化得到的最优样本量 n*,将其应用于实际的检测流程中,以确保在满足信度要求的情况下尽可能减少检测次数。

公式总结

检测统计量:

临界值条件:Z>Z0.05拒收,Z<Z0.10接受

样本量不等式:

目标函数最小化:

Python参考代码】

# 定义检测成本函数
def detection_cost(n, c):
    return n * c

# 定义统计检验函数
def hypothesis_test(n, p0, alpha, x):
    # 计算标准化的Z统计量
    p_hat = x / n
    Z = (p_hat - p0) / np.sqrt(p0 * (1 - p0) / n)
    # 计算临界值
    Z_alpha = norm.ppf(1 - alpha)
    return Z, Z_alpha

# 定义目标函数,贝叶斯优化用
def objective(n):
    n = int(n[0])  # 样本量必须是整数
    c = 2  # 单次检测成本设为2元(可以根据具体情况调整)
    p0 = 0.10  # 标称次品率
    alpha_reject = 0.05  # 拒收信度为95%
    alpha_accept = 0.10  # 接收信度为90%

    # 模拟检测x个次品

    x = binom.rvs(n, p0)  # 假设次品率刚好为标称值

    # 进行拒收和接收检验
    Z_reject, Z_alpha_reject = hypothesis_test(n, p0, alpha_reject, x)
    Z_accept, Z_alpha_accept = hypothesis_test(n, p0, alpha_accept, x)

    # 判断是否满足信度条件
    if Z_reject > Z_alpha_reject and Z_accept < Z_alpha_accept:
        # 若同时满足拒收和接收信度要求,则计算成本
        cost = detection_cost(n, c)
    else:
        # 若不满足信度要求,则设为较高的惩罚成本
        cost = detection_cost(n, c) + 1000  # 惩罚项

    return cost

from skopt.space import Real, Integer

# 定义优化参数空间
param_space = [Integer(10, 1000, name='n')]

# 使用贝叶斯优化进行最小化
result = gp_minimize(objective, param_space, n_calls=50, random_state=0)

# 输出最优样本量和最小检测成本
print(f"Optimal sample size: {result.x[0]}")
print(f"Minimum detection cost: {result.fun}")
# 绘制优化过程的收敛情况
plot_convergence(result)
plt.title('Convergence Plot of Bayesian Optimization')
plt.xlabel('Number of Calls')
plt.ylabel('Objective Function Value (Cost)')
plt.grid(True)
plt.show()

# 绘制样本量与检测成本的关系
sample_sizes = np.arange(10, 1000, 10)
costs = [objective([n]) for n in sample_sizes]

plt.figure(figsize=(10, 6))
plt.plot(sample_sizes, costs, '-o', markersize=4, color='b', label='Detection Cost')
plt.axvline(result.x[0], color='r', linestyle='--', label=f'Optimal Sample Size: {result.x[0]}')
plt.title('Detection Cost vs. Sample Size')
plt.xlabel('Sample Size')
plt.ylabel('Detection Cost')
plt.legend()
plt.grid(True)
plt.show()


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决matplotlib中文乱码最简单方案

解决matplotlib中文乱码问题方案众多&#xff0c;我认为如下方案是最简单的一个。 1、从电脑中搜索simhei字体&#xff0c;如下示意图是mac检索结果&#xff0c;或者直接搜索simhei.ttf下载字体 拷贝到指定路径&#xff1a;/path/to/mex/simhei.ttf 2、matplotlib 加载字体 …

【Git】本地仓库操作

Part1 基础概念 git作用&#xff1a;管理代码版本&#xff0c;记录&#xff0c;切换&#xff0c;合并代码 git仓库&#xff1a;记录文件状态内容和历史记录的地方&#xff08;.git文件夹&#xff09; git的三个区域&#xff1a;1&#xff09;工作区&#xff1a;实际开发时的文…

针对STM32串口输出乱码错误问题

STM32在通过printf打印到串口时出现的文字乱码问题 使用printf文件中main.c文件&#xff0c;检查文件的编码方式是否正确&#xff0c;如下图所示&#xff0c;选择Chinese GD2编码方式&#xff1a;Edit--》Configuration 检查串口输出还是乱码错误 可以检测所建文件夹中main.c…

大道至简,大厂官网基本都走简洁化设计路线。

「大道至简」是一种设计理念&#xff0c;强调设计应该追求简洁、直观、易用&#xff0c;而不是过多的修饰和繁琐的细节。 对于大厂的官网来说&#xff0c;简洁化设计路线的选择可能有以下几个原因&#xff1a; 1. 更好的用户体验&#xff1a; 简洁的设计可以让用户更容易地理…

【Python报错已解决】`EOFError: Ran out of input`

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言&#xff1a;一、问题描述&#xff1a;1.1 报错示例&#xff1a;1.2 报错分析&#xff1a;1.3 解决思路&#xff…

LM Studio 本地部署大模型Qwen

本人运行环境win11 、11th Gen Intel Core™ i7-11800H 2.30GHZ、NVIDIA GeForce RTX 3060 Laptop GPU LMStudio 运行环境要求 What are the minimum hardware / software requirements? Apple Silicon Mac (M1/M2/M3) with macOS 13.6 or newerWindows / Linux PC with a…

【区块链 + 人才服务】链节区块链教学管理平台 | FISCO BCOS应用案例

当前&#xff0c;政策支持和行业需求为“区块链 教育”的发展提供了机遇。政策方面&#xff0c;教育部于 2020 年发布了《高等学 校区块链技术创新行动计划》&#xff0c;提出到 2025 年&#xff0c;在高校布局建设一批区块链技术创新基地&#xff0c;培养汇聚一批区块 链技术…

打卡第五十七天:prim与kruskal算法

题目 一、prim 本题是最小生成树的模板题。最小生成树 可以使用 prim算法 也可以使用 kruskal算法计算出来。 最小生成树是所有节点的最小连通子图&#xff0c; 即&#xff1a;以最小的成本&#xff08;边的权值&#xff09;将图中所有节点链接到一起。 图中有n个节点&…

从零到精通:用C++ STL string优化代码

目录 1:为什么要学习string类 2:标准库中的string类 2.1:string类(了解) 2.2:总结 3:string类的常用接口 3.1:string类对象的常见构造 3.1.1:代码1 3.1.2:代码2 3.2:string类对象的遍历操作 3.2.1:代码1(begin end) 3.2.2:代码2(rbegin rend) 3.3:string类对象的…

ESD防静电监控系统助力电子制造行业转型升级

在电子制造行业中&#xff0c;静电危害不容小觑。ESD 防静电监控系统的出现&#xff0c;为行业转型升级带来强大助力。电子元件对静电极为敏感&#xff0c;微小的静电放电都可能损坏元件&#xff0c;影响产品质量。ESD 防静电监控系统能够实时监测生产环境中的静电状况&#xf…

Python制作爱心跳动代码,这就是程序员的烂漫吗

最近有个剧挺火的 就是那个程序员的剧&#xff0c;叫什么温暖你来着 咳咳&#xff0c;剧我没怎么看&#xff0c;但是吧&#xff0c;里面有个爱心代码&#xff0c;最近可是蛮火的&#xff0c;今天就用Python来尝试一下吧 怎么说呢&#xff0c;用这个表白也可以的&#xff0c;万…

计算机网络(运输层)

运输层概述 概念 进程之间的通信 从通信和信息处理的角度看&#xff0c;运输层向它上面的应用层提供通信服务&#xff0c;它属于面向通信部分的最高层&#xff0c;同时也是用户功能中的最低层。 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时&a…

数量多怎么打印最便宜?

当您面临大量文件需要打印时&#xff0c;如何找到既经济又高效的打印解决方案成为关键。在众多打印服务中&#xff0c;琢贝云打印凭借其显著的价格优势和服务特色&#xff0c;成为众多用户的首选。 极致低价&#xff0c;成本更低 黑白打印超低价&#xff1a;提供的黑白打印服…

照明风暖浴霸语音控制芯片,智能声控开关芯片方案NRK3301

照明风暖浴霸通过特制的防水红外线热波管&#xff0c;与换气扇的巧妙组合&#xff0c;将浴室的取暖、红外线理疗、浴室换气、装饰等多种功能结合于一体的浴用小家电产品&#xff1b;为了提升产品的卖点&#xff0c;许多厂商都在尝试加各色各样的功能&#xff0c;某厂家加入了NR…

分销--分销人员管理系统架构文档

1. 概述 1.1 目的 本系统架构文档旨在描述分销人员管理系统的整体设计与结构&#xff0c;明确系统的功能模块、流程和技术实现&#xff0c;确保系统能够有效支持分销员的招募、管理及监督。 1.2 范围 本文档涵盖了分销员招募与管理。包括分销员列表、招募流程等。 2. 系统…

基于人工智能的垃圾分类图像识别系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 随着全球环境保护意识的增强&#xff0c;垃圾分类逐渐成为城市治理的关键任务之一。通过人工智能技术&#xff0c;尤其是图像识别系统…

Ascend C算子性能优化实用技巧03——搬运优化

Ascend C是CANN针对算子开发场景推出的编程语言&#xff0c;原生支持C和C标准规范&#xff0c;兼具开发效率和运行性能。使用Ascend C&#xff0c;开发者可以基于昇腾AI硬件&#xff0c;高效的实现自定义的创新算法。 目前已经有越来越多的开发者使用Ascend C&#xff0c;我们…

java控制流程

1.块作用域 用一对大括号括起来的就是一个块&#xff0c;块确定了变量的作用域。一个块可以嵌套在另一个块中。块外的变量在块内有效&#xff0c;而块内的变量在块外无效。 public class Main{public static void main(String[] args){int i1;{System.out.println("i&qu…

【2024】JAVA实现响应式编程Reactor具体API文档使用说明

目录&#x1f4bb; 前言一、简介1、响应式编程概述背景知识什么是响应式编程具体概述应用场景:常用的库和框架 二、 Reactor实现响应式编程1、Flux 和 Mono介绍Flux:Mono:Flux 和 Mono 的区别:Flux 和 Mono 的关系: 2、常用API使用添加依赖2.1、生产流常用汇总 2.1.1、直接创建…

2024 高教社杯 数学建模国赛 (A题)深度剖析|“板凳龙” 闹元宵|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题&#xff01; CS团队倾注了大量时间和心血&#xff0c;深入挖掘解…