2024数学建模国赛B题代码

B题已经完成模型代码!详情查看文末名片

问题1:可以考虑使用统计学中的“样本量估算”方法,使用二项分布或正态近似来决定最少的样本量,并通过假设检验(如单侧检验)在95%和90%置信度下进行判断。

import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt# 参数设置
p_0 = 0.10  # 标称次品率(供应商声称)
confidence_level_95 = 0.95  # 问题 (1) 的置信水平
confidence_level_90 = 0.90  # 问题 (2) 的置信水平
margin_of_error = 0.05  # 误差限# 计算Z值
Z_95 = stats.norm.ppf((1 + confidence_level_95) / 2)  # 95%置信区间
Z_90 = stats.norm.ppf((1 + confidence_level_90) / 2)  # 90%置信区间# 样本量估算公式
def sample_size(Z, p, E):"""根据Z值,次品率p,误差限E计算最少样本量"""return (Z**2 * p * (1 - p)) / (E**2)# 计算95%和90%置信度下的最少样本量
n_95 = sample_size(Z_95, p_0, margin_of_error)
n_90 = sample_size(Z_90, p_0, margin_of_error)print(f"95%置信水平下的最少样本量: {int(np.ceil(n_95))}")
print(f"90%置信水平下的最少样本量: {int(np.ceil(n_90))}")# 抽样假设检验
def hypothesis_test(p_0, n, x, confidence_level):"""根据样本量n,抽样检测到的次品数量x,以及置信水平,计算置信区间p_0: 标称次品率n: 样本量x: 次品数量confidence_level: 置信水平"""p_hat = x / n  # 样本次品率Z = stats.norm.ppf((1 + confidence_level) / 2)margin = Z * np.sqrt((p_hat * (1 - p_hat)) / n)lower_bound = p_hat - marginupper_bound = p_hat + marginreturn lower_bound, upper_bound# 模拟抽样检测
np.random.seed(42)  # 固定随机种子
n_sample = int(np.ceil(n_95))  # 使用95%置信水平下的样本量
true_defect_rate = 0.12  # 假设实际次品率为12%
sample_defects = np.random.binomial(n_sample, true_defect_rate)  # 抽样检测出的次品数量# 进行95%置信水平的假设检验
lower_95, upper_95 = hypothesis_test(p_0, n_sample, sample_defects, confidence_level_95)
# 进行90%置信水平的假设检验
lower_90, upper_90 = hypothesis_test(p_0, n_sample, sample_defects, confidence_level_90)# 打印检测结果
print(f"抽样检测得到的次品数量: {sample_defects}/{n_sample}")
print(f"95%置信区间: [{lower_95:.3f}, {upper_95:.3f}]")
print(f"90%置信区间: [{lower_90:.3f}, {upper_90:.3f}]")
完整代码:https://mbd.pub/o/bread/mbd-ZpqZl55p

问题2:基于零配件的次品率和成本数据,建立一个决策树模型或者动态规划模型,分析在每个阶段是否检测、是否拆解能使企业的总成本最小化。重点在于计算检测成本、拆解费用、调换损失等对整体利润的影响。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import font_manager# 使用SimHei字体来支持中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 或者你系统支持的中文字体
plt.rcParams['axes.unicode_minus'] = False# 定义输入参数
# 情况1的数据
p1_defect_rate = 0.10  # 零配件1的次品率
p2_defect_rate = 0.10  # 零配件2的次品率
product_defect_rate = 0.10  # 成品的次品率
purchase_cost1 = 4  # 零配件1的购买单价
purchase_cost2 = 18  # 零配件2的购买单价
assembly_cost = 6  # 装配成本
market_price = 56  # 市场售价
replacement_loss = 6  # 调换损失
dismantling_cost = 5  # 拆解费用# 检测成本
detection_cost1 = 2  # 零配件1的检测成本
detection_cost2 = 3  # 零配件2的检测成本
product_detection_cost = 3  # 成品的检测成本# 决策1: 是否对零配件进行检测
def part_detection_decision(p_defect, detection_cost, purchase_cost):"""决定是否对零配件进行检测,基于检测成本和次品率如果检测成本低于购买并丢弃次品的期望损失,则选择检测"""expected_defect_loss = p_defect * purchase_cost  # 不检测时的期望损失if detection_cost < expected_defect_loss:return True  # 检测else:return False  # 不检测# 决策2: 是否对成品进行检测
def product_detection_decision(p_defect, detection_cost, market_price, replacement_loss):"""决定是否对成品进行检测,基于检测成本和退货损失如果检测成本低于次品退货的期望损失,则选择检测"""
完整代码:https://mbd.pub/o/bread/mbd-ZpqZl55p

