Partial implementation of parallel_solve

This commit is contained in:
2021-05-25 11:23:24 -05:00
parent e72831039c
commit 98024dea95
9 changed files with 100 additions and 44 deletions

View File

@@ -2,18 +2,21 @@
# Copyright (C) 2020-2021, UChicago Argonne, LLC. All rights reserved.
# Released under the modified BSD license. See COPYING.md for more details.
using Distributed
struct LearningSolver
py::PyCall.PyObject
end
abstract type Instance
optimizer_factory
end
function LearningSolver(optimizer_factory)::LearningSolver
py = miplearn.LearningSolver(solver=JuMPSolver(optimizer_factory))
return LearningSolver(py)
return LearningSolver(
py,
optimizer_factory,
)
end
@@ -31,7 +34,19 @@ function fit!(solver::LearningSolver, instances::Vector{<:Instance})
end
function parallel_solve!(solver::LearningSolver, instances::Vector{FileInstance})
filenames = [instance.filename for instance in instances]
optimizer_factory = solver.optimizer_factory
@sync @distributed for filename in filenames
s = LearningSolver(optimizer_factory)
solve!(s, FileInstance(filename))
nothing
end
end
export Instance,
LearningSolver,
solve!,
fit!
fit!,
parallel_solve!

View File

@@ -62,3 +62,7 @@ macro category(obj, category)
set_category!($(esc(obj)), $(esc(category)))
end
end
export @feature,
@category