Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 组合优化-创造家具时实现利润最大化_Algorithm_Optimization_Combinatorics - Fatal编程技术网

Algorithm 组合优化-创造家具时实现利润最大化

Algorithm 组合优化-创造家具时实现利润最大化,algorithm,optimization,combinatorics,Algorithm,Optimization,Combinatorics,有些公司供应大木板。这些面板被切割成所需的碎片。例如,为了制作书架,他们必须从大的面板上剪下几块。在大多数情况下,清管器面板未100%使用,会有一些损耗,一些剩余件无法使用。因此,为了最大限度地减少损失,他们必须在大面板上找到单独部件的最佳布局。我认为这就是所谓的“二维矩形装箱问题” 现在越来越有趣了 并非所有面板都相同,它们的色调可能略有不同。理想的书架是由一块或多块相同色调的面板切割而成。但书架可以有不同的质量(理想的一个;一个不同色调的书架;两个不同的书架…,使用三种不同颜色的书架等等)。

有些公司供应大木板。这些面板被切割成所需的碎片。例如,为了制作书架,他们必须从大的面板上剪下几块。在大多数情况下,清管器面板未100%使用,会有一些损耗,一些剩余件无法使用。因此,为了最大限度地减少损失,他们必须在大面板上找到单独部件的最佳布局。我认为这就是所谓的“二维矩形装箱问题”

现在越来越有趣了

并非所有面板都相同,它们的色调可能略有不同。理想的书架是由一块或多块相同色调的面板切割而成。但书架可以有不同的质量(理想的一个;一个不同色调的书架;两个不同的书架…,使用三种不同颜色的书架等等)。每种质量都有自己的价格。(质量越高,价格越贵)

现在我们有一些木制面板库存,并要求购买一些家具(例如100个书架)。目标是实现利润最大化(例如,创建一些质量理想的产品,一些质量较差的产品,以保持低材料损耗)

如何解决这个问题?如何将其与装箱问题结合起来?和提示,论文/文章将不胜感激。我知道我可以用整数线性规划最小化/最大化一些函数和不等式,但我真的不知道如何解决这个问题


(请不要考虑真正的风景),例如,最好是只创造理想的。想象一下,剩下的材料的损失是每厘米2的X钱,Y是特定产品质量的价格,X和Y可以是“任意的”。

我可以告诉你如何解决这些问题,以及为什么你的问题特别困难

在一个典型的优化问题中,你想要最大化或最小化一个函数(例如能量)相对于一组变量(例如长度)。例如,为了使储存的能量最小化,弹簧应该有多长。答案只是一个数字,弹簧的平衡长度。另一个例子是“我们应该为产品设定什么样的价格以实现利润最大化?”(太贵了,没有人会买任何东西;太便宜了,你无法支付成本。)同样,答案只是一个数字,即最优价格。像这样的优化是用普通的微积分来处理的

一个更困难的优化问题是,答案不是数字,而是一个函数,比如形状。一个例子是:为了使其重力势能最小化,一条悬挂链将形成什么形状。或者:为了利润最大化,我们应该从这些板上切下什么形状?这类问题是用变分法来解决的,这是非常困难的

在任何情况下,当以数值方式解决优化问题时,有几个基本步骤需要遵循。首先,您必须定义一个函数,例如利润(cuts,params),您希望最大化某些变量“cuts”,而其他参数“params”是固定的params存储的信息包括木材的数量和类型,以及不同类型家具的价值

第二步是猜测出最佳切割集,我们称之为切割猜测。为了做到这一点,你需要想出一个算法,它将建议一套家具,你实际上可以使用你所拥有的用品。例如,如果你能用每块木板至少制作一个书架,那么这可能是你对使用木材的最佳方式的初步猜测

第三阶段是优化。对于初始化,设置cuts\u best=cuts\u guess和profit\u best=profit\u guess=profit(cuts\u guess,参数)。然后你需要(一个算法)对“削减”进行小的伪随机更改,并检查利润是增加还是减少。记录你发现的最佳削减方案,以及相应的利润。通常情况下,最好是有一些随机性,以探索最大数量的可能性,而不是陷入一个糟糕的选择。如果你查阅“蒙特卡罗算法”,你会发现这样的例子


无论如何,所有这些对你的问题来说都是非常困难的。如何猜测一个变量(例如长度)很容易,然后如何更改该猜测(例如稍微增加或减少长度)。如何“猜测”如何在电路板上放置切口,或如何进行小改动,一点也不明显。

这似乎类似于混合利润最大化问题。如果可能的话,你可能需要一个MIP来彻底解决它;否则,我认为你将需要启发式来获得近似解。该解取决于你可以向消费者收取的每种类型的价格。经济学中涵盖了这类问题,首先是介绍