我正在开发一款能够估算我的业务建筑材料的应用。我现在正在处理的部分专门处理窗户周围的装饰。
解释这个的最好方法是举个例子:
购买窗户装饰的长度为14英尺(168英寸)。假设我有5个不同大小的矩形窗户,每个窗户都由4个装饰件组成(顶部和底部,左右两侧)。我正在尝试构建一种算法,以确定以最少的浪费来削减这些碎片的最佳方法。
我已经研究过使用排列来计算每一个可能的结果并跟踪浪费,但是一旦我超过了数万个窗口(20个不同的修剪),超过数万亿的排列数量。
有没有人对我如何做到这一点有任何见解。
感谢。
答案 0 :(得分:1)
您正在查看cutting stock problem的典型案例。
我发现this lecture from the University of North Carolina (pdf)相当清楚。更倾向于实施,通过一个示例贯穿始终,并且几乎没有要求 - 可能只是查找一些缩写词。但是如果你想要更多细节并且速度相当慢,那么这个主题也有2 hours of video lectures from the university of Madras。
它依赖于多次解决the knapsack problem,如果您不想经历第二次线性优化问题,可以抓取directly from Rosetta Code。
简而言之,您想要选择一些方法(每种长度的多少件)来切割库存(在您的情况下是窗饰),以及每种方式使用多少次。
你从一个简单的集合开始:对于你需要的每个长度,使用这个尺寸进行切割。然后迭代:背包问题提供了从当前配置中减少库存的最不利方法,然后单纯形法通过旋转从您的一组切割库存中“移除”这种组合。
答案 1 :(得分:-2)