Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,59 @@
|
|||
import mip.
|
||||
|
||||
go =>
|
||||
data(Items,Value,Weight,Volume,MaxWeight,MaxVolume),
|
||||
knapsack_problem(Value,Weight,Volume,MaxWeight,MaxVolume, X,Z),
|
||||
|
||||
println(z=Z),
|
||||
println(x=X),
|
||||
N = Items.len,
|
||||
|
||||
foreach({Item,Num} in zip(Items,X), Num > 0)
|
||||
printf("Take %d of %w\n", Num,Item)
|
||||
end,
|
||||
|
||||
print("\nTotal volume: "),
|
||||
println(sum([X[I]*Volume[I] : I in 1..N])),
|
||||
|
||||
print("Total weight: "),
|
||||
println(sum([X[I]*Weight[I] : I in 1..N])),
|
||||
|
||||
print("Total cost: "),
|
||||
println(sum([X[I]*Value[I] : I in 1..N])),
|
||||
|
||||
nl.
|
||||
|
||||
knapsack_problem(Value,Weight,Volume,MaxWeight,MaxVolume, X,Z) =>
|
||||
println([max_weight=MaxWeight,max_volume=MaxVolume,z=Z]),
|
||||
N = Value.length,
|
||||
|
||||
X = new_list(N),
|
||||
X :: 0..1000,
|
||||
|
||||
Z #= sum([X[I]*Value[I] : I in 1..N]),
|
||||
|
||||
foreach(I in 1..N)
|
||||
X[I] #>= 0
|
||||
end,
|
||||
|
||||
limit(Weight, X, MaxWeight),
|
||||
limit(Volume, X, MaxVolume),
|
||||
|
||||
if var(Z) then
|
||||
println(maximize),
|
||||
solve($[glpk,max(Z)], X)
|
||||
else
|
||||
solve($[glpk], X)
|
||||
end.
|
||||
|
||||
limit(W, Take, WTMax) =>
|
||||
sum([W[I]*Take[I] : I in 1..W.length]) #<= WTMax.
|
||||
|
||||
% data
|
||||
data(Items,Value,Weight,Volume,MaxWeight,MaxVolume) =>
|
||||
Items = ["panacea","ichor","gold"],
|
||||
Value = [3000.0, 1800.0, 2500.0 ],
|
||||
Weight = [ 0.3, 0.2, 2.0 ],
|
||||
Volume = [ 0.025, 0.015, 0.002],
|
||||
MaxWeight = 25.0,
|
||||
MaxVolume = 0.25.
|
||||
Loading…
Add table
Add a link
Reference in a new issue