Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,46 @@
|
|||
go =>
|
||||
items(Items),
|
||||
weights(Weights),
|
||||
values(Values),
|
||||
knapsack_max_weight(MaxWeight),
|
||||
|
||||
knapsack(Weights,Values,MaxWeight, X,TotalWeight,TotalValue),
|
||||
nl,
|
||||
|
||||
printf("Total weight: %0.2f Total value: %0.2f\n", TotalWeight,TotalValue),
|
||||
foreach(I in 1..Items.len)
|
||||
if X[I] > 0.0 then
|
||||
printf("%-8w: ",Items[I]),
|
||||
if X[I] == Weights[I] then
|
||||
printf("%0.2f (%w)", Weights[I], all)
|
||||
else
|
||||
printf("%-0.2f",X[I])
|
||||
end,
|
||||
nl
|
||||
end
|
||||
end,
|
||||
nl.
|
||||
|
||||
knapsack(Weights,Values,MaxWeight, X,TotalWeight,TotalValue) =>
|
||||
N = Weights.len,
|
||||
|
||||
X = new_list(N),
|
||||
X :: 0.0..max(Weights),
|
||||
|
||||
TotalWeight #= sum(X),
|
||||
TotalWeight #<= MaxWeight,
|
||||
foreach(I in 1..N)
|
||||
X[I] #<= Weights[I]
|
||||
end,
|
||||
|
||||
WeightsInv = [1/Weights[I] : I in 1..N],
|
||||
TotalValue #= sum([X[I]*Values[I]*WeightsInv[I] : I in 1..N]),
|
||||
|
||||
Vars = X ++ [TotalWeight],
|
||||
solve($[glpk,max(TotalValue)],Vars).
|
||||
|
||||
% data
|
||||
knapsack_max_weight(15.0).
|
||||
items([beef,pork,ham,greaves,flitch,brawn,welt,salami,sausage]).
|
||||
weights([3.8,5.4,3.6,2.4,4.0,2.5,3.7,3.0,5.9]).
|
||||
values([36,43,90,45,30,56,67,95,98]).
|
||||
Loading…
Add table
Add a link
Reference in a new issue