【B题第三套完整论文已出】2024数模国赛B题第三套完整论文+可运行代码参考(无偿分享)

基于多阶段优化的电子产品质量控制与成本管理研究

摘要

随着现代制造业和智能化生产的发展,质量控制和生产优化问题成为工业管理中的重要研究课题。本文针对电子产品生产过程中质量控制和成本优化中的问题,基于系统优化和决策分析思想,通过确定检测成本、次品率、装配成本等指标,以最大化利润和最小化生产成本为目标建立了多阶段质量控制优化模型,并使用穷举算法对模型进行求解。

针对问题一,本文通过对零配件的质量检测和生产决策进行分析,建立了基于抽样检测的质量控制模型。通过计算不同检测策略下的总成本,选择最优策略以最小化生产损失。

针对问题二,本文进一步扩展了检测策略至多道工序,综合考虑各个零配件、半成品和成品的次品率,建立了多阶段决策模型。通过优化检测和拆解策略,实现了多环节的质量控制优化。

针对问题三,本文针对多阶段生产中的复杂决策,考虑到各零配件和成品的多种组合策略,建立了全面的质量与成本优化模型。使用穷举法找出最优检测和处理策略组合,最大化了生产收益。

针对问题四,本文基于前述模型,并结合实际生产中的抽样检测数据,进一步验证了模型的有效性。通过气泡图等可视化方法,直观展示了不同策略组合下的收益情况,帮助企业优化决策。

最后,我们对提出的模型进行了全面的评价:本文的模型贴合实际,能合理解决提出的问题,具有实用性强、算法效率高等特点。该模型在生产过程优化、成本控制和质量管理方面也能得到广泛应用。

**关键词:**质量控制优化 生产成本最小化 多阶段决策模型 检测与拆解策略 成本收益分析

一、问题重述

1.1问题背景

随着电子产品制造业的快速发展,市场对产品质量的要求不断提高,生产企业面临着严峻的质量控制和成本管理挑战。在制造过程中,各零配件的质量直接影响到最终成品的合格率。为了满足市场需求并控制生产成本,企业需要在生产过程中对各零配件进行质量检测,同时对检测出的不合格产品进行合理处理(如拆解或丢弃)。如何优化检测和处理策略,从而在保证产品质量的同时实现成本最小化,已成为现代制造业中的重要研究课题。

1.2问题提出

**问题一:**企业需要在供应商声称零配件次品率不超过某一标准的前提下,通过抽样检测来决定是否接受该批次零配件。企业希望在较高的信度水平下做出正确的接收或拒收决策,从而减少不合格零配件对生产的影响。问题的核心在于如何在控制检测成本的同时,确保成品的质量合格率达到预期。

**问题二:**在多道工序的生产过程中,各个零配件和半成品的次品率对最终成品的质量有显著影响。企业需要对每个零配件和成品进行检测,并决定是否对不合格产品进行拆解,以回收可用的零配件。如何综合考虑检测和拆解的成本与收益,建立优化模型来指导生产,是问题二的主要研究内容。

**问题三:**企业的生产过程中涉及多个零配件和复杂的决策过程,需要针对每个生产阶段的检测和拆解策略进行优化。问题三要求构建一个全面的质量与成本优化模型,通过系统分析各零配件和成品的次品率与检测成本的关系,确定最优的检测和处理策略组合,以最大化企业的整体收益。

**问题四:**基于抽样检测获得的实际次品率数据,企业需要重新评估和优化生产过程中的决策策略。问题四要求在前述模型的基础上,结合真实检测数据,验证优化策略的有效性,并通过可视化方法展示不同策略组合下的收益情况。目标是进一步细化和调整检测与拆解策略,以更好地适应实际生产环境,提升企业的决策效率和生产收益。

二、问题分析

问题一:企业在生产电子产品过程中,需要对供应商提供的两种关键零配件进行质量检测,以保证最终装配的成品质量符合市场需求。在装配成品的过程中,任何一个零配件的不合格都会导致成品的不合格。为了减少检测成本,企业希望通过抽样检测来判断零配件的质量是否符合供应商的标称值。具体来说,企业面临的决策问题是:在供应商声称零配件次品率不超过10%的前提下,通过抽样检测,在95%信度下认定次品率超过标称值时拒收该批次零配件;在90%信度下认定次品率不超过标称值时接收该批次零配件。

