You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.7 KiB
47 lines
1.7 KiB
# MIPLearn: Extensible Framework for Learning-Enhanced Mixed-Integer Optimization
|
|
# Copyright (C) 2020-2021, UChicago Argonne, LLC. All rights reserved.
|
|
# Released under the modified BSD license. See COPYING.md for more details.
|
|
|
|
using JuMP
|
|
using MIPLearn
|
|
using Cbc
|
|
|
|
@testset "FileInstance" begin
|
|
@testset "Solve (knapsack)" begin
|
|
data = KnapsackData()
|
|
basename = tempname()
|
|
MIPLearn.save_data("$basename.jld2", data)
|
|
instance = FileInstance("$basename.jld2", build_knapsack_model)
|
|
solver = LearningSolver(Cbc.Optimizer)
|
|
solve!(solver, instance)
|
|
h5 = Hdf5Sample("$basename.h5")
|
|
@test h5.get_scalar("mip_wallclock_time") > 0
|
|
end
|
|
|
|
@testset "Solve (danoint)" begin
|
|
data = Dict("filename" => joinpath(@__DIR__, "../fixtures/danoint.mps.gz"))
|
|
build_model(data) = read_from_file(data["filename"])
|
|
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("$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,
|
|
)
|
|
MIPLearn.save_data(filename, data)
|
|
loaded = MIPLearn.load_data(filename)
|
|
@test loaded.weights == [5.0, 5.0, 5.0]
|
|
@test loaded.prices == [1.0, 1.0, 1.0]
|
|
@test loaded.capacity == 3.0
|
|
end
|
|
end
|