docstr: If any target observations have been made, attempt to optimise them
  all.
code: def optimise_targets(self):
      """If any target observations have been made, attempt to optimise them
      all."""
      if not self.should_optimise:
          return
      from hypothesis.internal.conjecture.optimiser import Optimiser
  
      # We want to avoid running the optimiser for too long in case we hit
      # an unbounded target score. We start this off fairly conservatively
      # in case interesting examples are easy to find and then ramp it up
      # on an exponential schedule so we don't hamper the optimiser too much
      # if it needs a long time to find good enough improvements.
      max_improvements = 10
      while True:
          prev_calls = self.call_count
  
          any_improvements = False
  
          for target, data in list(
              self.best_examples_of_observed_targets.items()
          ):
              optimiser = Optimiser(
                  self, data, target, max_improvements=max_improvements
              )
              optimiser.run()
              if optimiser.improvements > 0:
                  any_improvements = True
  
          if self.interesting_examples:
              break
  
          max_improvements *= 2
  
          if any_improvements:
              continue
  
          self.pareto_optimise()
  
          if prev_calls == self.call_count:
              break
  
imports: from __future__ import absolute_import, division, print_function
  from collections import Counter, defaultdict
  from enum import Enum
  from random import Random, getrandbits
  from weakref import WeakKeyDictionary
  import attr
  from hypothesis import HealthCheck, Phase, Verbosity, settings
  from hypothesis._settings import local_settings
  from hypothesis.internal.cache import LRUReusedCache
  from hypothesis.internal.compat import ceil, hbytes, int_from_bytes
  from hypothesis.internal.conjecture.data import ConjectureData, ConjectureResult, DataObserver, Overrun, Status, StopTest
  from hypothesis.internal.conjecture.datatree import DataTree, PreviouslyUnseenBehaviour, TreeRecordingObserver
  from hypothesis.internal.conjecture.junkdrawer import clamp
  from hypothesis.internal.conjecture.pareto import NO_SCORE, ParetoFront, ParetoOptimiser
  from hypothesis.internal.conjecture.shrinker import Shrinker, sort_key
  from hypothesis.internal.healthcheck import fail_health_check
  from hypothesis.reporting import base_report
label_desc: Use image node_id 24 for calling the ConjectureRunner obj's underlying member method code with example usage: obj.optimise_targets() without return types