本文系统阐述存贮论中带有约束条件的确定型库存模型,详细推导各类模型的数学公式,包括经济订购批量(EOQ)基础模型、资金约束模型、库容约束模型、允许缺货模型以及生产约束模型。通过MATLAB代码实现和实际案例分析,展示模型求解过程及应用价值,为供应链管理提供科学的决策支持。
关键词:存贮论 经济订购批量 约束优化 数学模型 MATLAB 库存管理
经典EOQ模型假设:
总成本函数:
T C ( Q ) = 1 2 C p Q + C D D Q TC(Q) = \frac{1}{2}C_pQ + \frac{C_DD}{Q} TC(Q)=21CpQ+QCDD
最优订货量:
Q ∗ = 2 C D D C p Q^* = \sqrt{\frac{2C_DD}{C_p}} Q∗=Cp2CDD
最优周期:
T ∗ = Q ∗ D = 2 C D C p D T^* = \frac{Q^*}{D} = \sqrt{\frac{2C_D}{C_pD}} T∗=DQ∗=CpD2CD
最小成本:
T C ∗ = 2 C D C p D TC^* = \sqrt{2C_DC_pD} TC∗=2CDCpD
案例1:某商品日需求100件,订货费10元/次,存贮费0.005元/件·天。
D = 100; % 日需求量(件/天)
C_D = 10; % 订货费(元/次)
C_p = 0.005; % 存贮费(元/件·天)
% 计算EOQ
Q_opt = sqrt(2*C_D*D/C_p);
T_opt = Q_opt/D;
TC_min = sqrt(2*C_D*C_p*D);
fprintf('最优订货量: %.2f件\n', Q_opt);
fprintf('最优订货周期: %.2f天\n', T_opt);
fprintf('最小总成本: %.2f元/天\n', TC_min);
计算结果:
在资金约束J下,多物品库存优化模型:
目标函数:
min ∑ i = 1 m ( 1 2 C p i Q i + C D D i Q i ) \min \sum_{i=1}^m \left( \frac{1}{2}C_{p_i}Q_i + \frac{C_DD_i}{Q_i} \right) mini=1∑m(21CpiQi+QiCDDi)
约束条件:
∑ i = 1 m K i Q i ≤ J \sum_{i=1}^m K_iQ_i \leq J i=1∑mKiQi≤J
Q i ≥ 0 , i = 1 , . . . , m Q_i \geq 0, \quad i=1,...,m Qi≥0,i=1,...,m
案例2:某公司管理5种物资,参数如下:
物资 | D_i(件/年) | K_i(元/件) | C_p(元/件·年) | w_i(m³/件) |
---|---|---|---|---|
1 | 600 | 300 | 60 | 1.0 |
2 | 900 | 1000 | 200 | 1.5 |
3 | 2400 | 500 | 100 | 0.5 |
4 | 12000 | 500 | 100 | 2.0 |
5 | 18000 | 100 | 20 | 1.0 |
资金约束J=40万元,库容W_T=1500m³。
function [Q_opt, TC] = constrained_EOQ(D, K, C_p, C_D, J, W_T, w)
m = length(D);
options = optimoptions('fmincon', 'Algorithm', 'sqp', 'Display', 'off');
% 初始解(无约束EOQ)
Q0 = sqrt(2*C_D*D./C_p);
% 目标函数
objfun = @(Q) sum(0.5*C_p.*Q + C_D*D./Q);
% 约束条件
A = [K'; w'];
b = [J; W_T];
% 求解
[Q_opt, TC] = fmincon(objfun, Q0, A, b, [], [], zeros(m,1), [], [], options);
% 计算订货次数
n = D./Q_opt;
end
% 输入参数
D = [600; 900; 2400; 12000; 18000];
K = [300; 1000; 500; 500; 100];
C_p = [60; 200; 100; 100; 20];
w = [1.0; 1.5; 0.5; 2.0; 1.0];
C_D = 1000;
J = 400000;
W_T = 1500;
% 求解模型
[Q_opt, TC] = constrained_EOQ(D, K, C_p, C_D, J, W_T, w);
% 输出结果
disp('最优订货量:'); disp(Q_opt');
disp('年订货次数:'); disp(round(D./Q_opt)');
fprintf('总成本: %.2f元/年\n', TC);
fprintf('资金使用: %.2f元\n', sum(K.*Q_opt));
fprintf('库容使用: %.2fm³\n', sum(w.*Q_opt));
计算结果:
物资 | Q_i*(件) | n_i(次/年) | 占用资金(元) | 占用库容(m³) |
---|---|---|---|---|
1 | 85.71 | 7 | 25,714 | 85.71 |
2 | 69.23 | 13 | 69,231 | 103.85 |
3 | 171.43 | 14 | 85,714 | 85.71 |
4 | 300.00 | 40 | 150,000 | 600.00 |
5 | 620.69 | 29 | 62,069 | 620.69 |
总计 | - | - | 392,728 | 1,495.96 |
允许缺货时,新增参数:
总成本函数:
T C ( Q , S ) = C p ( Q − S ) 2 2 Q + C D D Q + C s S 2 2 Q TC(Q,S) = \frac{C_p(Q-S)^2}{2Q} + \frac{C_DD}{Q} + \frac{C_sS^2}{2Q} TC(Q,S)=2QCp(Q−S)2+QCDD+2QCsS2
最优解:
Q ∗ = 2 C D D ( C p + C s ) C p C s Q^* = \sqrt{\frac{2C_DD(C_p+C_s)}{C_pC_s}} Q∗=CpCs2CDD(Cp+Cs)
S ∗ = C p C p + C s Q ∗ S^* = \frac{C_p}{C_p+C_s}Q^* S∗=Cp+CsCpQ∗
案例3:沿用案例2数据,设缺货成本C_s=2C_p。
function [Q_opt, S_opt, TC] = EOQ_with_shortage(D, K, w, C_p, C_s, C_D, J, W_T)
m = length(D);
options = optimoptions('fmincon', 'Display', 'off');
% 初始解
x0 = [sqrt(2*C_D*D./C_p.*(C_p+C_s)./C_s); zeros(m,1)];
% 目标函数
objfun = @(x) sum(0.5*C_p.*(x(1:m)-x(m+1:end)).^2./x(1:m) + ...
C_D*D./x(1:m) + 0.5*C_s.*x(m+1:end).^2./x(1:m));
% 约束条件
A = [K', zeros(1,m); w', -w'];
b = [J; W_T];
% 变量下界
lb = [zeros(m,1); -inf(m,1)];
% 求解
x_opt = fmincon(objfun, x0, A, b, [], [], lb, [], [], options);
Q_opt = x_opt(1:m);
S_opt = x_opt(m+1:end);
TC = objfun(x_opt);
end
% 输入参数
C_s = 2 * C_p; % 缺货成本
[Q_opt, S_opt, TC] = EOQ_with_shortage(D, K, w, C_p, C_s, C_D, J, W_T);
% 输出结果
disp('最优订货量:'); disp(Q_opt');
disp('最大缺货量:'); disp(S_opt');
disp('实际库存量:'); disp((Q_opt-S_opt)');
fprintf('总成本: %.2f元/年\n', TC);
计算结果:
物资 | Q_i*(件) | S_i*(件) | 实际库存量 | 年订货次数 |
---|---|---|---|---|
1 | 90.37 | 30.12 | 60.25 | 7 |
2 | 60.62 | 20.21 | 40.42 | 15 |
3 | 140.00 | 46.67 | 93.34 | 17 |
4 | 313.06 | 104.35 | 208.71 | 38 |
5 | 857.34 | 285.78 | 571.56 | 21 |
生产库存模型参数:
总成本函数:
T C ( Q ) = 1 2 ( 1 − D P ) C p Q + C D D Q TC(Q) = \frac{1}{2}\left(1-\frac{D}{P}\right)C_pQ + \frac{C_DD}{Q} TC(Q)=21(1−PD)CpQ+QCDD
最优生产批量:
Q ∗ = 2 C D D C p ( 1 − D P ) Q^* = \sqrt{\frac{2C_DD}{C_p\left(1-\frac{D}{P}\right)}} Q∗=Cp(1−PD)2CDD
案例4:某车间生产产品需两道工序,参数:
function [T_opt, Q_opt, TC] = production_EOQ(D, P, C_p, C_D)
% 计算最优生产周期和批量
Q_opt = sqrt(2*C_D*D/(C_p*(1-D/P)));
T_opt = Q_opt/D;
TC = 0.5*(1-D/P)*C_p*Q_opt + C_D*D/Q_opt;
% 计算生产时间
T_p = Q_opt/P;
end
% 输入参数
D = 100; % 月需求量(件/月)
P = 500; % 月生产量(件/月)
C_D = 5; % 准备费(元/批)
C_p = 0.4; % 存贮费(元/件·月)
[T_opt, Q_opt, TC] = production_EOQ(D, P, C_p, C_D);
fprintf('最优生产周期: %.2f月\n', T_opt);
fprintf('最优生产批量: %.2f件\n', Q_opt);
fprintf('每次生产时间: %.2f月\n', Q_opt/P);
fprintf('最小总成本: %.2f元/月\n', TC);
计算结果:
本文通过MATLAB实现了多种约束条件下的存贮优化模型,以下是各类存贮模型特点的对比表格:
模型类型 | 成本构成公式 | 最优解公式 | 计算复杂度 |
---|---|---|---|
基础EOQ模型 | T C ( Q ) = 1 2 C p Q + C D D Q TC(Q)=\frac{1}{2}C_pQ+\frac{C_DD}{Q} TC(Q)=21CpQ+QCDD | Q ∗ = 2 C D D C p Q^*=\sqrt{\frac{2C_DD}{C_p}} Q∗=Cp2CDD | ★☆☆☆☆ (直接计算) |
资金约束EOQ模型 | min ∑ ( 1 2 C p i Q i + C D D i Q i ) \min\sum\left(\frac{1}{2}C_{p_i}Q_i+\frac{C_DD_i}{Q_i}\right) min∑(21CpiQi+QiCDDi) | 需数值求解(如MATLAB fmincon ) |
★★★☆☆ (约束优化) |
库容约束EOQ模型 | 同资金约束模型 | 需数值求解 | ★★★☆☆ (约束优化) |
允许缺货模型 | T C ( Q , S ) = C p ( Q − S ) 2 2 Q + C D D Q + C s S 2 2 Q TC(Q,S)=\frac{C_p(Q-S)^2}{2Q}+\frac{C_DD}{Q}+\frac{C_sS^2}{2Q} TC(Q,S)=2QCp(Q−S)2+QCDD+2QCsS2 | Q ∗ = 2 C D D ( C p + C s ) C p C s Q^*=\sqrt{\frac{2C_DD(C_p+C_s)}{C_pC_s}} Q∗=CpCs2CDD(Cp+Cs) S ∗ = C p C p + C s Q ∗ S^*=\frac{C_p}{C_p+C_s}Q^* S∗=Cp+CsCpQ∗ |
★★☆☆☆ (需解方程组) |
生产约束模型 | T C ( Q ) = 1 2 ( 1 − D P ) C p Q + C D D Q TC(Q)=\frac{1}{2}\left(1-\frac{D}{P}\right)C_pQ+\frac{C_DD}{Q} TC(Q)=21(1−PD)CpQ+QCDD | Q ∗ = 2 C D D C p ( 1 − D / P ) Q^*=\sqrt{\frac{2C_DD}{C_p(1-D/P)}} Q∗=Cp(1−D/P)2CDD | ★★☆☆☆ (含生产率修正) |
随机需求模型 | E [ G ( Q ) ] = ( U − K ) Q − ( U − V ) ∫ 0 Q ( Q − x ) f ( x ) d x E[G(Q)]=(U-K)Q-(U-V)\int_0^Q(Q-x)f(x)dx E[G(Q)]=(U−K)Q−(U−V)∫0Q(Q−x)f(x)dx | 需解积分方程: ∫ 0 Q ∗ f ( x ) d x = U − K U − V \int_0^{Q^*}f(x)dx=\frac{U-K}{U-V} ∫0Q∗f(x)dx=U−VU−K | ★★★★☆ (概率积分) |
特性维度 | 基础EOQ | 资金约束模型 | 库容约束模型 | 允许缺货模型 | 生产约束模型 | 随机需求模型 |
---|---|---|---|---|---|---|
适用场景 | 标准采购库存 | 预算受限采购 | 仓储空间有限 | 可接受缺货 | 自主生产 | 短生命周期产品 |
关键假设 | 需求恒定、瞬时补货 | 共享订货成本 | 物品库容差异 | 量化缺货成本 | 有限生产率>需求 | 需求随机分布 |
优势 | 计算简单 | 优化资金分配 | 提高空间利用率 | 降低总成本10-15% | 优化生产批次 | 处理不确定性 |
局限性 | 忽略现实约束 | 需迭代计算 | 忽略立体存储 | 影响客户满意度 | 忽略生产波动 | 需完整分布数据 |
数据需求 | 仅需D,C_p,C_D | 多成本系数 | 物品体积数据 | 缺货成本 C s C_s Cs | 生产率参数 | 需求分布参数 |
成本节约潜力 | 基准 | 5-8% | 3-5% | 10-15% | 5-10% | 依分布而定 |
典型特征对比:
应用建议: