Пример #1
0
 def test_absolute_gap_of_finite_numbers(self, lb, expected_gap):
     ub = lb + expected_gap
     gap = absolute_gap(lb, ub)
     if np.isclose(ub, 0.0):
         relative_error = np.abs(expected_gap - gap) / 1e-5
     else:
         relative_error = np.abs(expected_gap - gap) / np.abs(ub)
     assert relative_error < 1e-5
Пример #2
0
    def _has_converged(self, state):
        rel_gap = relative_gap(state.lower_bound, state.upper_bound)
        abs_gap = absolute_gap(state.lower_bound, state.upper_bound)

        bounds_close = is_close(
            state.lower_bound,
            state.upper_bound,
            rtol=self.relative_tolerance,
            atol=self.tolerance,
        )

        if self.galini.paranoid_mode:
            assert (state.lower_bound <= state.upper_bound or bounds_close)

        return (
            rel_gap <= self.relative_tolerance or
            abs_gap <= self.tolerance
        )
Пример #3
0
    def has_converged(self, state):
        rel_gap = relative_gap(state.lower_bound, state.upper_bound,
                               self.galini.mc)
        abs_gap = absolute_gap(state.lower_bound, state.upper_bound,
                               self.galini.mc)

        bounds_close = is_close(
            state.lower_bound,
            state.upper_bound,
            rtol=self.bab_config['relative_gap'],
            atol=self.bab_config['absolute_gap'],
        )

        if self.galini.paranoid_mode:
            assert (state.lower_bound <= state.upper_bound or bounds_close)

        return (rel_gap <= self.bab_config['relative_gap']
                or abs_gap <= self.bab_config['absolute_gap'])
Пример #4
0
 def test_absolute_gap_of_infinite_lower_bounds(self, ub):
     gap = absolute_gap(-np.inf, ub)
     assert gap == np.inf
Пример #5
0
 def test_absolute_gap_of_infinite_upper_bounds(self, lb):
     gap = absolute_gap(lb, np.inf)
     assert gap == np.inf