问题3:扩展模型,考虑多道工序的情形。可以将每道工序看作一个子系统,递归地分析各个阶段的次品率对最终成品质量的影响,并提出最优的检测方案。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题# 决策函数:是否检测零配件
def part_detection_decision(p_defect, detection_cost, purchase_cost):"""根据次品率和检测成本,决定是否检测零配件。"""expected_defect_loss = p_defect * purchase_cost  # 不检测的期望次品损失detect = detection_cost < expected_defect_loss  # 如果检测成本低于次品损失,则检测decision = "检测" if detect else "不检测"return detect, decision# 决策函数:是否检测半成品/成品
def product_detection_decision(p_defect, detection_cost, replacement_loss):"""根据次品率和检测成本,决定是否检测半成品或成品。"""expected_defect_loss = p_defect * replacement_loss  # 不检测的期望次品损失detect = detection_cost < expected_defect_loss  # 如果检测成本低于次品损失,则检测decision = "检测" if detect else "不检测"return detect, decision# 工序中次品率的递进计算
def calculate_defect_rate(p_list):"""计算多个零配件组合后的次品率(使用联合概率公式)。p_list: 各零配件的次品率列表"""combined_defect_rate = 1 - np.prod([1 - p for p in p_list])  # 联合次品率return combined_defect_rate# 计算总成本,并输出决策依据
def total_cost(steps, dismantling_cost, replacement_loss):"""计算总期望成本,并输出决策依据。"""total_parts_cost = 0total_assembly_cost = 0total_product_cost = 0previous_defect_rate = 0  # 初始时为0,没有前序工序
完整代码:https://mbd.pub/o/bread/mbd-ZpqZl55p

问题4:结合问题1的抽样检测方法,重新优化问题2和问题3中的方案,确保抽样检测得到的次品率可以指导后续的决策。

