Je suis tombé sur un problème de sac à dos, où le nombre maximum d'éléments multiples d'un ensemble d'articles doit être placé dans un seul bac en minimisant le coût. Je suis capable de résoudre le problème d'optimisation dans CPLEX.Sac à dos multi-capacités dans CPLEX
Cependant, je trouve des difficultés à mettre en œuvre dans CPLEX, lorsque le problème consiste en deux casiers (avec des capacités différentes).
Le problème:
Bin = [B1, B2]
Capacity = [7,5]
Item = [I1, I2, I3, I4]
Weight = [6,3,1,4]
Price = [2,8,2,4]
L'objectif est de placer le nombre maximum d'éléments et de réduire au minimum le prix total. Comment est-ce que je peux implémenter ce problème d'objectif dans CPLEX?
Ci-dessous est mon extrait de code:
// 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;
}
-Merci
Merci, monsieur Alex. À la première place, je n'ai pas tenu compte du fait que nous devons avoir une capacité totale suffisante pour s'adapter à tous les articles. –