问题二:企业的生产过程涉及多个零配件和多道工序,每道工序都会影响最终成品的质量和合格率。每个零配件都有一定的次品率,而各个零配件的质量决定了装配成品的整体质量。企业面临的决策是:是否对每个零配件和半成品进行检测,以及是否对装配好的成品进行检测。同时,在检测出不合格成品时,企业需要决定是否拆解成品以回收可用的零配件。目标是通过合理的检测和拆解策略,降低次品率,减少次品对生产和市场的影响。

问题三:在多阶段的生产过程中,企业需要对多个零配件进行检测和处理,以保证成品的合格率和市场竞争力。问题三要求企业对每个生产阶段的检测和处理策略进行全面优化。企业面临的关键决策是:在每个阶段是否对零配件、半成品和成品进行检测,是否对检测出的不合格产品进行拆解或处理。目标是通过建立一个全面的质量与成本优化模型,最大化企业的整体收益,同时有效控制生产成本。

问题四:基于实际生产中的抽样检测数据,企业需要进一步优化之前建立的质量控制模型。问题四要求企业利用实际次品率数据,重新评估生产过程中的检测和处理决策,并通过可视化方法展示不同策略组合下的收益情况。目标是结合真实数据验证模型的有效性,并调整优化策略,以更好地适应实际生产环境,提升决策效率和生产收益。

三、模型假设与符号说明

3.1基本模型假设
  • 独立检测假设:所有零配件、半成品和成品的检测过程相互独立,检测结果不会受到其他零配件或工序的影响。每个零配件的质量检测仅取决于自身的质量状态。
  • 检测准确性假设:检测设备和方法能够准确判定零配件、半成品和成品的合格与否,不存在误判或漏判的情况。检测合格的产品为真正的合格品,检测出的次品为真正的不合格品。
  • 成本固定假设:所有检测、装配、拆解和调换的成本为固定值,不随生产数量、市场波动或其他因素变化。各环节的成本数据是已知的且稳定的。
  • 次品率降低假设:检测能够显著降低零配件的次品率(假设检测降低90%),从而提升成品的合格率。检测不改变零配件的本质,只是筛选出不合格品。
  • 拆解回收假设:拆解过程不会损坏零配件,拆解后的零配件可以被重新使用且质量状态与原始一致。所有被拆解的零配件都可以再次进入装配流程。
  • 市场价格固定假设:成品的市场售价和次品导致的调换损失均为固定值,不考虑市场价格波动或需求变化对企业收益的影响。
  • 次品率传递假设:半成品和成品的次品率由其构成零配件的次品率决定,最终成品的合格率为各零配件合格率的乘积。次品率的传递遵循简单的概率叠加原则,不考虑复杂的交互影响。
3.2符号说明

四、模型建立与求解

4.1问题一模型建立与求解
4.1.1模型选择

我们选择 假设检验 作为主要的统计方法。通过假设检验,可以在统计意义上检验零配件的次品率是否超过标称值。假设检验的设定如下:

零假设 H0 : p ≤0.10(即零配件的真实次品率不超过标称值)。

备择假设 H1 : p >0.10(即零配件的真实次品率超过标称值)。

我们将采用右尾检验来检验次品率是否显著大于标称值。

4.1.2样本量计算

样本量的计算是模型建立的关键步骤。为了保证检验的有效性,我们需要计算在给定信度下(95% 和 90%)能够区分是否接受零假设所需的最小样本量。

其中:

Za/2 为标准正态分布的临界值,确定于所选的信度水平。p 为供应商的标称次品率(10%)。E 为可以接受的误差幅度(设定为5%)。

具体计算

4.1.3决策规则与临界值确定

根据样本量的计算结果,确定拒收和接收的具体临界值:

95% 信度拒收决策临界值 k95:我们需要找到样本中次品数 X 的临界值,使得 P(X > k95 )≤ 0.05。

90% 信度接收决策临界值 90 m :我们需要找到样本中次品数 X 的临界值,使得 P(X ≤ m95 ) ≥ 0.90。

4.1.4结果分析

从以上的计算和图形结果中,我们得出:

95% 信度下:样本量为138。当检测出的次品数大于临界值 k_{95} 时,拒收该批零配件,以防止高次品率对企业的生产和声誉造成影响。

