有些公司提供大型木板。这些面板被切割成所需的部件。例如,为了制作书架,他们必须从大面板上切下碎片。在大多数情况下,猪面板不是100%使用,会有一些损失,一些剩余的碎片,不能使用。因此,为了最大限度地减少损失,他们必须在大面板/面板上找到单独部件的最佳布局。我认为这被称为“二维矩形箱包装问题”。
现在它变得越来越有趣了。
并非所有面板都相同,它们的音调可能略有不同。理想的书架由一块面板或多块面板切割而成,颜色相同。但书架可以生产出不同的品质(理想的一件;一件不同的色调;两件......,三件不同的颜色板;等等......)。每种品质都有自己的价格。 (质量越高越贵)。
现在我们有一些木板库存并要求一些家具(例如100个书架)。目标是最大化利润(例如,创造一些理想质量的产品和一些质量较差的产品以保持低材料损耗)。
如何解决这个问题?如何将其与垃圾箱包装问题相结合?提示,论文/文章将不胜感激。我知道我可以通过整数线性编程来最小化/最大化一些函数和不等式,但我真的不知道如何解决这个问题。
(请不要考虑真实的场景,例如,最好只创造理想的场景......想象一下,剩余材料的损失是每平方厘米X币,Y是特定产品的价格质量和X和Y可以“任意”)
答案 0 :(得分:2)
我可以了解这些问题是如何解决的以及为什么你的问题特别困难。
在典型的优化问题中,您希望相对于设定数量的变量(例如,长度)最大化或最小化函数(例如,能量)。例如,弹簧应该多长时间以最小化储存的能量。答案只是一个数字,即弹簧的平衡长度。另一个例子是“我们应该以什么价格设定我们的产品以实现利润最大化?” (太贵了,没有人会买任何东西;太便宜而且你不会支付你的费用。)同样,答案只是一个数字,最优价格。像这样的优化是用普通的微积分来处理的。
更困难的优化问题是答案不是数字,而是函数,如形状。一个例子是:悬挂链的形状是什么,以便最小化其重力势能。或者:为了最大化利润,我们应该从这些板块中切出什么形状?使用变分微积分解决了这类问题,这非常困难。
无论如何,在以数字方式解决优化问题时,需要遵循几个基本步骤。首先,你必须定义一个函数,例如你希望最大化某些变量'cut'的利润(cut,params),其他参数'params'是固定的。 'params'存储的信息包括您拥有的木材数量和类型,以及不同类型家具的价值。
第二步是猜测最好的削减,我们称之为cut_guess。为了做到这一点,你需要提出一个算法,建议你可以使用你拥有的物品实际制作一套家具。例如,如果您可以从每个板上制作至少一个书架,那么这可能是您最初使用木材的最佳方法。
第三阶段是优化。对于初始化,设置cuts_best = cuts_guess和profit_best = profit_guess = profit(cuts_guess,params)。然后,您需要(算法)对“削减”进行小的伪随机更改,并检查利润是增加还是减少。记录您找到的最佳切割集以及相应的利润。通常最好是有一些随机性,以便探索最大数量的可能性,而不是“陷入”糟糕的选择。如果你查看“蒙特卡罗算法”,你会找到这样的例子。
无论如何,对你的问题来说,这一切都很困难。如何对变量(例如长度)进行猜测,然后如何改变猜测(例如,增加或减少一点长度)很容易。如何对板子上的切口进行“猜测”,或者如何进行小的改变,这一点并不明显。