import numpy as np
import scipy.stats as stats# 抽样次品率估计函数
def estimate_defect_rate(sample_size, defect_count):"""使用抽样检测方法估算次品率。sample_size: 样本量defect_count: 检测到的次品数"""return defect_count / sample_size# 决策函数:是否检测零配件
def part_detection_decision(p_defect, detection_cost, purchase_cost):"""根据估算次品率和检测成本,决定是否检测零配件。"""expected_defect_loss = p_defect * purchase_cost  # 不检测的期望次品损失detect = detection_cost < expected_defect_loss  # 如果检测成本低于次品损失,则检测decision = "检测" if detect else "不检测"return detect, decision# 决策函数:是否检测成品
def product_detection_decision(p_defect, detection_cost, replacement_loss):"""根据估算次品率和检测成本,决定是否检测成品。p_defect: 成品的次品率detection_cost: 检测成品的成本replacement_loss: 成品退货的损失"""expected_defect_loss = p_defect * replacement_loss  # 不检测的期望退货损失detect = detection_cost < expected_defect_loss  # 如果检测成本低于退货损失,则检测decision = "检测" if detect else "不检测"return detect, decision# 工序中次品率的递进计算
def calculate_defect_rate(p_list):"""计算多个零配件组合后的次品率(使用联合概率公式)。
完整代码:https://mbd.pub/o/bread/mbd-ZpqZl55p

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

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

相关文章

鸿蒙HarmonyOS应用开发者高级认证重点知识详解

✍️作者简介&#xff1a;小北编程&#xff08;专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向&#xff09; &#x1f433;博客主页&#xff1a; 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN &#x1f514;如果文章对您有一定的帮助请&#x1f…

骑砍模型修改逻辑

这篇博客用作日志的性质。 一&#xff0c;在自定义战场中测试自己制作好的地图 1、将制作好的地图保存到Mount & Blade II Bannerlord\Modules\SandBoxCore\SceneObj内 2、用Notepad打开 \Mount & Blade II Bannerlord\Modules\CustomBattle\ModuleData\custom_battl…

147.最小栈

题目 链接&#xff1a;leetcode链接 思路 这道题目做起来还是比较简单的&#xff0c;使用两个栈就可以实现题目要求。 其中一个栈s实现栈的基本功能&#xff0c;另一个栈mins实现检索最小元素的功能。 来看一下怎么样实现检索最小元素的功能呢&#xff1f; 我们可以这么…

希尔排序

一&#xff1a;基本思想 先选定一个整数gap&#xff0c;把待排序文件中所有记录分成个组&#xff0c;按照所有距离为整数gap的记录分在同一组内&#xff0c;并对每一组内的记录进行排序。然后&#xff0c;通过整数gap逐渐变小&#xff0c;重复上述分组和排序的工作。当整数gap…

Python全网最全基础课程笔记(七)——列表,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!

本专栏系列为Pythong基础系列&#xff0c;每篇内容非常全面&#xff0c;包含全网各个知识点&#xff0c;非常长&#xff0c;请耐心看完。 每天都会更新新的内容&#xff0c;搜罗全网资源以及自己在学习和工作过程中的一些总结&#xff0c;可以说是非常详细和全面。 以至于为什么…

怎样给U盘加密?看这里!30s学会四种方法,保护你的数据安全!

在一家中型科技公司里&#xff0c;一名员工将包含重要项目资料的U盘遗忘在咖啡店的桌子上。该U盘内存有公司尚未公开的新产品设计图纸、客户信息以及财务报告等敏感数据。几小时后&#xff0c;这个未加密的U盘被一名陌生人拾到并插入其电脑中查看&#xff0c;机密信息被上传到网…

erlang学习: Mnesia Erlang数据库

创建Mnesia数据库 mnesia:create_schema([node()]).在shell里输入该行代码即可创建一个mnesia数据库于当前文件夹下 编译器文件路径下同样也有 数据库表定义创建 之后是数据库表定义&#xff0c;打开数据库创建完成后&#xff0c;启动数据库&#xff0c;添加一些表定义&…

Ubuntu22.04安装nginx

1.安装nginx 首先&#xff0c;更新你的包索引&#xff1a; sudo apt update 安装必要的软件包以允许apt通过HTTPS使用仓库&#xff1a; sudo apt install ca-certificates curl gnupg lsb-release 添加Nginx官方的GPG密钥&#xff1a; curl -fsSL https://nginx.org/keys/ng…

JavaScript练手小技巧:利用鼠标滚轮控制图片轮播

近日&#xff0c;在浏览网站的时候&#xff0c;发现了一个有意思的效果&#xff1a;一个图片轮播&#xff0c;通过上下滚动鼠标滚轮控制图片的上下切换。 于是就有了自己做一个的想法&#xff0c;顺带复习下鼠标滚轮事件。 鼠标滚轮事件&#xff0c;参考这篇文章&#xff1a;…

Vue如何将网页转换成图片或PDF并上传

一.使用html2canvas获取页面元素并绘制成图片 htmlcanvas中文文档 npm install --save html2canvas<template><div><button click"uploadImg">上传</button><div ref"yourDom"><!-- ...图片中页面内容 --><img s…

【Linux】多线程:线程互斥、互斥锁

目录 一、多线程访问公共资源时所产生的问题 二、互斥相关背景概念 互斥量mutex&#xff08;锁&#xff09;的引入 三、互斥量 1、初始化互斥量&#xff08;mutex&#xff09; 2、互斥量加锁 3、互斥量解锁 4、 销毁互斥量 四、互斥量的使用 1、使用静态互斥量 2、…

安泰功率放大器在微纳光固化3D打印中的具体应用

随着科技的进步&#xff0c;3D打印技术已经渗透到各个领域&#xff0c;尤其是微纳光固化3D打印技术。这种技术结合了光学、材料科学和微电子学的知识&#xff0c;能够制造出具有微米级精度的复杂物体。本文Aigtek安泰电子将带你探索功率放大器在微纳光固化3D打印中的应用&#…

OpenCV 之 模版匹配多个对象、图片旋转 综合应用

引言 在图像处理和计算机视觉中&#xff0c;模板匹配是一种常用的技术&#xff0c;用于在一幅较大的图像中查找与给定模板图像相似的部分。然而&#xff0c;在实际应用中&#xff0c;目标物体可能会出现在不同的角度&#xff0c;这就需要我们在匹配之前对模板进行旋转处理。本…

仿某皮影狸app官网源码 不错的APP下载官网单页源码 HTML源码

分享一款不错的APP下载官网单页源码&#xff0c;直接修改index.html即可 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89731228 更多资源下载&#xff1a;关注我。

Python(PyTorch和TensorFlow)图像分割卷积网络导图(生物医学)

&#x1f3af;要点 语义分割图像三层分割椭圆图像脑肿瘤图像分割动物图像分割皮肤病变分割多模态医学图像多尺度特征生物医学肖像多类和医学分割通用图像分割模板腹部胰腺图像分割分类注意力网络病灶边界分割气胸图像分割 Python生物医学图像卷积网络 该网络由收缩路径和扩…

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证 目录 回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于贝叶…

AI大模型精准升级!揭秘高级RAG架构,让回答更精准、更可靠!

什么是 RAG&#xff1f; 当然&#xff0c;本文依然会讲解一部分 RAG 的基础知识&#xff0c;让你能够对文章的上下文有个初步了解。 “检索增强生成” (Retrieval Augmented Generation)&#xff0c;简称 RAG&#xff0c;这一概念首次出现在 2020 年 Meta 发布的一项学术研究…

中国《人工智能安全治理框架》1.0版正式发布 规范各类AI、算法

今日&#xff0c;全国网络安全标准化技术委员会发布《人工智能安全治理框架》1.0版。《框架》提出了包容审慎、确保安全&#xff0c;风险导向、敏捷治理&#xff0c;技管结合、协同应对&#xff0c;开放合作、共治共享等人工智能安全治理的原则。 针对模型算法安全、数据安全和…

RK3576芯片在智能家居里中型智慧屏产品的应用方案分析

智能家居在近年来得到了快速发展&#xff0c;AI技术不断发展&#xff0c;人机交互十分成熟&#xff0c;各种家电也都迎来了智能化浪潮&#xff0c;智能家居为人们提供了优秀的产品体验&#xff0c;受到主流消费者的青睐&#xff0c;智能家居里的中型智慧屏产品也随之兴起。 瑞芯…

RedisTemplate操作String的API

文章目录 1 String 介绍2 命令3 对应 RedisTemplate API❄️❄️ 3.1 添加缓存❄️❄️ 3.2 设置过期时间(单独设置)❄️❄️ 3.3 获取缓存值❄️❄️ 3.4 删除key❄️❄️ 3.5 顺序递增❄️❄️ 3.6 顺序递减 ⛄4 以下是一些常用的API⛄5 应用场景 1 String 介绍 String 类型…