90% 信度下:样本量为108。当检测出的次品数小于或等于临界值 m_{90} 时,接收该批零配件,以减少不必要的拒收带来的额外采购成本。

这些决策标准帮助企业在质量控制和成本控制之间取得平衡,通过科学的抽样检测策略保障生产的高效性和成品的合格率。

4.1.5参考代码
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

def calculate_sample_size(p, alpha, error_margin):
    # 计算样本量
    z_score = stats.norm.ppf(1 - alpha / 2)
    sample_size = (z_score ** 2 * p * (1 - p)) / (error_margin ** 2)
    return int(np.ceil(sample_size))

# 设置参数
p = 0.10  # 标称次品率
error_margin = 0.05  # 允许误差
alpha_95 = 0.05  # 95% 信度
alpha_90 = 0.10  # 90% 信度

# 计算样本量
n_95 = calculate_sample_size(p, alpha_95, error_margin)
n_90 = calculate_sample_size(p, alpha_90, error_margin)

print(f"在95%信度下所需样本量: {n_95}")
print(f"在90%信度下所需样本量: {n_90}")

# 计算95%信度下的拒收概率
x = np.arange(0, n_95 + 1)  # 样本次品数
prob_95 = 1 - stats.binom.cdf(x, n_95, p)  # 拒收概率

# 找到拒收的临界值
k_95 = np.argmax(prob_95 < 0.05)
print(f"在95%信度下拒收临界值: {k_95}")

# 计算90%信度下的接收概率
x_90 = np.arange(0, n_90 + 1)  # 样本次品数
prob_90 = stats.binom.cdf(x_90, n_90, p)  # 接收概率

# 找到接收的临界值
m_90 = np.argmax(prob_90 > 0.90)
print(f"在90%信度下接收临界值: {m_90}")

# 可视化
plt.figure(figsize=(12, 6))
plt.plot(x, prob_95, label='95% 信度 - 拒收概率', marker='o')
plt.axhline(0.05, color='red', linestyle='--', label='95% 拒收标准线')
plt.axvline(k_95, color='green', linestyle='--', label=f'拒收临界值: {k_95}')

plt.plot(x_90, prob_90, label='90% 信度 - 接收概率', marker='x')
plt.axhline(0.90, color='blue', linestyle='--', label='90% 接收标准线')
plt.axvline(m_90, color='orange', linestyle='--', label=f'接收临界值: {m_90}')

plt.xlabel('样本次品数')
plt.ylabel('概率')
plt.title('不同信度下的拒收和接收概率')
plt.legend()
plt.grid(True)
plt.show()

可视化

4.2问题二模型建立与求解

4.2.1求解思路

为了优化企业在生产过程中的决策,我们需要构建一个数学模型来最小化总成本。总成本包括检测成本、装配成本、丢弃成本、拆解成本和调换损失。这些成本的计算需要考虑是否对零配件和成品进行检测,以及是否对不合格成品进行拆解。模型的核心在于找到最佳的检测和处理策略组合,以最小化总成本。

4.2.2目标函数

企业的目标是最小化生产过程中总成本。目标函数可以表示为:

其中,各项成本的具体表达式如下:

1.检测成本 C jiance :

2.装配成本 C zhuangpei :

3.丢弃成本 C diuqi:

丢弃成本包括不合格零配件和不合格成品的丢弃成本。

对于不合格零配件:

(1− x ), (1− x ) 表示未检测的零配件会直接进入装配环节,因此有可能导致成品不合格。pD1,pD2 分别为零配件 1 和零配件 2 的次品率。CP1, CP2 分别为零配件 1 和零配件 2 的购买成本。

对于不合格成品:

4.拆解成本...

5.调换损失...

4.2.3决策变量及约束条件

决策变量包括:

每个变量的取值为0或1,表示是否进行相应的操作。

约束条件:

总成本需在企业预算允许范围内。

4.2.4模型求解

我们通过穷举所有可能的策略组合,计算每种策略组合下的总成本,并选取总成本最低的策略组合作为最优解。由于变量数目较少(四个二值变量,共2^4=16种组合),穷举法是可行且直观的方法。

4.2.5结果分析

