algorithm - How to assign N numbers into M pack that minimize some target function? -
i have n(for example 30) integer numbers v[i], , m(for example 8) packs, each pack have expected value p[j].
i want assign each integer number 1 pack, following expression calculate difference between sum of v[k] in pack j , expected value of pack j.
diff[j] = abs(p[j] - sum(v[k] in pack j)) the target find best solution minimize sum(diff[j]).
i don't know what's type of kind of problem. can solved linear programming, or np-complete problem?
regardless of whether np-hard or not, may able efficiently solve problem problem instances need using accessible integer programming software. problem, define x_{ij} define if x[i] assigned group j. define variables d_j, diff[j] in formulation. model is:
min_{x, d} \sum_{j=1}^m d_j s.t. d_j >= p[j] - \sum_{i=1}^n x[i]x_{ij} \forall j d_j >= \sum_{i=1}^n x[i]x_{ij} - p[j] \forall j \sum_{j=1}^m x_ij = 1 \forall x_{ij}\in \{0, 1\} this mixed integer optimization model, can solved, instance, using lpsolve or lpsolveapi packages in r or intlinprog function in matlab.
Comments
Post a Comment