KnapSack的变种

时间:2015-09-16 08:36:18

标签: algorithm linear-programming

考虑背包问题的问题定义。给定一组S对象 - 每个对象都有与之相关的利润和权重,我必须找到S的子集T,这给了我最大的利润,但总权重小于或等于常数W.现在考虑一个额外约束。在上述问题中,一个对象的利润独立于另一个对象。假设我说它们是相互依赖的,比如对于两个对象i和j我是一个因子0< = S_ij< = 1。此因素会以最小的利润减少项目的影响。有效地

g++ -shared projectionWrapper.o -L./build/base -L./build/interface -loriginterface -lorigbase -Wl,-soname,libproj.so -o libproj.so

这保持了最大(利润(i),利润(j))和利润(i)+利润(j)之间的有效总和 - > “至少和最好的一样好,但不如同时使用两者一样好”。现在我想把它扩展为n> 2。这是背包的某些变化的标准问题吗?我可以为此制定LP(?)或NLP吗?

更新

集合T是S的严格子集。因此,您只能使用S中的对象(如果S中存在重复项,则使用重复项。)

至于目标函数,我仍然不确定如何去做。考虑到它们之间的相互作用,我已经计算了2个物件袋的分数。现在我想将它扩展到超过2个对象,我不知道该怎么做。字母'n'是麻袋的大小。对于n = 2,我已经定义了一种计算麻袋总利润的方法,但是对于n> 2,我不太清楚。

0 个答案:

没有答案