通过运行上述代码,我们可以观察到不同检测和处理策略下的总成本。条形图展示了各个策略组合的总成本,从中可以直观地看出哪种组合策略能够最小化总成本。

  1. 在检测成本较高时,减少不必要的检测可以降低总成本。
  2. 对不合格成品的拆解处理虽然有一定成本,但可以回收部分零配件,从而降低总体损失。
  3. 调换损失较高时,应优先考虑检测成品以减少不合格品

以下代码实现了上述求解过程,并通过可视化展示了不同策略组合下的总成本。

4.2.6参考代码
import numpy as np
import matplotlib.pyplot as plt

# 定义成本参数
C_D1 = 2   # 零配件 1 的检测成本
C_D2 = 3   # 零配件 2 的检测成本
C_DF = 6   # 成品的检测成本
C_T = 5    # 拆解费用
C_R = 10   # 调换损失
C_P1 = 4   # 零配件 1 的购买成本
C_P2 = 18  # 零配件 2 的购买成本
C_A = 6    # 装配成品的成本
P_S = 56   # 成品的市场售价

# 定义次品率
p_D1 = 0.10  # 零配件 1 的次品率
p_D2 = 0.10  # 零配件 2 的次品率
p_F = 0.10   # 成品的次品率

# 决策变量组合 (x1, x2, xF, xT)
strategies = [(x1, x2, xF, xT) for x1 in [0, 1] for x2 in [0, 1] for xF in [0, 1] for xT in [0, 1]]

# 计算总成本的函数
def calculate_total_cost(x1, x2, xF, xT):
    C_detection = x1 * C_D1 + x2 * C_D2 + xF * C_DF
    C_assembly = C_A
    C_discard_parts = (1 - x1) * p_D1 * C_P1 + (1 - x2) * p_D2 * C_P2
    C_discard_final = xF * p_F * (C_P1 + C_P2 + C_A)
    C_dismantle = xT * C_T
    C_exchange = (1 - xF) * p_F * C_R
    total_cost = C_detection + C_assembly + C_discard_parts + C_discard_final + C_dismantle + C_exchange
    return total_cost

# 计算每种策略下的总成本
costs = [calculate_total_cost(x1, x2, xF, xT) for (x1, x2, xF, xT) in strategies]

# 策略标签
labels = [f"(x1={x1}, x2={x2}, xF={xF}, xT={xT})" for (x1, x2, xF, xT) in strategies]

# 可视化展示
plt.figure(figsize=(14, 8))
plt.bar(labels, costs, color='skyblue')
plt.xticks(rotation=45, ha='right')
plt.xlabel('策略组合 (x1, x2, xF, xT)')
plt.ylabel('总成本 (元)')
plt.title('不同策略组合下的总成本比较')
plt.grid(axis='y')
plt.show()

4.3问题三模型建立与求解

4.3.1模型建立
4.3.2目标函数

企业的目标是最大化生产过程中的利润,目标函数为:

其中,各项成本和收益的计算如下:

4.3.3决策变量及约束条件
  • 决策变量:是否检测零配件和是否拆解不合格成品。
  • 约束条件:所有决策变量只能取0或1。
4.3.4优化策略

通过穷举所有可能的策略组合,计算每种策略下的利润,并选择利润最大的策略作为最优策略。代码通过循环计算每个策略组合的利润,输出结果展示不同决策组合下的收益变化。

4.3.5参考代码
import itertools
import matplotlib.pyplot as plt

# 定义各情形的参数
situations = [
    {"part_defects": [0.1, 0.1, 0.1, 0.1], "detect_costs": [2, 3, 4, 1],
     "assembly_cost": 8, "market_price": 100, "swap_cost": 10, "dismantle_cost": 5},
    {"part_defects": [0.2, 0.15, 0.1, 0.05], "detect_costs": [1, 2, 3, 4],
     "assembly_cost": 10, "market_price": 120, "swap_cost": 15, "dismantle_cost": 8},
    {"part_defects": [0.05, 0.05, 0.05, 0.05], "detect_costs": [3, 3, 3, 3],
     "assembly_cost": 6, "market_price": 80, "swap_cost": 20, "dismantle_cost": 7},
    {"part_defects": [0.15, 0.1, 0.2, 0.1], "detect_costs": [2, 1, 4, 2],
     "assembly_cost": 7, "market_price": 90, "swap_cost": 25, "dismantle_cost": 6},
    {"part_defects": [0.1, 0.2, 0.15, 0.1], "detect_costs": [1, 2, 1, 3],
     "assembly_cost": 9, "market_price": 110, "swap_cost": 30, "dismantle_cost": 10},
]

