diff --git a/miplearn/solvers/learning.py b/miplearn/solvers/learning.py index de47108..42b1a03 100644 --- a/miplearn/solvers/learning.py +++ b/miplearn/solvers/learning.py @@ -225,6 +225,9 @@ class LearningSolver: training_sample["LP solution"] = self.internal_solver.get_solution() training_sample["LP value"] = stats["Optimal value"] training_sample["LP log"] = stats["Log"] + else: + training_sample["LP solution"] = self.internal_solver.get_empty_solution() + training_sample["LP value"] = 0 # Before-solve callbacks logger.debug("Running before_solve callbacks...") diff --git a/miplearn/solvers/tests/test_learning_solver.py b/miplearn/solvers/tests/test_learning_solver.py index a6c4c4d..aa8d199 100644 --- a/miplearn/solvers/tests/test_learning_solver.py +++ b/miplearn/solvers/tests/test_learning_solver.py @@ -47,6 +47,19 @@ def test_learning_solver(): pickle.dump(solver, file) +def test_solve_without_lp(): + for internal_solver in _get_internal_solvers(): + logger.info("Solver: %s" % internal_solver) + instance = _get_instance(internal_solver) + solver = LearningSolver( + solver=internal_solver, + solve_lp_first=False, + ) + solver.solve(instance) + solver.fit([instance]) + solver.solve(instance) + + def test_parallel_solve(): for internal_solver in _get_internal_solvers(): instances = [_get_instance(internal_solver) for _ in range(10)]