繁体   English   中英

寻找产品最佳使用的算法

[英]Algorithm for finding optimal use of products

我正在尝试解决 Javascript 中的问题,以优化使用地板产品的区域。 我要么实现这个,要么在 Javascript 中寻找算法。 以下是问题:

考虑到我销售宽度尺寸为 12、13 和 15 英尺的卷状地毯。长度可以是任何尺寸(因为它是卷状的)。

假设我有 3 个房间:

  • 25 x 10(走廊)
  • 30 x 30(大房间)
  • 5 x 5(壁橱)

如何根据可用的尺寸选项确定要使用的最小产品量? 我还想确保重新使用任何浪费的削减。 对于较大的房间,最好有接缝来连接卷材。 例如:在走廊里,我可以使用 15 英尺宽的产品,我将剩下 10 英尺的卷。 我可以用它来填满壁橱。

目标是找到最适合废物再利用的产品。

对于一个宽大的房间,从我们最大的卷开始:

宽度 / 15 英尺的 integer,k15 给出了 15 英尺宽的长度数。

获得剩余宽度 = 宽度 - 15 英尺 x k15。

剩余宽度 / 13 英尺的 integer,k13 给出了 13 英尺宽的长度数。

获取下一个剩余宽度” = 剩余宽度 - 13 英尺 x k13。

integer, k12, 剩余宽度”/12 英尺给出了 12 英尺宽的长度。

假设您永远不会拥有这三种尺寸的任意组合的 integer 的房间,那么您将始终有边角料。

我认为,区域优化和 polgon 几何是两个极其复杂的领域,但我希望我已经在一定程度上至少定义了你的问题。

对于 12 英尺、13 英尺和 15 英尺三种地毯宽度:

假设三个房间,地毯卷无限长,确定最有效使用的算法是:

给每个房间一个尺寸:x0" & x1" 用于房间一,y0" & y1" 用于房间二,z0" & z1" 用于房间三。

对该列表进行排序,使每个房间的最小维度首先写入,并且具有最大“较小”维度的房间也首先写入。

如果 x1" > x0",写成:(x0", x1") => (x0', x1') 如果 y1" > y0",写成:(y0", y1") => (y0', y1 ')
如果 z1" > z0",写成: (z0", z1") => (z0', z1')

和:

如果 z0' > x0' > y0' 然后写 => (x0, x1), (y0, y1) & (z0, z1)

给定这个有序集合,从最大的房间 X 开始,其较小的维度为 x0,较大的为 x1。

得到第二大房间,Y。

我们现在需要找到如何在房间 X 中铺设地毯,以便 OFFCUT 将房间 Y 填满一个或多个长度。

我们需要在我们的三个宽度之间进行选择,以便“切边将与房间 Y 一样宽”。

如果 x0 是 30,y0 是 10,那么 12 英尺 + 13 英尺 + 15 英尺给了我们 30 英尺和 10 英尺的备用空间,可以在房间 Y 中使用。

Z房间也是如此。

问题解决了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM