FileInstance: Make interface simpler to use

This commit is contained in:
2022-09-07 10:16:39 -05:00
parent 9b3a0da5f7
commit 5618330793
6 changed files with 266 additions and 216 deletions

View File

@@ -9,33 +9,33 @@ using Cbc
@testset "FileInstance" begin
@testset "Solve (knapsack)" begin
data = KnapsackData()
filename = tempname()
MIPLearn.save_data(filename, data)
instance = FileInstance(filename, build_knapsack_model)
basename = tempname()
MIPLearn.save_data("$basename.jld2", data)
instance = FileInstance("$basename.jld2", build_knapsack_model)
solver = LearningSolver(Cbc.Optimizer)
solve!(solver, instance)
h5 = Hdf5Sample("$filename.h5")
h5 = Hdf5Sample("$basename.h5")
@test h5.get_scalar("mip_wallclock_time") > 0
end
@testset "Solve (vpm2)" begin
@testset "Solve (danoint)" begin
data = Dict("filename" => joinpath(@__DIR__, "../fixtures/danoint.mps.gz"))
build_model(data) = read_from_file(data["filename"])
filename = tempname()
MIPLearn.save_data(filename, data)
instance = FileInstance(filename, build_model)
basename = tempname()
MIPLearn.save_data("$basename.jld2", data)
instance = FileInstance("$basename.jld2", build_model)
solver = LearningSolver(optimizer_with_attributes(Cbc.Optimizer, "seconds" => 1.0))
solve!(solver, instance)
h5 = Hdf5Sample("$filename.h5")
h5 = Hdf5Sample("$basename.h5")
@test h5.get_scalar("mip_wallclock_time") > 0
end
@testset "Save and load data" begin
filename = tempname()
data = KnapsackData(
weights = [5.0, 5.0, 5.0],
prices = [1.0, 1.0, 1.0],
capacity = 3.0,
weights=[5.0, 5.0, 5.0],
prices=[1.0, 1.0, 1.0],
capacity=3.0,
)
MIPLearn.save_data(filename, data)
loaded = MIPLearn.load_data(filename)

View File

@@ -51,12 +51,12 @@ end
@testset "FileInstance" begin
data = nothing
filename = tempname()
MIPLearn.save_data(filename, data)
instance = FileInstance(filename, build_model)
basename = tempname()
MIPLearn.save_data("$basename.jld2", data)
instance = FileInstance("$basename.jld2", build_model)
solver = LearningSolver(Cbc.Optimizer)
solve!(solver, instance)
h5 = MIPLearn.Hdf5Sample("$filename.h5")
h5 = MIPLearn.Hdf5Sample("$basename.h5")
@test h5.get_array("mip_var_values") == [1.0, 0.0]
end
end