【发布时间】:2016-02-03 05:13:50
【问题描述】:
抱歉标题含糊不清,但设置如下:
我有一个零件清单,每个零件都有制造商、成本和利润。我将添加一个 sn-p,但这将是一个很长的列表(数十个制造商,数百个零件)。
Manufacturer Part Name Cost Profit
Cohiba Behike 54 10.95 5.05
Rocky Patel Edge 13.99 8.01
Acid Liquid 8.49 3.51
我有一个代码,它对每个唯一的制造商进行抽样,为每个制造商随机选择一个零件,然后计算总成本和利润。
ind <- sapply (unique( data$Manufacturer ) , function(x)
sample( which(data$Manufacturer==x) , 1 ) )
Sampler <- data[ ind, ]
sum(Sampler$Profit)
sum(SamplerX$Cost)
我觉得必须有一种更聪明的方法来要求它简单地找到每个制造商的一个独特零件的最佳列表,从而以最低的成本为我提供最高的利润。谁能给我一些见解?
【问题讨论】:
-
您打算如何决定选择一个零件?一种选择是始终首先选择最高的利润,然后在平局的情况下选择较低的成本。还是您有不同的启发?
-
对,对我来说,下一步是我对总成本有一个固定的预算。实际的部分并不重要,我想这部分是我希望它向我吐口水的解决方案。我试图让它告诉我哪种独特部件的组合将在我的预算范围内给我带来最大的利润。这有助于回答您的问题吗?
-
您实际上是在问两个问题,每个问题都很难回答。一旦你选择了一个算法(第一部分),那么你需要 R 代码来执行它(第二部分)。您可能想选择一种算法,然后用它更新您的问题。
-
我想我想要它做的是创建每个唯一制造商的一个零件的所有组合的排列,然后在总成本低于 X 值时找到最大利润,然后告诉我什么部分的组合是产生利润的。
-
这似乎是背包问题(离散优化)的一个实例,正如@Tim 所说,这远非微不足道。在尝试编写解决方案之前,您可能需要寻找不同的方法(算法)来解决它
标签: r mathematical-optimization knapsack-problem