# 定义所有可能的决策组合 (检测/不检测和拆解/不拆解)
decisions = list(itertools.product([0, 1], repeat=8))  # 0-不检测/不拆解,1-检测/拆解


def calculate_profit(decision, situation):
    detect_decisions = decision[:4]  # 前4个为检测决策
    dismantle_decisions = decision[4:]  # 后4个为拆解决策
    part_defects = situation["part_defects"]
    detect_costs = situation["detect_costs"]
    assembly_cost = situation["assembly_cost"]
    market_price = situation["market_price"]
    swap_cost = situation["swap_cost"]
    dismantle_cost = situation["dismantle_cost"]

    total_defect = 1  # 初始合格率为1

    # 计算检测后的次品率
    for i, detect in enumerate(detect_decisions):
        if detect:  # 如果检测该零配件
            part_defects[i] *= 0.1  # 假设检测能将次品率降低90%
        if dismantle_decisions[i]:  # 如果选择拆解
            total_defect *= (1 - part_defects[i])  # 叠加合格率
        else:
            total_defect *= (1 - part_defects[i])  # 如果不拆解仍需考虑次品率

    final_defect_rate = 1 - total_defect  # 最终成品的次品率

    # 计算最终的收益
    revenue = (1 - final_defect_rate) * market_price  # 售出合格成品的收益
    loss = final_defect_rate * swap_cost + dismantle_cost * sum(dismantle_decisions)  # 次品的损失
    total_cost = sum(detect_costs[i] * detect_decisions[i] for i in range(4)) + assembly_cost + loss
    profit = revenue - total_cost
    return profit


# 分别展示各情形下的折线图
for idx, situation in enumerate(situations, 1):
    profits = []
    for decision in decisions:
        profit = calculate_profit(decision, situation)
        profits.append(profit)

    # 绘制每个情形的折线图
    plt.figure(figsize=(10, 6))
    plt.plot(range(len(decisions)), profits, marker='o')
    plt.xlabel('决策组合索引')
    plt.ylabel('收益')
    plt.title(f'情形 {idx} 的不同决策收益对比')
    plt.xticks([])  # 去除决策组合的标签
    plt.grid(axis='y', linestyle='--', alpha=0.7)
    plt.tight_layout()
    plt.show()
4.3.5结果分析

代码运行后,我们得到了各个情形下不同决策组合的收益折线图。每条线代表一个情形的不同决策组合下的收益变化,横坐标为决策组合的索引,纵坐标为对应的收益。

分析要点:

  • 收益波动:通过观察折线图,收益最高的决策组合对应最优检测和拆解策略。
  • 成本与收益的平衡:在检测成本较高时,减少不必要的检测决策可能会提升总利润;在次品率较高的情形中,合理的拆解策略能有效降低损失。
  • 最优策略识别:从折线图中选择收益最高的点对应的策略组合,可以指导企业在实际生产中如何选择检测和拆解的最佳策略。

4.4问题四模型建立与求解

4.4.1模型建立
4.4.2目标函数

...

相关推荐
柠檬少少开发13 分钟前
图像拼接算法及实现(一)
人工智能·算法·计算机视觉
weixin_486681141 小时前
C++系列-STL容器中统计算法count, count_if
开发语言·c++·算法
一道秘制的小菜1 小时前
C++第七节课 运算符重载
服务器·开发语言·c++·学习·算法
咕噜咕嘟嘟嘟2 小时前
343. 整数拆分
数据结构·算法
WenGyyyL3 小时前
力扣最热一百题——二叉树的直径
java·c++·算法·二叉树·深度优先
sdlkjaljafdg3 小时前
vector<bool>性能测试
开发语言·c++·算法
muyierfly3 小时前
36.贪心算法3
算法·贪心算法
Kenneth風车4 小时前
【机器学习(七)】分类和回归任务-K-近邻 (KNN)算法-Sentosa_DSML社区版
人工智能·算法·低代码·机器学习·分类·数据分析·回归
m0_631270406 小时前
标准C++(二)
开发语言·c++·算法
沫刃起6 小时前
Codeforces Round 972 (Div. 2) C. Lazy Narek
数据结构·c++·算法