如何使用 CPLEX 解决背包问题?

问题描述

有人可以帮助我解决这个问题的代码。 问题要我通过用以下数据填充 10 磅的背包来最大化总收益pic

解决方法

在 OPL CPLEX 中,您可以编写

tuple t
{
  key int itemNbr;
  float weight;
  float benefit;
}

{t} items=
{
  <1,4,11>,<2,3,7>,<3,5,12>
};

int knapsacksize=10;

dvar boolean take[items];

maximize sum(i in items) i.benefit*take[i];

subject to
{
  sum(i in items) i.weight*take[i]<=knapsacksize;
}

给出

take = [1 0 1];