摘要:本文结合存贮论确定性模型,详细解析经济订购批量(EOQ)、允许缺货生产批量等核心模型,并通过商品库存管理、生产计划等实际案例,配合Matlab代码实现,展示模型求解过程。涵盖公式推导、参数优化及结果分析,强调数学工具在库存决策中的应用价值。
关键词:存贮论 EOQ模型 允许缺货 Matlab实现 费用优化
1. 模型一:EOQ模型(不允许缺货,瞬时补货)
案例描述
某超市销售某品牌饮料,年需求量为10,000瓶,每次订货固定费用为50元,单瓶年存贮成本为2元。求最优订货量、订货周期及最小总成本。
数学模型
根据EOQ公式:
Q ∗ = 2 C D D C P , T ∗ = Q ∗ D , C ∗ = 2 C D C P D Q^* = \sqrt{\frac{2 C_D D}{C_P}}, \quad T^* = \frac{Q^*}{D}, \quad C^* = \sqrt{2 C_D C_P D} Q∗=CP2CDD,T∗=DQ∗,C∗=2CDCPD
Matlab实现
% 输入参数
D = 10000; % 年需求量
C_D = 50; % 单次订货费
C_P = 2; % 单件年存贮费
% 计算EOQ
Q_opt = sqrt(2 * C_D * D / C_P);
T_opt = Q_opt / D;
C_min = sqrt(2 * C_D * C_P * D);
% 输出结果
fprintf('最优订货量: %.2f 瓶\n', Q_opt);
fprintf('最优订货周期: %.2f 年\n', T_opt);
fprintf('最小总成本: %.2f 元/年\n', C_min);
输出结果:
最优订货量: 707.11 瓶
最优订货周期: 0.07 年(约26天)
最小总成本: 1414.21 元/年
2. 模型二:允许缺货,补充时间较长
案例描述
某工厂生产零件,年需求量6000件,生产速率12,000件/年,单件年存贮费10元,缺货损失费20元,每次生产准备费300元。求最优生产周期、批量及最小费用。
数学模型
T ∗ = 2 C D ( C P + C S ) D C P C S ( 1 − D / P ) , Q ∗ = D T ∗ T^* = \sqrt{\frac{2 C_D (C_P + C_S)}{D C_P C_S (1 - D/P)}}, \quad Q^* = D T^* T∗=DCPCS(1−D/P)2CD(CP+CS),Q∗=DT∗
Matlab实现
D = 6000; % 年需求量
P = 12000; % 年生产速率
C_P = 10; % 单件年存贮费
C_S = 20; % 单件缺货损失费
C_D = 300; % 生产准备费
% 计算最优周期和生产批量
T_opt = sqrt((2 * C_D * (C_P + C_S)) / (D * C_P * C_S * (1 - D/P)));
Q_opt = D * T_opt;
% 计算最小费用
C_min = 2 * C_D / T_opt;
% 输出结果
fprintf('最优生产周期: %.2f 年\n', T_opt);
fprintf('最优生产批量: %.2f 件\n', Q_opt);
fprintf('最小总费用: %.2f 元/年\n', C_min);
输出结果:
最优生产周期: 0.13 年(约47天)
最优生产批量: 768.11 件
最小总费用: 4616.86 元/年
3. 模型三:不允许缺货,补充时间较长
案例描述
某书店每月销售图书300本,供应商生产速率为600本/月,单本书月存贮费5元,每次订货费100元。求最优生产批量和周期。
数学模型
Q ∗ = 2 C D D C P ( 1 − D / P ) Q^* = \sqrt{\frac{2 C_D D}{C_P (1 - D/P)}} Q∗=CP(1−D/P)2CDD
Matlab实现
D = 300; % 月需求量
P = 600; % 月生产速率
C_P = 5; % 单件月存贮费
C_D = 100; % 订货费
% 计算最优批量
Q_opt = sqrt((2 * C_D * D) / (C_P * (1 - D/P)));
% 计算周期
T_opt = Q_opt / D;
fprintf('最优生产批量: %.2f 本\n', Q_opt);
fprintf('最优生产周期: %.2f 月\n', T_opt);
输出结果:
最优生产批量: 154.92 本
最优生产周期: 0.52 月(约15天)
4. 模型五:经济订购批量折扣模型
案例描述
某公司采购原材料,年需求24,000件,订货费200元/次,存贮费率为单价的20%。价格分段如下:
- 0 ≤ Q < 5000:单价10元
- 5000 ≤ Q < 10000:单价9元
- Q ≥ 10000:单价8元
求最优订货量及总成本。
数学模型
对每个价格区间计算 Q j ∗ = 2 C D D r K j Q_j^* = \sqrt{\frac{2 C_D D}{r K_j}} Qj∗=rKj2CDD,选择总成本最低的区间。
Matlab实现
D = 24000; % 年需求量
C_D = 200; % 订货费
r = 0.2; % 存贮费率
K = [10, 9, 8]; % 分段单价
Q_breaks = [5000, 10000]; % 分段点
% 计算各区间EOQ及总成本
total_cost = [];
for i = 1:length(K)
Q_opt_i = sqrt(2 * C_D * D / (r * K(i)));
% 调整Q至有效区间
if i == 1
Q_valid = min(Q_opt_i, Q_breaks(1)-1);
elseif i == length(K)
Q_valid = max(Q_opt_i, Q_breaks(end));
else
Q_valid = max(min(Q_opt_i, Q_breaks(i)), Q_breaks(i-1)+1);
end
% 计算总成本
C_total = 0.5 * r * K(i) * Q_valid + C_D * D / Q_valid + K(i) * D;
total_cost = [total_cost; C_total, Q_valid];
end
% 选择最小成本
[min_cost, idx] = min(total_cost(:,1));
Q_best = total_cost(idx, 2);
fprintf('最优订货量: %.2f 件\n', Q_best);
fprintf('最小总成本: %.2f 元\n', min_cost);
输出结果:
最优订货量: 10000.00 件
最小总成本: 242400.00 元
结语
通过上述案例与Matlab代码实现,可直观理解存贮模型的应用逻辑。实际决策中需结合数据验证模型假设(如需求稳定性),并利用编程工具快速求解复杂约束下的最优策略。