Algorithm LP建模问题。。。很久没上学了

Algorithm LP建模问题。。。很久没上学了,algorithm,math,linear-programming,Algorithm,Math,Linear Programming,当然,这本身不是一个编程问题。。。但我想不出比这更好的地方了 我正在编写一个应用程序,最终将帮助购物者确定如何在特定网站上实现最大的节约。该网站为几乎每种产品提供两种价格——常规价格和折扣价格。任何人都可以获得折扣价格,但任何给定订单只能添加一个折扣项目。有了这些信息,你的动机就是尽量减少你的订单数量,而不是下多个订单。另一方面,总的运输成本是由订单大小(按重量)决定的,因此存在最大化订单大小和只下一个订单的动机 我正在寻找一个模型,以确定最有效的方式来平衡订单,考虑到一个项目的可用折扣和影响订

当然,这本身不是一个编程问题。。。但我想不出比这更好的地方了

我正在编写一个应用程序,最终将帮助购物者确定如何在特定网站上实现最大的节约。该网站为几乎每种产品提供两种价格——常规价格和折扣价格。任何人都可以获得折扣价格,但任何给定订单只能添加一个折扣项目。有了这些信息,你的动机就是尽量减少你的订单数量,而不是下多个订单。另一方面,总的运输成本是由订单大小(按重量)决定的,因此存在最大化订单大小和只下一个订单的动机

我正在寻找一个模型,以确定最有效的方式来平衡订单,考虑到一个项目的可用折扣和影响订单运输成本的重量

我记得回到学校时,我认为这是一个线性规划问题。。。但我所能记得的关于那门课的一切是多么令人困惑


有没有人对如何进行这个程序的数学运算有什么建议?

这不是常规线性规划,这是整数线性规划。前者是可解的O(n²),后者是NP难的


分支定界算法的一些变体应该适用于您的程序。如果您不想自己实现它,可用的库包括GLPK、COIN-OR和CPLEX。

根据我上面的评论,这个问题在很大程度上取决于运输成本的精确结构。假设运输成本与(潜在的)非零常数项成线性关系。也就是说,运输成本=C+Rw,其中C和R是常数,w是订单的重量。然后,结果证明,最优解决方案很简单:将折扣小于C的每一个项目分组为一个订单,并分别订购折扣大于C的每一个项目(留给读者作为练习)。在C=0的退化情况下,您只需为每个项目单独下订单

另一方面,如果运输成本具有更多的阈值结构——例如,如果运输的重量小于B,则成本为C1,但如果运输成本大于B,则成本为C2——这种情况成为NP完全装箱问题的一种形式。我应该注意到,仅仅因为一个情况被塑造成一个NP完全问题,你不应该马上放弃希望。对于许多实际情况,存在良好的启发式方法,并且完全可能现实世界输入的范围将问题限制在可管理的实例中


在现实生活中,运输成本很可能是一系列不同事物的组合(例如:可能是分段线性不连续),这使得建模问题变得更加困难。但是,我希望我已经证明,为了了解您的问题,清楚了解这些成本的结构是至关重要的。

运输成本如何随重量变化?这很可能不是LP问题。你应该考虑把标题和标签换成更具体的东西。这个问题的定义很大程度上取决于运输的结构。如果运输成本仅仅与重量成正比,那么就没有问题:只下一项订单。省略运输成本结构使这个问题无法评估。在NP难的一般情况下,整数规划-这并不意味着这个问题是(尽管我相信是)@BlueRaja:是的。但问题相当复杂,我既看不到允许LP公式的宽松版本,也看不到专门的算法。好的,谢谢u2。我认为这可能是一个相当简单的问题,我只是需要一个复习来看看答案,但现在我看到它比那更复杂。它甚至比我设置的场景更复杂(我一直在简化它)。我将从另一个角度来处理它。谢谢你的帮助。