21 lines
373 B
Prolog
21 lines
373 B
Prolog
:-lib(fd).
|
|
:-lib(fd_global).
|
|
:-lib(branch_and_bound).
|
|
|
|
knapsack(P, W, C, T, V) :-
|
|
length(P, N),
|
|
length(V, N),
|
|
minlist(W, Min),
|
|
D is C // Min,
|
|
V::0..D,
|
|
C #>= W*V,
|
|
T #= P*V,
|
|
sumlist(V, S),
|
|
O #= (-1)*T,
|
|
Negs #= (-1)*T,
|
|
bb_min(labeling(V), O, V, _, _, _),
|
|
bb_min(labeling(V), Negs, _).
|
|
|
|
test(P, V):-
|
|
knapsack([60, 100, 120], [15, 20, 30], 325, P, V).
|