New Page
我们针对问题建立混合整数非线性规划(MINLP)模型,以最小化总运输费用。模型中统一使用毫米、千克、人民币为单位,必要时转换至厘米。
1. 集合与索引
- 产品单一,总件数 $ Q = 550 $,单件重 ( w_{\text{prod}} = 0.48 ) kg,尺寸 ( (d_1,d_2,d_3) = (123,294,63) ) mm,体积 ( V_{\text{prod}} = d_1 d_2 d_3 ) mm³。
- 允许的箱内产品摆放姿态 ( r \in \mathcal{R} = {1,2,3} ),对应底面分别为 ( (d_1,d_2),;(d_1,d_3),;(d_2,d_3) ),高度为剩余边。即: [ (l_r,w_r,h_r) = \begin{cases} (d_1,d_2,d_3), & r=1\ (d_1,d_3,d_2), & r=2\ (d_2,d_3,d_1), & r=3 \end{cases} ]
- 标准纸箱集合 ( \mathcal{S} = {s_1,s_2,s_3} ),其中每个 ( s ) 有固定外尺寸 ( (L_s^0,W_s^0,H_s^0) ) 及底面约束(若有)。下标 ( s_3 ) 强制以 ( L_{s_3}^0,W_{s_3}^0 ) 为底面。
- 纸箱设计方案索引 ( j \in \mathcal{J} = {1,\dots,J_{\max}} ),( J_{\max} ) 为允许的最大不同纸箱规格数量(可取自变量上界)。
2. 参数
产品
- ( w_{\text{prod}} = 0.48 ) kg
- ( d_1,d_2,d_3 ) 及 ( V_{\text{prod}} )
- ( Q = 550 )
纸箱
- 壁厚 ( t = 5 ) mm
- 纸板面积密度 ( \rho = 0.6 ) kg/m² ( = 6\times 10^{-7} ) kg/mm²
- 单箱毛重上限 ( W_{\text{box_max}} = 25 ) kg
- 硬尺寸上限:( L_{\max}=1200 ) mm,周长和上限 ( S_{\max}=3000 ) mm
- 定制箱允许标记 ( \text{custom_allowed} \in {0,1} ),若不允许则 ( =0 );额外费用 ( c_{\text{custom}} )
- 定制箱界限:最小边长 ( s_{\min}=10 ),最大边长 ( s_{\max}=1200 ),最大和 ( S_{\text{cust_max}}=3000 )
- 标准箱 ( s ) 的固定外尺寸 ( (L_s^0,W_s^0,H_s^0) ),皮重覆盖值 ( T_s^0 )(若为 null 则按面积估算),底面强制规则。
托盘
- 尺寸 ( L_{\text{pal}} = 1200,; W_{\text{pal}} = 800 ) mm,厚 ( H_{\text{pal}} = 144 ) mm,自重 ( w_{\text{pal}} = 18 ) kg
- 最大堆叠总高 ( H_{\text{stack_max}} = 1500 ) mm(含托盘),即纸箱堆高 ( \le 1356 ) mm
- 不允许超出边缘。
计费
- 体积除数 ( D = 6000 ) (单位:cm³/kg)
- 最低计费重 ( W_{\min} = 300 ) kg
- 单价 ( c_{\text{kg}} ) 元/kg
- 托盘超长附加费:每托盘必触发(120 cm > 100 cm),费用 ( c_{\text{oversize}} )(国际155/国内95)
- 纸箱超规附加费(若允许违规):每违规箱 ( c_{\text{carton_over}} )
3. 决策变量
对于每种设计 ( j \in \mathcal{J} ):
存在与数量
- ( y_j \in {0,1} ) – 是否使用该设计
- ( n_j \in \mathbb{Z}_{\ge 0} ) – 该种纸箱的数量
纸箱尺寸与类型
- ( L_j, W_j, H_j \ge 0 ) – 外尺寸(mm)
- ( \alpha_{j,s} \in {0,1} ) 对于 ( s\in\mathcal{S} ) – 是否为标准箱 ( s )
内部装载
- ( \beta_{j,r} \in {0,1} ) 对于 ( r\in\mathcal{R} ) – 选择哪种姿态
- ( a_j, b_j, c_j \in \mathbb{Z}_{\ge 1} ) – 沿箱内长、宽、高方向摆放产品件数
- ( p_j \in \mathbb{Z}_{\ge 1} ) – 每箱产品数,满足 ( p_j = a_j b_j c_j )
打托布置(同种纸箱单独打托,不混合)
- 纸箱在托盘上的竖向尺寸:( z_j ) – 由维度选择变量决定(见下)
- 水平底面尺寸:( x_j, y_j ) – 由其余两边构成
- 平面内旋转 ( \sigma_j \in {0,1} )(0: ( x_j ) 沿托盘长, ( y_j ) 沿托盘宽;1: 交换)
- 满载层每层箱数:( A_j, B_j \in \mathbb{Z}_{\ge 1} )(沿托盘长、宽方向件数),每层箱数 ( K_j = A_j B_j )
- 满载层数 ( Z_j \in \mathbb{Z}_{\ge 1} )
- 满载托盘数 ( V_j^{\text{full}} \in \mathbb{Z}_{\ge 0} )
- 部分托盘存在标记 ( \delta_j^{\text{part}} \in {0,1} )
- 部分托盘参数:( A_j^{\text{part}}, B_j^{\text{part}}, Z_j^{\text{part}} ) 且 ( 1\le A_j^{\text{part}}\le A_j ), ( 1\le B_j^{\text{part}}\le B_j ), ( 1\le Z_j^{\text{part}}\le Z_j ),每层 ( K_j^{\text{part}} = A_j^{\text{part}} B_j^{\text{part}} )
其他
- 违规标记 ( v_j \in {0,1} ) – 纸箱是否超出1200或总和≥3000(仅在允许违规时启用)
4. 辅助表达式(由变量导出)
内尺寸 [ l_j^{\text{in}} = L_j - 2t,\quad w_j^{\text{in}} = W_j - 2t,\quad h_j^{\text{in}} = H_j - 2t ]
纸箱皮重 若 ( \sum_s \alpha_{j,s}=1 ) 且标准箱 ( s ) 有指定皮重 ( T_s^0 ),则 ( T_j = T_s^0 );否则 [ S_j^{\text{area}} = 2(L_j W_j + L_j H_j + W_j H_j) \quad (\text{mm}^2) ] [ T_j = S_j^{\text{area}} \times 10^{-6} \times \rho \quad (\text{kg}) ]
单箱毛重 [ G_j = p_j \cdot w_{\text{prod}} + T_j ]
纸箱尺寸违规条件(用于定义 ( v_j )) 违规成立若:( L_j > 1200 ) 或 ( W_j > 1200 ) 或 ( H_j > 1200 ) 或 ( L_j+W_j+H_j \ge 3000 )。
纸箱竖向选择与底面约束 引入辅助二元变量 ( \gamma_{j,1},\gamma_{j,2},\gamma_{j,3} ) 表示竖向分别为 ( L_j, W_j, H_j ): [ \gamma_{j,1}+\gamma_{j,2}+\gamma_{j,3} = y_j ] [ z_j = \gamma_{j,1}L_j + \gamma_{j,2}W_j + \gamma_{j,3}H_j ] 则底面两条边由剩下两者给出。对于标准箱 ( s_3 )(底面必须为 ( L^0_{s_3},W^0_{s_3} )),若 ( \alpha_{j,s_3}=1 ) 则必须 ( \gamma_{j,3}=1 )(即高度为 ( H^0_{s_3} ))。
水平底面尺寸及排列约束 设底面两边为 ( u_j, v_j )(由 ( \gamma ) 确定)。结合旋转变量 ( \sigma_j ),托盘上的长宽方向排列满足: [ \begin{aligned} &\text{if } \sigma_j=0: & A_j &\le \left\lfloor \frac{L_{\text{pal}}}{u_j} \right\rfloor, \quad B_j \le \left\lfloor \frac{W_{\text{pal}}}{v_j} \right\rfloor \ &\text{if } \sigma_j=1: & A_j &\le \left\lfloor \frac{L_{\text{pal}}}{v_j} \right\rfloor, \quad B_j \le \left\lfloor \frac{W_{\text{pal}}}{u_j} \right\rfloor \end{aligned} ] 可写为线性不等式: [ A_j,u_j \le L_{\text{pal}} + M(1-\text{...}) ] 具体借助大 ( M ) 法与 ( \gamma,\sigma ) 关联,此处省略详细线性化展开。
部分托盘约束类似,仅将 ( A,B ) 替换为 ( A^{\text{part}},B^{\text{part}} )。
托盘高度约束 [ Z_j z_j + H_{\text{pal}} \le H_{\text{stack_max}},\qquad Z_j^{\text{part}} z_j + H_{\text{pal}} \le H_{\text{stack_max}} ]
总纸箱数量匹配 [ n_j = V_j^{\text{full}} K_j Z_j + \delta_j^{\text{part}} K_j^{\text{part}} Z_j^{\text{part}} ] 若 ( y_j=0 ) 则所有相关变量为 0;若 ( y_j=1 ) 且 ( n_j>0 ) 则 ( V_j^{\text{full}}+\delta_j^{\text{part}} \ge 1 )。
托盘总数 [ V_{\text{total}} = \sum_{j} \left( V_j^{\text{full}} + \delta_j^{\text{part}} \right) ]
5. 约束
5.1 纸箱类型一致性
[ \sum_{s\in\mathcal{S}} \alpha_{j,s} \le y_j \quad \forall j ] [ \left.\begin{aligned} \alpha_{j,s}=1 \Rightarrow & L_j = L_s^0,; W_j = W_s^0,; H_j = H_s^0 \ & \text{并满足对应底面强制规则} \end{aligned}\right} \forall s ] 若 ( y_j=1 ) 且 ( \sum_s \alpha_{j,s}=0 ),则为定制箱(需 ( \text{custom_allowed}=1 )),且有: [ s_{\min} \le L_j,W_j,H_j \le s_{\max} ] [ L_j+W_j+H_j \le S_{\text{cust_max}} ]
5.2 内部产品装载
[ \sum_{r\in\mathcal{R}} \beta_{j,r} = y_j \quad \forall j ] [ p_j = a_j b_j c_j \quad \forall j ] 对每个 ( r ) :若 ( \beta_{j,r}=1 ),则 [ a_j l_r \le l_j^{\text{in}},\quad b_j w_r \le w_j^{\text{in}},\quad c_j h_r \le h_j^{\text{in}} ]
5.3 重量限制
[ G_j \le 25 - \varepsilon \quad (\text{或 } G_j < 25) ]
5.4 空间闲置率(仅标准箱)
若 ( \sum_s \alpha_{j,s} = 1 ): [ \frac{l_j^{\text{in}} w_j^{\text{in}} h_j^{\text{in}} - p_j V_{\text{prod}}}{l_j^{\text{in}} w_j^{\text{in}} h_j^{\text{in}}} \le 0.15 ] 等价于 [ p_j V_{\text{prod}} \ge 0.85, l_j^{\text{in}} w_j^{\text{in}} h_j^{\text{in}} ]
5.5 产品总量覆盖
[ \sum_{j} n_j p_j = Q ]
5.6 纸箱硬尺寸限制与违规
若约束中 ( \text{allow_violation} = \text{false} ): [ L_j \le 1200,; W_j \le 1200,; H_j \le 1200,; L_j+W_j+H_j \le 3000 \quad \forall j ] 若 ( \text{allow_violation} = \text{true} ),则允许违背,并用 ( v_j ) 标记: [ v_j = \begin{cases} 1 & \text{若上述任一条件不成立}\ 0 & \text{否则} \end{cases} ] 可用线性约束建模。
5.7 打托完整性
所有纸箱必须完成打托,托数由上述等式确定,无遗漏。
6. 目标函数
总毛重 [ W_{\text{gross}} = \sum_{j} n_j G_j ;+; V_{\text{total}}, w_{\text{pal}} ]
总体积重量 先将各托盘高度转为厘米并求和: [ H_{\text{total_cm}} = \sum_{j} \left[ V_j^{\text{full}} \left(\frac{Z_j z_j}{10} + \frac{H_{\text{pal}}}{10}\right) + \delta_j^{\text{part}} \left(\frac{Z_j^{\text{part}} z_j}{10} + \frac{H_{\text{pal}}}{10}\right) \right] ] [ W_{\text{vol}} = \frac{120 \times 80 \times H_{\text{total_cm}}}{D} ]
计费重量 [ W_{\text{charge}} = \max\left{ W_{\text{gross}},; W_{\text{vol}},; W_{\min} \right} ]
各项费用 [ \begin{aligned} \text{运费} &= W_{\text{charge}} \times c_{\text{kg}} \ \text{超长附加费} &= c_{\text{oversize}} \times V_{\text{total}} \ \text{纸箱超规费} &= c_{\text{carton_over}} \times \sum_{j} n_j v_j \quad (\text{仅在 allow_violation=true 时}) \ \text{定制箱费} &= c_{\text{custom}} \times \sum_{j} \left[ n_j \cdot (y_j - \sum_{s}\alpha_{j,s}) \right] \end{aligned} ]
目标函数(总运费最小化) [ \min ; \left( W_{\text{charge}} \times c_{\text{kg}} + c_{\text{oversize}} V_{\text{total}} + c_{\text{carton_over}} \sum_j n_j v_j + c_{\text{custom}} \sum_j n_j (y_j - \sum_s \alpha_{j,s}) \right) ]
该模型完整描述了纸箱选择、装箱、打托及全部费用规则,在给定 config 和 constraints 参数下求解即可得全局最优方案。由于包含乘积形式的变量(如 ( p_j = a_j b_j c_j )、( K_j = A_j B_j ) 等),实际求解时可根据边界将整数变量范围限制到较小值,或借助约束规划/定制分支策略处理。