2024高教社杯全国大学生数学建模竞赛B题原创python代码

本文主要是介绍2024高教社杯全国大学生数学建模竞赛B题原创python代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以下均为python代码。先给大家看看之前文章的部分思路:

接下来我们将按照题目总体分析-背景分析-各小问分析的形式来

1 总体分析

题目提供了一个电子产品生产的案例,要求参赛者建立数学模型解决企业在生产过程中的一系列决策问题。以下是对题目的总体分析:

问题一需要企业需要从供应商购买零配件,并且需要设计一个抽样检测方案,来决定是否接受供应商提供的零配件。题目要求设计一个能够尽可能减少检测次数的方案,分别在95%和90%的置信度下,判断零配件的次品率是否超过标称值。这个问题的核心是基于统计学的抽样检验,涉及假设检验和置信区间的计算。需要考虑标称值为10%的情况下,如何设计抽样数量,使得在满足不同置信水平的条件下进行接收或拒收决策。

问题二则:在生产过程中,企业需要在多个阶段做出决策,包括:

  • 是否对零配件进行检测。

  • 是否对成品进行检测。

  • 是否对不合格的成品进行拆解,决定是否将拆解后的零配件重新利用。

  • 如何处理用户退回的不合格产品。

需要根据这些参数为企业提供决策依据,并且给出相应的指标结果。

问题3:扩展的生产决策问题

在问题2的基础上,问题3进一步扩展了生产过程,增加了多个零配件和工序的情况。题目提供了多达8个零配件和2道工序的组装过程,要求针对更复杂的生产流程给出具体的决策方案。这部分问题的复杂度更高,可能涉及到多阶段决策和动态规划。

问题4:基于抽样检测的决策调整

假设问题2和问题3中的次品率均通过抽样检测得到,要求重新进行生产过程中的决策。这一问题要求参赛者结合问题1中的抽样检测方法,重新审视生产流程中的决策,可能需要重新设计检测方案,优化成本和风险的平衡。

问题2和问题3中的各个决策环节都涉及到成本效益的权衡,需要建立一个数学模型来综合考虑检测成本、拆解费用、次品率、调换损失等。

动态规划或优化模型:面对问题3中的多工序、多零配件的复杂情况,可以使用动态规划或其他优化方法,来寻找到最优的决策路径。

2 背景分析

总结一下,题目的背景集中在生产过程中的质量控制和成本优化,企业需要在多个决策点上进行权衡,既要保证最终产品的质量,又要尽量减少生产和处理的成本损失。

3 各小问分析

这道题目是关于生产过程中的决策问题,涉及到电子产品制造中的抽样检测、装配、拆解、退换货等多个环节。问题分为四个主要部分,要求为企业设计优化生产决策的数学模型。

问题1:抽样检测方案建模与分析

该问题要求设计一个抽样检测方案,判断零配件的次品率是否超过标称值。在这个问题中,零配件次品率不会超过某个标称值(如10%)。我们需要在不同信度下,决定是否接受这批零配件。

建模目标:

我们需要设计一个抽样检测方案,确保:

1.在95%的信度下,判断零配件次品率超过标称值时拒收该批次零配件。

2.在90%的信度下,判断零配件次品率不超过标称值时接收该批次零配件。

1.抽样检测方案的基础理论

  1. 假设检验 我们可以使用假设检验来进行模型设计。设: p为零配件的真实次品率。 p0为标称的次品率(10%)。 我们抽取的样本数为n,次品数为x。 根据问题要求,我们可以构建两个假设: 原假设H_0:零配件次品率p\leq p_0(零配件次品率不超过标称值,接受零配件)。 备择假设H_1:零配件次品率p>p_0(零配件次品率超过标称值,拒绝零配件)。

  2. 二项分布建模 对于每个零配件,若其合格率为1-p,则每个零配件是次品的概率为p。假设我们从一批零配件中抽取了n个样本,次品的数量服从二项分布:

其中: n是抽样数量。 p是次品率。 X是次品的个数。 可以用正态分布近似二项分布:

通过正态近似,可以使用标准化公式:

  1. 双侧检验与置信区间

我们根据问题中95%和90%的信度要求进行双侧假设检验。信度要求分别对应的显著性水平alpha为:

95%信度:对应alpha=0.05。

90%信度:对应alpha=0.10。

在这两种情况下,分别计算不同显著性水平下的拒收与接收条件。

2.具体建模步骤

第一问代码:

import math
from scipy.stats import norm
import matplotlib.pyplot as plt# 定义参数
p0 = 0.10  # 标称次品率
alpha_95 = 0.05  # 95%置信水平
alpha_90 = 0.10  # 90%置信水平
z_95 = norm.ppf(1 - alpha_95)  # 95%的临界值
z_90 = norm.ppf(1 - alpha_90)  # 90%的临界值# 计算样本量
def calculate_sample_size(z_alpha, p0, delta):return math.ceil((z_alpha**2 * p0 * (1 - p0)) / delta**2)# 假设检测误差delta为5%
delta = 0.05# 计算样本量
n_95 = calculate_sample_size(z_95, p0, delta)
n_90 = calculate_sample_size(z_90, p0, delta)# 打印结果
print(f"在95%的置信水平下,所需的最小样本量为: {n_95}")
print(f"在90%的置信水平下,所需的最小样本量为: {n_90}")# 生成图表:不同显著性水平下样本量的变化
def plot_sample_size():alphas = [0.01 * i for i in range(5, 21)]  # 从5%到20%的不同显著性水平sample_sizes = [calculate_sample_size(norm.ppf(1 - alpha), p0, delta) for alpha in alphas]plt.figure(figsize=(8, 6))plt.plot(alphas, sample_sizes, marker='o', linestyle='-', color='b')plt.title('Sample Size vs Significance Level', fontsize=14)plt.xlabel('Significance Level (Alpha)', fontsize=12)plt.ylabel('Sample Size', fontsize=12)plt.axvline(x=0.05, color='r', linestyle='--', label="95% Confidence Level")plt.axvline(x=0.10, color='g', linestyle='--', label="90% Confidence Level")plt.legend()plt.grid(True)plt.tight_layout()plt.show()# 生成图表:样本量与误差范围的关系
def plot_sample_size_vs_error():deltas = [0.01 * i for i in range(1, 21)]  # 从1%到20%的误差范围sample_sizes_95 = [calculate_sample_size(z_95, p0, delta) for delta in deltas]sample_sizes_90 = [calculate_sample_size(z_90, p0, delta) for delta in deltas]plt.figure(figsize=(8, 6))plt.plot(deltas, sample_sizes_95, label="95% Confidence Level", marker='o', linestyle='-', color='b')plt.plot(deltas, sample_sizes_90, label="90% Confidence Level", marker='o', linestyle='-', color='g')plt.title('Sample Size vs Error Margin', fontsize=14)plt.xlabel('Error Margin (Delta)', fontsize=12)plt.ylabel('Sample Size', fontsize=12)plt.legend()plt.grid(True)plt.tight_layout()plt.show()# 运行生成图表
plot_sample_size()
plot_sample_size_vs_error()

剩余看下面的名片

这篇关于2024高教社杯全国大学生数学建模竞赛B题原创python代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145171

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal