0-1背包带分区约束

时间:2012-02-04 19:37:42

标签: algorithm optimization dynamic-programming knapsack-problem

我有一个问题,表面看起来像0-1背包。我有一组可以选择(或不选择)的可能“候选人”,每个候选人都有“权重”(成本)和潜在的“价值”。如果这是整个问题,我会使用DP方法并完成它。但这里是曲线球:对最终解决方案中可能存在的候选者存在“分区约束”。

我的意思是候选空间被分成不连续的等价类。对于我的特殊问题,大约有300个候选人和12个可能的等同类。有“商业规则”说我只能说C1级的3名候选人和C2级的6名候选人等。

这个约束建议使用分支定界技术或其他形式的修剪的图搜索类型方法,但是我有点难以理解如何开始,因为我只熟悉0-1背包的DP解决方案。哪些技术/方法可能适合这个问题?我还想过可能使用约束编程库,但我不确定它是否能够找到解决方案?

1 个答案:

答案 0 :(得分:1)

您可以尝试整数线性规划求解器,其中有一个二元变量用于选择每个候选。约束很容易表示为线性不等式。使用300个变量,求解器解决它时不会有太多麻烦。

最简单的方法可能是以CPLEX LP format等文本格式编写问题,然后使用Coin CBC或GLPK等求解器。