The current code terminates the entire Benders procedure when it is paired with a typical oracle and the oracle terminates due to a time limit. As a result, it does not support an inexact Benders approach, where suboptimal oracle results, when available, may still be used to generate valid cuts and allow the algorithm to proceed.
Similarly, for SeparableOracle, the failure of a single sub-oracle due to a numerical issue or time limit currently terminates the entire algorithm. We may want to allow an inexact approach in which the algorithm proceeds as long as at least one available cut cuts off the current solution.
For SplitOracle, this behavior is already implemented to some extent: if the cut-generation procedure is interrupted due to a time limit or a numerical issue encountered while querying the typical oracles, it can still generate suboptimal disjunctive cuts when those cuts cut off the current candidate.
The current code terminates the entire Benders procedure when it is paired with a typical oracle and the oracle terminates due to a time limit. As a result, it does not support an inexact Benders approach, where suboptimal oracle results, when available, may still be used to generate valid cuts and allow the algorithm to proceed.
Similarly, for
SeparableOracle, the failure of a single sub-oracle due to a numerical issue or time limit currently terminates the entire algorithm. We may want to allow an inexact approach in which the algorithm proceeds as long as at least one available cut cuts off the current solution.For
SplitOracle, this behavior is already implemented to some extent: if the cut-generation procedure is interrupted due to a time limit or a numerical issue encountered while querying the typical oracles, it can still generate suboptimal disjunctive cuts when those cuts cut off the current candidate.