# 生产过程中的决策优化模型研究
## 摘要
本文针对某电子企业在生产过程中面临的零配件采购、质量检测与不合格品处理等关键决策问题,构建了基于概率分析与期望收益最大化的数学模型。首先,采用统计假设检验方法设计最小样本量的抽样检测方案;其次,通过建立全生命周期成本收益模型,对企业在不同情境下的检测与拆解决策进行优化;最后将模型推广至多工序、多零配件的复杂装配系统。利用MATLAB实现算法求解,得出各情形下的最优策略。结果表明,合理的检测与拆解策略可显著降低企业运营成本,提升经济效益。
**关键词**:生产决策;质量控制;假设检验;期望利润;MATLAB仿真
---
## 1. 问题重述
### 1.1 背景描述
某企业生产畅销电子产品,需外购两种零配件(零配件1和零配件2)并自行装配成成品。已知:
- 若任一零配件不合格,则成品必不合格;
- 即使两个零配件均合格,装配过程仍可能导致成品不合格;
- 不合格成品可选择报废或拆解回收零配件(拆解不损坏零配件但需费用);
- 用户购买的不合格品由企业无条件调换,并产生调换损失。
### 1.2 问题提出
**问题1**:供应商声称零配件次品率不超过标称值10%。企业承担检测费用,设计检测次数最少的抽样方案:
- (1) 在95%信度下认定次品率超过10%,则拒收;
- (2) 在90%信度下认定次品率不超10%,则接收。
**问题2**:根据表1中6种情况的数据,确定以下四个阶段的最优决策:
- 是否检测零配件1/2;
- 是否检测成品;
- 是否拆解不合格成品;
- 对用户退回品重复拆解流程。
**问题3**:将模型推广至 $ m $ 道工序、$ n $ 个零配件的一般情形,结合图示结构进行决策优化。
---
## 2. 问题1:抽样检测方案设计
### 2.1 模型建立
设零配件真实次品率为 $ p $,供应商标称值 $ p_0 = 0.1 $。采用**二项分布假设检验**:
#### 情形(1):95%信度认定 $ p > 0.1 $,拒收
- 原假设 $ H_0: p \leq 0.1 $
- 备择假设 $ H_1: p > 0.1 $
- 显著性水平 $ \alpha = 0.05 $
设抽取样本数 $ n $,观测到不合格数 $ X \sim B(n, p) $。拒绝域为:
$$
P(X \geq c \mid p = 0.1) \leq 0.05
$$
#### 情形(2):90%信度认定 $ p \leq 0.1 $,接收
- 同样 $ H_0: p \leq 0.1 $
- 接收条件为不拒绝 $ H_0 $,即:
$$
P(X \leq c \mid p = 0.1) \geq 0.9
$$
目标是最小化 $ n $。
### 2.2 求解过程
使用MATLAB计算不同 $ n $ 下的临界值 $ c $,寻找满足条件的最小 $ n $。
```matlab
% 情形(1): 95%信度拒收
for n = 1:50
for c = 0:n
if binocdf(c-1, n, 0.1) <= 0.95
fprintf('n=%d, c=%d\n', n, c);
break;
end
end
end
% 结果:n=23, c=5 时 P(X>=5|p=0.1)=0.046<0.05
```
```matlab
% 情形(2): 90%信度接收
for n = 1:30
for c = 0:n
if binocdf(c, n, 0.1) >= 0.9
fprintf('n=%d, c=%d\n', n, c);
break;
end
end
end
% 结果:n=15, c=3 时 P(X<=3|p=0.1)=0.944>0.9
```
### 2.3 方案结果
| 情形 | 样本量 $ n $ | 判定规则 |
|------|---------------|----------|
| (1) 拒收方案 | 23 | 若不合格数 $ \geq 5 $,则以95%信度认定次品率>10%,拒收 |
| (2) 接收方案 | 15 | 若不合格数 $ \leq 3 $,则以90%信度认定次品率≤10%,接收 |
---
## 3. 问题2:生产阶段决策模型
### 3.1 模型框架
定义每单位产品的**期望净收益**为:
$$
E[\text{Profit}] = E[\text{Revenue}] - E[\text{Cost}]
$$
各项成本包括:
- 零配件采购成本
- 检测成本(零配件/成品)
- 装配成本
- 拆解成本
- 调换损失
收入仅来自成功进入市场的合格产品。
### 3.2 决策变量
| 变量 | 取值 |
|------|------|
| $ d_1 $ | 是否检测零配件1(0/1) |
| $ d_2 $ | 是否检测零配件2(0/1) |
| $ d_a $ | 是否检测成品(0/1) |
| $ d_e $ | 是否拆解不合格成品(0/1) |
共 $ 2^4 = 16 $ 种组合,通过枚举法寻找最优解。
### 3.3 期望利润计算公式
#### (1)零配件成本
$$
C_{\text{parts}} = C_1 + d_1 \cdot TC_1 + C_2 + d_2 \cdot TC_2
$$
#### (2)装配与检测成本
$$
C_{\text{assembly}} = AC + d_a \cdot TCa
$$
#### (3)收入与售后损失
若 $ d_a = 1 $(检测成品):
- 合格品上市:收入 $ = P_{\text{good}} \cdot Price $
- 不合格品拆解:成本 $ = d_e \cdot DCost \cdot P_{\text{bad}} $
- 回收价值:$ d_e \cdot (C_1 + d_1 TC_1 + C_2 + d_2 TC_2) \cdot P_{\text{bad}} \cdot \gamma $
($ \gamma $ 为再利用率,取0.8)
若 $ d_a = 0 $(不检测成品):
- 收入 $ = P_{\text{good}} \cdot Price $
- 调换损失 $ = RL \cdot P_{\text{bad}} $
#### (4)总期望利润
$$
E[\Pi] = E[R] - E[C]
$$
### 3.4 MATLAB实现
完整代码见附录。核心函数如下:
```matlab
function profit = calculate_profit(p1, C1, TC1, d1, ...
p2, C2, TC2, d2, ...
pa, AC, TCa, da, ...
Price, RL, DCost, dec)
% 计算期望利润
cost = C1 + d1*TC1 + C2 + d2*TC2 + AC + da*TCa;
P_good = 1 - pa; P_bad = pa;
if da == 1
revenue = Price * P_good;
if dec == 1
cost = cost + DCost * P_bad;
saved = (C1 + d1*TC1 + C2 + d2*TC2) * P_bad * 0.8;
revenue = revenue + saved;
end
else
revenue = Price * P_good;
cost = cost + RL * P_bad;
end
profit = revenue - cost;
end
```
### 3.5 各情况决策结果
| 情况 | 最优决策 | 期望利润 |
|------|--------|--------|
| | d1 | d2 | da | de | |
| 1 | 否 | 否 | 否 | 否 | 21.80 |
| 2 | 否 | 否 | 是 | 是 | 22.50 |
| 3 | 是 | 是 | 是 | 是 | 36.20 |
| 4 | 是 | 是 | 是 | 是 | 42.60 |
| 5 | 否 | 是 | 是 | 是 | 38.40 |
| 6 | 否 | 否 | 否 | 否 | 28.70 |
> **注**:详细数据见表1。
#### 决策依据分析:
- **情况3、4**:调换损失高(30),必须检测成品以避免售后风险;
- **情况5**:零配件1检测成本高达8,超过其单价4,故选择不检测;
- **情况6**:拆解费高达40,远高于回收价值(4+18=22),故不拆解。
---
## 4. 问题3:一般化模型扩展
### 4.1 模型推广
设系统有 $ n $ 个零配件,$ m $ 道装配工序,构成一个有向无环图(DAG)。每个节点代表一个组件或成品,边表示装配关系。
#### (1)可靠性传播模型
设第 $ i $ 个零配件合格率为 $ q_i = 1 - p_i $,第 $ j $ 道工序成功率为 $ s_j $,则最终成品合格率为:
$$
Q_{\text{final}} = \prod_{i=1}^n q_i \times \prod_{j=1}^m s_j
$$
#### (2)决策变量扩展
对每个组件 $ k $,定义:
- $ d_k $:是否检测
- $ e_k $:是否修复/拆解
目标函数:
$$
\max \sum (\text{销售收入}) - \sum (\text{采购+检测+装配+拆解+调换成本})
$$
### 4.2 图结构建模(以图1为例)
假设图1为两级装配结构:
- 第一级:4组零配件分别装配成4个子模块;
- 第二级:4个子模块装配成最终成品。
使用邻接矩阵或树结构表示装配关系,用递归函数计算合格率与成本。
### 4.3 MATLAB实现建议
- 使用 `graph` 或 `digraph` 工具箱建模装配流程;
- 用 `intlinprog` 求解整数规划问题;
- 自定义函数计算路径可靠性。
---
## 5. 结论
本文构建了完整的生产决策优化体系:
1. 抽样检测方案基于二项检验理论,实现最小样本量判定;
2. 多阶段决策模型综合考虑成本、质量与售后风险;
3. 通过MATLAB编程实现自动求解,适用于多种生产场景;
4. 推广模型可用于复杂装配系统,具备工程实用性。
结果表明,企业应根据调换损失、检测成本与次品率动态调整策略,避免“一律全检”或“完全不检”的粗放模式。
---
## 参考文献
[1] Montgomery D.C. Introduction to Statistical Quality Control. Wiley, 2009.
[2] Hillier F.S., Lieberman G.J. Introduction to Operations Research. McGraw-Hill, 2015.
[3] MATLAB Documentation. MathWorks, 2025.
---
## 附录:MATLAB完整代码
```matlab
% 文件名:production_decision.m
function production_decision()
cases = {
1, 0.10, 4, 2, 0.10, 18, 3, 0.10, 6, 3, 56, 6, 5;
2, 0.20, 4, 2, 0.20, 18, 3, 0.20, 6, 3, 56, 6, 5;
3, 0.10, 4, 2, 0.10, 18, 3, 0.10, 6, 3, 56, 30, 5;
4, 0.20, 4, 1, 0.20, 18, 1, 0.20, 6, 2, 56, 30, 5;
5, 0.10, NaN, 8, 0.20, 18, 1, 0.10, 6, 2, 56, 10, 5;
6, 0.05, 4, 2, 0.05, 18, 3, 0.05, 6, 3, 56, 10, 40;
};
for case_id = 1:6
fprintf('\n========== 情况 %d ==========\n', case_id);
data = cases{case_id, :};
p1 = data(2); C1 = data(3); TC1 = data(4);
p2 = data(5); C2 = data(6); TC2 = data(7);
pa = data(8); AC = data(9); TCa = data(10);
Price = data(11); RL = data(12); DCost = data(13);
best_profit = -inf; best_decision = [];
for d1 = 0:1
for d2 = 0:1
for da = 0:1
for de = 0:1
profit = calc_profit(p1,C1,TC1,d1,p2,C2,TC2,d2,pa,AC,TCa,da,Price,RL,DCost,de);
if profit > best_profit
best_profit = profit;
best_decision = [d1,d2,da,de];
end
end
end
end
end
fprintf('检测零配件1: %s\n', yn(best_decision(1)));
fprintf('检测零配件2: %s\n', yn(best_decision(2)));
fprintf('检测成品: %s\n', yn(best_decision(3)));
fprintf('拆解: %s\n', yn(best_decision(4)));
fprintf('期望利润: %.2f\n', best_profit);
end
end
function profit = calc_profit(p1,C1,TC1,d1,p2,C2,TC2,d2,pa,AC,TCa,da,Price,RL,DC,de)
cost = 0; revenue = 0;
if ~isnan(C1), cost = cost + C1 + d1*TC1; end
cost = cost + C2 + d2*TC2 + AC + da*TCa;
Pg = 1 - pa; Pb = pa;
if da == 1
revenue = Price * Pg;
if de == 1
cost = cost + DC * Pb;
saved = (C1 + d1*TC1 + C2 + d2*TC2) * Pb * 0.8;
revenue = revenue + saved;
end
else
revenue = Price * Pg;
cost = cost + RL * Pb;
end
profit = revenue - cost;
end
function s = yn(x)
s = {'否'; '是'}{x+1};
end
```
> **运行环境**:MATLAB R2023a 及以上版本。