优化算法问题

时间:2011-03-29 23:35:11

标签: optimization

对于那些知识渊博的人来说,这可能是一个简单的问题。但我不能自己解决这个问题。

假设我需要从中选择一些大量的对象。每个对象都有两个已知变量:成本和收益。我有预算,比如1000美元。我怎么能找出我应该购买哪些物品以最大化给定预算内的总收益?我想要一个数字优化解决方案。谢谢!

3 个答案:

答案 0 :(得分:3)

您的问题被称为“背包问题”。您可以在wikipedia page上阅读更多内容。将原始问题的命名法翻译成维基百科文章,你的问题的“成本”是背包问题的“重量”。你的问题的“好处”是背包问题的“价值”。

找到一个精确的解决方案是NP完全问题,所以如果你有很多可供选择的对象,请准备好缓慢的结果!

答案 1 :(得分:0)

您也可以查看Linear Programming。来自MathWorld:

  

简单地说,线性编程就是   基于结果的优化   在某些约束上使用a   线性数学模型。

答案 2 :(得分:0)

是的,如前所述,这是背包问题,我会选择使用线性编程。

此问题的关键是存储数据,这样您就不需要多次重新计算内容(如果有足够的内存可用)。线性编程有两种常用方法:自上而下和自下而上。这是一个自下而上的问题。

(通常)查找基本案例值,为小案例选择的最佳对象是什么。然后以此为基础。如果我们允许自己花更多的钱,那么对于那么小的金钱增量来说,最好的物品组合是什么。可能性可能会占用你以前拥有的更多东西,拿走一个新物体并更换旧物体,另外一个小物体仍然会让你低于你的预算等。

就像我说的,主要的想法是不重新计算价值。如果你遵循这种模式,你将得到一个很高的数字,并发现,为了购买价值数百美元的商品,最好的解决方案是结合两个较小的案件。