【发布时间】:2017-09-05 10:29:12
【问题描述】:
我遇到了背包问题,需要通过最小化成本将一组物品中的最大数量的多个物品放入一个箱子中。我能够解决 CPLEX 中的优化问题。
但是,当问题由两个箱(容量不同)组成时,我发现在 CPLEX 中实施时遇到困难。
问题:
Bin = [B1, B2]
Capacity = [7,5]
Item = [I1, I2, I3, I4]
Weight = [6,3,1,4]
Price = [2,8,2,4]
目标是放置最大数量的物品并最小化总价。
如何在 CPLEX 中实现这个客观问题?
下面是我的代码sn-p:
// ITEMS
int n=4; // no of items
range items = 1..n; // range of items
int p[items] = [2,8,2,6]; //price
int w[items] = [6,3,1,4]; //weight
// BINS
int m=2; // no of bins
range bins=1..m; // range of bin
int capacity[bins] = [7,5]; // capacity of each bin
dvar boolean x[items][bins];
// model ; max the profit
maximize sum(i in items, j in bins) p[i]*x[i][j];
subject to {
forall (j in bins)
cons1 : sum(i in items) w[i]*x[i][j] <= capacity[j];
forall (i in items)
cons2 : sum(j in bins) x[i][j] == 1;
}
-谢谢
【问题讨论】:
标签: optimization cplex knapsack-problem