- if self._search_linear_direction == SearchDirection.BOTTOM_UP:
- # loss occurred and it was above acceptance criteria
- if not res:
- # if this is first run then we didn't find drop rate
- if prev_rate is None:
- self._search_result = SearchResults.FAILURE
- self._search_result_rate = None
- # else we found the rate, which is value from previous run
- else:
- self._search_result = SearchResults.SUCCESS
- self._search_result_rate = prev_rate
- return
- # there was no loss / loss below acceptance criteria
- elif res:
- prev_rate = rate
- rate += self._rate_linear_step
- if rate > self._rate_max:
- if prev_rate != self._rate_max:
- # one last step with rate set to _rate_max
- rate = self._rate_max
- continue
- else:
- self._search_result = SearchResults.SUCCESS
- self._search_result_rate = prev_rate
- return
- else:
- continue
- else:
- raise RuntimeError("Unknown search result")
-
- elif self._search_linear_direction == SearchDirection.TOP_DOWN: