栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

奇怪但实用的2D装箱优化

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

奇怪但实用的2D装箱优化

公式

鉴于:

  • 对于每个单元格
    i = 1, ..., M
    ,(最小)宽度
    W_i
    和(最小)高度
    H_i
  • 任何堆栈的最大允许高度,
    T

我们可以制定混合整数程序,如下所示:

minimize sum { CW_k | k = 1, ..., N }with respect to    C_i in { 1, ..., N },  i = 1, ..., M    CW_k >= 0,  k = 1, ..., Nand subject to[1] sum { H_i | C_i = k } <= T,       k = 1, ..., N[2] CW_k = max { W_i | C_i = k },     k = 1, ..., N(or 0 when set is empty)

您可以选择

N
任何足够大的整数(例如
N = M
)。

算法

将此混合整数程序插入到现有的混合整数程序求解器中,以确定最佳

C_i, i = 1, ..., M
值给出的像元到列的映射。

这是您不想重塑自己的部分。 使用现有的求解器!

注意

根据混合整数程序求解程序包的表达能力,您可能会或可能无法直接应用上述公式。如果由于约束

[1]
[2]
的“基于集合”的性质而不能指定约束,则可以将其
max
手动转换为
等效的 较少声明但更具规范的表达,而无需这种表达能力:

minimize sum { CW_k | k = 1, ..., N }with respect to    C_i_k in { 0, 1 },     i = 1, ..., M; k = 1, ..., N    CW_k >= 0,  k = 1, ..., Nand subject to[1] sum { H_i * C_i_k | i = 1, ..., M } <= T,    k = 1, ..., N[2] CW_k >= W_i * C_i_k,   i = 1, ..., M; k = 1, ..., N[3] sum { C_i_k | k = 1, ..., N } = 1,i = 1, ..., M

在此关系下

C_i
,之前的变量(取值
{ 1, ..., N }
)已替换为
C_i_k
变量(取值
{ 0, 1 }
C_i = sum {C_i_k | k = 1, ..., N }

当且仅当时,最终的单元格到列的映射由

C_i_k
:单元格
i
属于列描述。
k``C_i_k = 1



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437268.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号