mirror of
https://github.com/ANL-CEEESA/MIPLearn.jl.git
synced 2025-12-07 08:48:52 -06:00
Partial implementation of parallel_solve
This commit is contained in:
@@ -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!
|
||||
|
||||
@@ -62,3 +62,7 @@ macro category(obj, category)
|
||||
set_category!($(esc(obj)), $(esc(category)))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
export @feature,
|
||||
@category
|
||||
|
||||
Reference in New Issue
Block a user