
.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "examples/examples_uq/plot_hpo_tree_ensemble_uq_classification_sklearn.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        :ref:`Go to the end <sphx_glr_download_examples_examples_uq_plot_hpo_tree_ensemble_uq_classification_sklearn.py>`
        to download the full example code.

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_examples_examples_uq_plot_hpo_tree_ensemble_uq_classification_sklearn.py:


Hyperparameter Optimized Ensemble of Random Decision Trees with Uncertainty for Classification
==============================================================================================

**Author(s)**: Romain Egele.

In this tutorial, you will learn about how to use hyperparameter optimization to generate an ensemble of `Scikit-Learn <https://scikit-learn.org/stable/>`_ models that can be used for uncertainty quantification.

.. GENERATED FROM PYTHON SOURCE LINES 11-20

Installation and imports
------------------------

Installing dependencies with the :ref:`pip installation <install-pip>` is recommended. It requires **Python >= 3.10**.

.. code-block:: bash

    %%bash
    pip install "deephyper[ray]"

.. GENERATED FROM PYTHON SOURCE LINES 22-40

.. dropdown:: Code (Import statements)

    .. code-block:: Python


        import pathlib
        import pickle
        import os

        import matplotlib.pyplot as plt
        import numpy as np

        from sklearn.calibration import CalibrationDisplay
        from sklearn.datasets import make_moons
        from sklearn.metrics import log_loss, accuracy_score
        from sklearn.model_selection import train_test_split
        from sklearn.tree import DecisionTreeClassifier

        WIDTH_PLOTS = 8
        HEIGHT_PLOTS = WIDTH_PLOTS / 1.618








.. GENERATED FROM PYTHON SOURCE LINES 41-47

Synthetic data generation
-------------------------

For the data, we use the :func:`sklearn.datasets.make_moons` functionality from Scikit-Learn to have a synthetic binary-classification problem with two moons.
The input data :math:`x` are two dimensionnal and the target data :math:`y` are binary values.
We randomly flip 10% of the labels to generate artificial noise that should later be estimated by what we call "aleatoric uncertainty" (a.k.a., intrinsic random noise).

.. GENERATED FROM PYTHON SOURCE LINES 47-109

.. dropdown:: Code (Loading synthetic data)

    .. code-block:: Python


        def flip_binary_labels(y, ratio, random_state=None):
            """Increase the variance of P(Y|X) by ``ratio``"""
            y_flipped = np.zeros(np.shape(y))
            y_flipped[:] = y[:]
            rs = np.random.RandomState(random_state)
            idx = np.arange(len(y_flipped))
            idx = rs.choice(idx, size=int(ratio * len(y_flipped)), replace=False)
            y_flipped[idx] = 1 - y_flipped[idx]
            return y_flipped


        def load_data(noise=0.1, n=1_000, ratio_flipped=0.1, test_size=0.33, valid_size=0.33, random_state=42):
            rng = np.random.RandomState(random_state)
            max_int = np.iinfo(np.int32).max

            test_size = int(test_size * n)
            valid_size = int(valid_size * n)

            X, y = make_moons(n_samples=n, noise=noise, shuffle=True, random_state=rng.randint(max_int))
            X = X - np.mean(X, axis=0)

            y = flip_binary_labels(y, ratio=ratio_flipped, random_state=rng.randint(max_int))
            y = y.astype(np.int64)

            train_X, test_X, train_y, test_y = train_test_split(
                X, 
                y, 
                test_size=test_size,
                random_state=rng.randint(max_int),
                stratify=y,
            )

            train_X, valid_X, train_y, valid_y = train_test_split(
                train_X,
                train_y, 
                test_size=valid_size, 
                random_state=rng.randint(max_int), 
                stratify=train_y,
            )

            return (train_X, train_y), (valid_X, valid_y), (test_X, test_y)

        (x, y), (vx, vy), (tx, ty) = load_data()

        _ = plt.subplots(figsize=(WIDTH_PLOTS, HEIGHT_PLOTS), tight_layout=True)
        _ = plt.scatter(
            x[:, 0].reshape(-1), x[:, 1].reshape(-1), c=y, label="train", alpha=0.8
        )
        _ = plt.scatter(
            vx[:, 0].reshape(-1),
            vx[:, 1].reshape(-1),
            c=vy,
            marker="s",
            label="valid",
            alpha=0.8,
        )
        _ = plt.ylabel("$x1$", fontsize=12)
        _ = plt.xlabel("$x0$", fontsize=12)
        _ = plt.legend(loc="upper center", ncol=3, fontsize=12)




.. image-sg:: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_001.png
   :alt: plot hpo tree ensemble uq classification sklearn
   :srcset: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_001.png
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 110-124

Training a Decision Tree
------------------------

We focus on the class of random decision tree models. 
We define a function that trains and evaluate a random decision tree from given parameters ``job.parameters``.
These parameters will be optimized in the next steps by DeepHyper.

The score we minimize with respect to hyperparameters :math:`\theta` is the validation log loss (a.k.a., binary cross entropy) as we want to have calibrated uncertainty estimates of :math:`P(Y|X=x)` and :math:`1-P(Y|X=x)`:

.. math::

    L_\text{BCE}(x, y;\theta) = y \cdot \log\left(p(y|x;\theta)\right) + (1 - y) \cdot \log\left(1 - p(y|x\theta)\right)

where :math:`p(y|x;\theta)` is the predited probability of a tree with hyperparameters :math:`\theta`.

.. GENERATED FROM PYTHON SOURCE LINES 124-152

.. dropdown:: Code (Plot decision boundary)

    .. code-block:: Python


        def plot_decision_boundary_decision_tree(dataset, labels, model, steps=1000, color_map="viridis", ax=None):
            color_map = plt.get_cmap(color_map)
            # Define region of interest by data limits
            xmin, xmax = dataset[:, 0].min() - 1, dataset[:, 0].max() + 1
            ymin, ymax = dataset[:, 1].min() - 1, dataset[:, 1].max() + 1
            x_span = np.linspace(xmin, xmax, steps)
            y_span = np.linspace(ymin, ymax, steps)
            xx, yy = np.meshgrid(x_span, y_span)

            # Make predictions across region of interest
            labels_predicted = model.predict_proba(np.c_[xx.ravel(), yy.ravel()])

            # Plot decision boundary in region of interest
            z = labels_predicted[:, 1].reshape(xx.shape)

            ax.contourf(xx, yy, z, cmap=color_map, alpha=0.5)

            # Get predicted labels on training data and plot
            ax.scatter(
                dataset[:, 0],
                dataset[:, 1],
                c=labels,
                # cmap=color_map,
                lw=0,
            )








.. GENERATED FROM PYTHON SOURCE LINES 153-159

The ``run`` function takes a ``job`` object as input suggested by DeepHyper.
We use it to pass the ``job.parameters`` and create the decision tree ``model``. 
Then, we fit the model on the data on compute its log-loss score on the validation dataset.
In case of unexpected error we return a special value ``F_fit`` so that our hyperparameter optimization can learn to avoid these unexepected failures.
We checkpoint the model on disk as ``model_*.pkl`` files.
Finally, we return all of our scores, the ``"objective"`` is the value maximized by DeepHyper. Other scores are returned as metadata for further analysis (e.g., overfitting, underfitting, etc.).

.. GENERATED FROM PYTHON SOURCE LINES 159-198

.. code-block:: Python

    hpo_dir = "hpo_sklearn_classification"
    model_checkpoint_dir = os.path.join(hpo_dir, "models")


    def run(job, model_checkpoint_dir=".", verbose=True, show_plots=False):

        (x, y), (vx, vy), (tx, ty) = load_data()

        model = DecisionTreeClassifier(**job.parameters)

        try:
            model.fit(x, y)
            vy_pred_proba = model.predict_proba(vx)
            val_cce = log_loss(vy, vy_pred_proba)
        except:
            return "F_fit"

        # Saving the model
        with open(os.path.join(model_checkpoint_dir, f"model_{job.id}.pkl"), "wb") as f:
            pickle.dump(model, f)

        if verbose:
            print(f"{job.id}: {val_cce=:.3f}")

        if show_plots:
            fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(WIDTH_PLOTS, HEIGHT_PLOTS*2), tight_layout=True)
            plot_decision_boundary_decision_tree(tx, ty, model, steps=1000, color_map="viridis", ax=axes[0])
            disp = CalibrationDisplay.from_predictions(ty, model.predict_proba(tx)[:, 1], ax=axes[1])

        test_cce = log_loss(ty, model.predict_proba(tx))
        test_acc = accuracy_score(ty, model.predict(tx))

        # The score is negated for maximization
        # The score is -Categorical Cross Entropy/LogLoss
        return {
            "objective": -val_cce,
            "metadata": {"test_cce": test_cce, "test_acc": test_acc},
        }








.. GENERATED FROM PYTHON SOURCE LINES 199-204

It is important to note that we did not fix the random state of the random decision tree.
The hyperparameter optimization takes into consideration the fact that the observed objective is noisy and of course this can be tuned.
For example, as the default surrogate model of DeepHyper is itself a randomized forest, increasing the number of samples in leaf nodes would have the effect of averaging out the prediction of the surrogate.

Also, the point of ensembling randomized decision trees is to build a model with lower variance (i.e., variability of the score when fitting it) than its base estimators.

.. GENERATED FROM PYTHON SOURCE LINES 206-212

Hyperparameter search space
---------------------------

We define the hyperparameter search space for decision trees.
This tells to DeepHyper the hyperparameter values it can use for the optimization.
To define these hyperparameters we look at the `DecisionTreeClassifier API Reference <https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html>`_.

.. GENERATED FROM PYTHON SOURCE LINES 212-231

.. code-block:: Python

    from deephyper.hpo import HpProblem


    def create_hpo_problem():

        problem = HpProblem()

        problem.add_hyperparameter(["gini", "entropy", "log_loss"], "criterion")
        problem.add_hyperparameter(["best", "random"], "splitter")
        problem.add_hyperparameter((10, 1000, "log-uniform"), "max_depth", default_value=1000)
        problem.add_hyperparameter((2, 20), "min_samples_split", default_value=2)
        problem.add_hyperparameter((1, 20), "min_samples_leaf", default_value=1)
        problem.add_hyperparameter((0.0, 0.5), "min_weight_fraction_leaf", default_value=0.0)

        return problem

    problem = create_hpo_problem()
    problem





.. rst-class:: sphx-glr-script-out

 .. code-block:: none


    Configuration space object:
      Hyperparameters:
        criterion, Type: Categorical, Choices: {gini, entropy, log_loss}, Default: gini
        max_depth, Type: UniformInteger, Range: [10, 1000], Default: 1000, on log-scale
        min_samples_leaf, Type: UniformInteger, Range: [1, 20], Default: 1
        min_samples_split, Type: UniformInteger, Range: [2, 20], Default: 2
        min_weight_fraction_leaf, Type: UniformFloat, Range: [0.0, 0.5], Default: 0.0
        splitter, Type: Categorical, Choices: {best, random}, Default: best




.. GENERATED FROM PYTHON SOURCE LINES 232-236

Evaluation of the baseline
--------------------------

We previously defined ``default_value=...`` for each hyperparameter. These values corresponds to the default hyperparameters used in Scikit-Learn. We now test them to have a base performance.

.. GENERATED FROM PYTHON SOURCE LINES 236-257

.. code-block:: Python

    from deephyper.evaluator import RunningJob


    def evaluate_decision_tree(problem):

        model_checkpoint_dir = "models_sklearn_test"
        pathlib.Path(model_checkpoint_dir).mkdir(parents=True, exist_ok=True)

        default_parameters = problem.default_configuration
        print(f"{default_parameters=}")
    
        output = run(
            RunningJob(id="test", parameters=default_parameters),
            model_checkpoint_dir=model_checkpoint_dir,
            show_plots=True,
        )
        return output

    baseline_output = evaluate_decision_tree(problem)
    baseline_output




.. image-sg:: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_002.png
   :alt: plot hpo tree ensemble uq classification sklearn
   :srcset: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_002.png
   :class: sphx-glr-single-img


.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    default_parameters={'criterion': 'gini', 'max_depth': 1000, 'min_samples_leaf': 1, 'min_samples_split': 2, 'min_weight_fraction_leaf': 0.0, 'splitter': 'best'}
    0.0: val_cce=6.772

    {'objective': -6.771837909470495, 'metadata': {'test_cce': 6.33494514111756, 'test_acc': 0.8242424242424242}}



.. GENERATED FROM PYTHON SOURCE LINES 258-259

The accuracy is great, but the uncertainty is not well calibrated.

.. GENERATED FROM PYTHON SOURCE LINES 261-280

Hyperparameter Optimization
---------------------------

In DeepHyper, instead of just performing sequential Bayesian optimization we provide asynchronous parallelisation for
Bayesian optimization (and other methods). This allows to execute multiple evaluation function in parallel to collect 
observations of objectives faster.

In this example, we will focus on using centralized Bayesian optimization (CBO). In this setting, we have one main process that runs the
Bayesian optimization algorithm and we have multiple worker processes that run evaluation functions. The class we use for this is
:class:`deephyper.hpo.CBO`.

Let us start by explaining import configuration parameters of :class:`deephyper.hpo.CBO`:

- ``initial_points``: is a list of initial hyperparameter configurations to test, we add the baseline hyperparameters as we want to be at least better than this configuration.
- ``surrogate_model_*``: are parameters related to the surrogate model we use, here ``"ET"`` is an alias for the Extremely Randomized Trees regression model.
- ``multi_point_strategy``: is the strategy we use for parallel suggestion of hyperparameters, here we use the ``qUCBd`` that will sample for each new parallel configuration a different :math:`\kappa^j_i` value from an exponential with mean :math:`\kappa_i` where :math:`j` is the index in the current generated parallel batch and :math:`i` is the iteration of the Bayesian optimization loop. ``UCB`` corresponds to the Upper Confidence Bound acquisition function. Finally the ``"d"`` postfix in ``qUCBd`` means that we will only consider the epistemic component of the uncertainty returned by the surrogate model.
- ``acq_optimizer_*``: are parameters related to optimization of the previously defined acquisition function.
- ``kappa`` and ``scheduler``: are the parameters that define the schedule of :math:`\kappa^j_i` previously mentionned.
- ``objective_scaler``: is a parameter that can be used to rescale the observed objectives (e.g., identity, min-max, log).

.. GENERATED FROM PYTHON SOURCE LINES 280-306

.. code-block:: Python

    search_kwargs = {
        "initial_points": [problem.default_configuration],
        "n_initial_points": 2 * len(problem) + 1,  # Number of initial random points
        "surrogate_model": "ET",  # Use Extra Trees as surrogate model
        "surrogate_model_kwargs": {
            "n_estimators": 50,  # Relatively small number of trees in the surrogate to make it "fast"
            "min_samples_split": 8,  # Larger number to avoid small leaf nodes (smoothing the objective response)
        },
        "multi_point_strategy": "qUCBd",  # Multi-point strategy for asynchronous batch generations (explained later)
        "acq_optimizer": "sampling",  # Use random sampling for the acquisition function optimizer
        "acq_optimizer_kwargs": {
            "filter_duplicated": False,  # Deactivate filtration of duplicated new points
        },
        "acq_func": "UCBd",
        "acq_func_kwargs": {
            "kappa": 10.0,  # Initial value of exploration-exploitation parameter for the acquisition function
            "scheduler": {  # Scheduler for the exploration-exploitation parameter "kappa"
                "type": "periodic-exp-decay",  # Periodic exponential decay
                "period": 50,  # Period over which the decay is applied. It is useful to escape local solutions.
                "kappa_final": 0.001,  # Value of kappa at the end of each "period"
            },
        },
        "objective_scaler": "identity",
        "random_state": 42,  # Random seed
    }








.. GENERATED FROM PYTHON SOURCE LINES 307-308

Then we can run the optimization.

.. GENERATED FROM PYTHON SOURCE LINES 308-342

.. code-block:: Python


    from deephyper.hpo import CBO
    from deephyper.evaluator import Evaluator
    from deephyper.evaluator.callback import TqdmCallback


    def run_hpo(problem):

        pathlib.Path(model_checkpoint_dir).mkdir(parents=True, exist_ok=True)

        evaluator = Evaluator.create(
            run,
            method="ray",
            method_kwargs={
                "num_cpus_per_task": 1,
                "run_function_kwargs": {
                    "model_checkpoint_dir": model_checkpoint_dir,
                    "verbose": False,
                },
                "callbacks": [TqdmCallback()]
            },
        )
        search = CBO(
            problem,
            log_dir=hpo_dir,
            **search_kwargs,
        )

        results = search.search(evaluator, max_evals=1_000)

        return results

    results = run_hpo(problem)





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    2025-08-18 15:31:34,448 INFO worker.py:1852 -- Started a local Ray instance.
      0%|          | 0/1000 [00:00<?, ?it/s]      0%|          | 1/1000 [00:00<00:00, 1485.76it/s, failures=0, objective=-0.652]      0%|          | 2/1000 [00:00<00:11, 90.29it/s, failures=0, objective=-0.524]        0%|          | 3/1000 [00:00<00:08, 111.90it/s, failures=0, objective=-0.482]      0%|          | 4/1000 [00:00<00:10, 96.36it/s, failures=0, objective=-0.482]       0%|          | 5/1000 [00:00<00:08, 111.18it/s, failures=0, objective=-0.482]      1%|          | 6/1000 [00:00<00:07, 125.55it/s, failures=0, objective=-0.482]      1%|          | 7/1000 [00:00<00:08, 114.48it/s, failures=0, objective=-0.482]      1%|          | 8/1000 [00:00<00:07, 126.78it/s, failures=0, objective=-0.482]      1%|          | 9/1000 [00:00<00:07, 138.85it/s, failures=0, objective=-0.482]      1%|          | 10/1000 [00:00<00:06, 150.26it/s, failures=0, objective=-0.482]      1%|          | 11/1000 [00:00<00:07, 134.15it/s, failures=0, objective=-0.418]      1%|          | 12/1000 [00:00<00:06, 142.97it/s, failures=0, objective=-0.418]      1%|▏         | 13/1000 [00:00<00:06, 151.61it/s, failures=0, objective=-0.418]      1%|▏         | 14/1000 [00:00<00:13, 71.83it/s, failures=0, objective=-0.418]       1%|▏         | 14/1000 [00:00<00:13, 71.83it/s, failures=0, objective=-0.418]      2%|▏         | 15/1000 [00:00<00:13, 71.83it/s, failures=0, objective=-0.418]      2%|▏         | 16/1000 [00:00<00:13, 71.83it/s, failures=0, objective=-0.418]      2%|▏         | 17/1000 [00:00<00:13, 71.83it/s, failures=0, objective=-0.418]      2%|▏         | 18/1000 [00:00<00:13, 71.83it/s, failures=0, objective=-0.418]      2%|▏         | 19/1000 [00:00<00:13, 71.83it/s, failures=0, objective=-0.418]      2%|▏         | 20/1000 [00:00<00:13, 71.83it/s, failures=0, objective=-0.416]      2%|▏         | 21/1000 [00:00<00:13, 71.83it/s, failures=0, objective=-0.416]      2%|▏         | 22/1000 [00:00<00:14, 68.07it/s, failures=0, objective=-0.416]      2%|▏         | 22/1000 [00:00<00:14, 68.07it/s, failures=0, objective=-0.416]      2%|▏         | 23/1000 [00:00<00:14, 68.07it/s, failures=0, objective=-0.416]      2%|▏         | 24/1000 [00:00<00:14, 68.07it/s, failures=0, objective=-0.416]      2%|▎         | 25/1000 [00:00<00:14, 68.07it/s, failures=0, objective=-0.416]      3%|▎         | 26/1000 [00:00<00:14, 68.07it/s, failures=0, objective=-0.416]      3%|▎         | 27/1000 [00:00<00:14, 68.07it/s, failures=0, objective=-0.416]      3%|▎         | 28/1000 [00:00<00:14, 68.07it/s, failures=0, objective=-0.416]      3%|▎         | 29/1000 [00:00<00:14, 68.07it/s, failures=0, objective=-0.416]      3%|▎         | 30/1000 [00:00<00:14, 66.13it/s, failures=0, objective=-0.416]      3%|▎         | 30/1000 [00:00<00:14, 66.13it/s, failures=0, objective=-0.416]      3%|▎         | 31/1000 [00:00<00:14, 66.13it/s, failures=0, objective=-0.416]      3%|▎         | 32/1000 [00:00<00:14, 66.13it/s, failures=0, objective=-0.416]      3%|▎         | 33/1000 [00:00<00:14, 66.13it/s, failures=0, objective=-0.416]      3%|▎         | 34/1000 [00:00<00:14, 66.13it/s, failures=0, objective=-0.416]      4%|▎         | 35/1000 [00:00<00:14, 66.13it/s, failures=0, objective=-0.416]      4%|▎         | 36/1000 [00:00<00:14, 66.13it/s, failures=0, objective=-0.405]      4%|▎         | 37/1000 [00:00<00:14, 66.13it/s, failures=0, objective=-0.405]      4%|▍         | 38/1000 [00:00<00:14, 65.79it/s, failures=0, objective=-0.405]      4%|▍         | 38/1000 [00:00<00:14, 65.79it/s, failures=0, objective=-0.405]      4%|▍         | 39/1000 [00:00<00:14, 65.79it/s, failures=0, objective=-0.405]      4%|▍         | 40/1000 [00:00<00:14, 65.79it/s, failures=0, objective=-0.405]      4%|▍         | 41/1000 [00:00<00:14, 65.79it/s, failures=0, objective=-0.405]      4%|▍         | 42/1000 [00:00<00:14, 65.79it/s, failures=0, objective=-0.405]      4%|▍         | 43/1000 [00:00<00:14, 65.79it/s, failures=0, objective=-0.405]      4%|▍         | 44/1000 [00:00<00:14, 65.79it/s, failures=0, objective=-0.405]      4%|▍         | 45/1000 [00:00<00:14, 65.79it/s, failures=0, objective=-0.405]      5%|▍         | 46/1000 [00:00<00:15, 61.93it/s, failures=0, objective=-0.405]      5%|▍         | 46/1000 [00:00<00:15, 61.93it/s, failures=0, objective=-0.405]      5%|▍         | 47/1000 [00:00<00:15, 61.93it/s, failures=0, objective=-0.405]      5%|▍         | 48/1000 [00:00<00:15, 61.93it/s, failures=0, objective=-0.405]      5%|▍         | 49/1000 [00:00<00:15, 61.93it/s, failures=0, objective=-0.405]      5%|▌         | 50/1000 [00:00<00:15, 61.93it/s, failures=0, objective=-0.405]      5%|▌         | 51/1000 [00:00<00:15, 61.93it/s, failures=0, objective=-0.405]      5%|▌         | 52/1000 [00:00<00:15, 61.93it/s, failures=0, objective=-0.405]      5%|▌         | 53/1000 [00:00<00:15, 61.93it/s, failures=0, objective=-0.405]      5%|▌         | 54/1000 [00:00<00:14, 63.11it/s, failures=0, objective=-0.405]      5%|▌         | 54/1000 [00:00<00:14, 63.11it/s, failures=0, objective=-0.405]      6%|▌         | 55/1000 [00:00<00:14, 63.11it/s, failures=0, objective=-0.405]      6%|▌         | 56/1000 [00:00<00:14, 63.11it/s, failures=0, objective=-0.405]      6%|▌         | 57/1000 [00:00<00:14, 63.11it/s, failures=0, objective=-0.405]      6%|▌         | 58/1000 [00:00<00:14, 63.11it/s, failures=0, objective=-0.405]      6%|▌         | 59/1000 [00:00<00:14, 63.11it/s, failures=0, objective=-0.405]      6%|▌         | 60/1000 [00:00<00:14, 63.11it/s, failures=0, objective=-0.405]      6%|▌         | 61/1000 [00:00<00:14, 63.11it/s, failures=0, objective=-0.405]      6%|▌         | 62/1000 [00:00<00:14, 63.60it/s, failures=0, objective=-0.405]      6%|▌         | 62/1000 [00:00<00:14, 63.60it/s, failures=0, objective=-0.405]      6%|▋         | 63/1000 [00:00<00:14, 63.60it/s, failures=0, objective=-0.405]      6%|▋         | 64/1000 [00:00<00:14, 63.60it/s, failures=0, objective=-0.405]      6%|▋         | 65/1000 [00:00<00:14, 63.60it/s, failures=0, objective=-0.405]      7%|▋         | 66/1000 [00:01<00:14, 63.60it/s, failures=0, objective=-0.405]      7%|▋         | 67/1000 [00:01<00:14, 63.60it/s, failures=0, objective=-0.405]      7%|▋         | 68/1000 [00:01<00:14, 63.60it/s, failures=0, objective=-0.405]      7%|▋         | 69/1000 [00:01<00:14, 63.60it/s, failures=0, objective=-0.405]      7%|▋         | 70/1000 [00:01<00:14, 62.06it/s, failures=0, objective=-0.405]      7%|▋         | 70/1000 [00:01<00:14, 62.06it/s, failures=0, objective=-0.405]      7%|▋         | 71/1000 [00:01<00:14, 62.06it/s, failures=0, objective=-0.405]      7%|▋         | 72/1000 [00:01<00:14, 62.06it/s, failures=0, objective=-0.405]      7%|▋         | 73/1000 [00:01<00:14, 62.06it/s, failures=0, objective=-0.405]      7%|▋         | 74/1000 [00:01<00:14, 62.06it/s, failures=0, objective=-0.405]      8%|▊         | 75/1000 [00:01<00:14, 62.06it/s, failures=0, objective=-0.405]      8%|▊         | 76/1000 [00:01<00:14, 62.06it/s, failures=0, objective=-0.405]      8%|▊         | 77/1000 [00:01<00:14, 62.06it/s, failures=0, objective=-0.405]      8%|▊         | 78/1000 [00:01<00:16, 56.00it/s, failures=0, objective=-0.405]      8%|▊         | 78/1000 [00:01<00:16, 56.00it/s, failures=0, objective=-0.405]      8%|▊         | 79/1000 [00:01<00:16, 56.00it/s, failures=0, objective=-0.405]      8%|▊         | 80/1000 [00:01<00:16, 56.00it/s, failures=0, objective=-0.405]      8%|▊         | 81/1000 [00:01<00:16, 56.00it/s, failures=0, objective=-0.405]      8%|▊         | 82/1000 [00:01<00:16, 56.00it/s, failures=0, objective=-0.405]      8%|▊         | 83/1000 [00:01<00:16, 56.00it/s, failures=0, objective=-0.389]      8%|▊         | 84/1000 [00:01<00:16, 56.00it/s, failures=0, objective=-0.389]      8%|▊         | 85/1000 [00:01<00:16, 56.00it/s, failures=0, objective=-0.389]      9%|▊         | 86/1000 [00:01<00:17, 51.89it/s, failures=0, objective=-0.389]      9%|▊         | 86/1000 [00:01<00:17, 51.89it/s, failures=0, objective=-0.389]      9%|▊         | 87/1000 [00:01<00:17, 51.89it/s, failures=0, objective=-0.389]      9%|▉         | 88/1000 [00:01<00:17, 51.89it/s, failures=0, objective=-0.389]      9%|▉         | 89/1000 [00:01<00:17, 51.89it/s, failures=0, objective=-0.389]      9%|▉         | 90/1000 [00:01<00:17, 51.89it/s, failures=0, objective=-0.389]      9%|▉         | 91/1000 [00:01<00:17, 51.89it/s, failures=0, objective=-0.389]      9%|▉         | 92/1000 [00:01<00:17, 51.89it/s, failures=0, objective=-0.389]      9%|▉         | 93/1000 [00:01<00:17, 51.89it/s, failures=0, objective=-0.389]      9%|▉         | 94/1000 [00:01<00:18, 48.50it/s, failures=0, objective=-0.389]      9%|▉         | 94/1000 [00:01<00:18, 48.50it/s, failures=0, objective=-0.389]     10%|▉         | 95/1000 [00:01<00:18, 48.50it/s, failures=0, objective=-0.389]     10%|▉         | 96/1000 [00:01<00:18, 48.50it/s, failures=0, objective=-0.389]     10%|▉         | 97/1000 [00:01<00:18, 48.50it/s, failures=0, objective=-0.389]     10%|▉         | 98/1000 [00:01<00:18, 48.50it/s, failures=0, objective=-0.389]     10%|▉         | 99/1000 [00:01<00:18, 48.76it/s, failures=0, objective=-0.389]     10%|▉         | 99/1000 [00:01<00:18, 48.76it/s, failures=0, objective=-0.389]     10%|█         | 100/1000 [00:01<00:18, 48.76it/s, failures=0, objective=-0.389]     10%|█         | 101/1000 [00:01<00:18, 48.76it/s, failures=0, objective=-0.345]     10%|█         | 102/1000 [00:01<00:18, 48.76it/s, failures=0, objective=-0.345]     10%|█         | 103/1000 [00:01<00:18, 48.76it/s, failures=0, objective=-0.345]     10%|█         | 104/1000 [00:01<00:18, 49.02it/s, failures=0, objective=-0.345]     10%|█         | 104/1000 [00:01<00:18, 49.02it/s, failures=0, objective=-0.345]     10%|█         | 105/1000 [00:01<00:18, 49.02it/s, failures=0, objective=-0.345]     11%|█         | 106/1000 [00:01<00:18, 49.02it/s, failures=0, objective=-0.345]     11%|█         | 107/1000 [00:01<00:18, 49.02it/s, failures=0, objective=-0.345]     11%|█         | 108/1000 [00:01<00:18, 49.02it/s, failures=0, objective=-0.345]     11%|█         | 109/1000 [00:01<00:18, 48.82it/s, failures=0, objective=-0.345]     11%|█         | 109/1000 [00:01<00:18, 48.82it/s, failures=0, objective=-0.345]     11%|█         | 110/1000 [00:02<00:18, 48.82it/s, failures=0, objective=-0.345]     11%|█         | 111/1000 [00:02<00:18, 48.82it/s, failures=0, objective=-0.345]     11%|█         | 112/1000 [00:02<00:18, 48.82it/s, failures=0, objective=-0.345]     11%|█▏        | 113/1000 [00:02<00:18, 48.82it/s, failures=0, objective=-0.345]     11%|█▏        | 114/1000 [00:02<00:22, 39.58it/s, failures=0, objective=-0.345]     11%|█▏        | 114/1000 [00:02<00:22, 39.58it/s, failures=0, objective=-0.345]     12%|█▏        | 115/1000 [00:02<00:22, 39.58it/s, failures=0, objective=-0.345]     12%|█▏        | 116/1000 [00:02<00:22, 39.58it/s, failures=0, objective=-0.345]     12%|█▏        | 117/1000 [00:02<00:22, 39.58it/s, failures=0, objective=-0.345]     12%|█▏        | 118/1000 [00:02<00:22, 39.58it/s, failures=0, objective=-0.345]     12%|█▏        | 119/1000 [00:02<00:21, 41.75it/s, failures=0, objective=-0.345]     12%|█▏        | 119/1000 [00:02<00:21, 41.75it/s, failures=0, objective=-0.345]     12%|█▏        | 120/1000 [00:02<00:21, 41.75it/s, failures=0, objective=-0.345]     12%|█▏        | 121/1000 [00:02<00:21, 41.75it/s, failures=0, objective=-0.345]     12%|█▏        | 122/1000 [00:02<00:21, 41.75it/s, failures=0, objective=-0.345]     12%|█▏        | 123/1000 [00:02<00:21, 41.75it/s, failures=0, objective=-0.345]     12%|█▏        | 124/1000 [00:02<00:20, 41.75it/s, failures=0, objective=-0.345]     12%|█▎        | 125/1000 [00:02<00:20, 41.75it/s, failures=0, objective=-0.345]     13%|█▎        | 126/1000 [00:02<00:21, 39.97it/s, failures=0, objective=-0.345]     13%|█▎        | 126/1000 [00:02<00:21, 39.97it/s, failures=0, objective=-0.345]     13%|█▎        | 127/1000 [00:02<00:21, 39.97it/s, failures=0, objective=-0.345]     13%|█▎        | 128/1000 [00:02<00:21, 39.97it/s, failures=0, objective=-0.345]     13%|█▎        | 129/1000 [00:02<00:21, 39.97it/s, failures=0, objective=-0.345]     13%|█▎        | 130/1000 [00:02<00:21, 39.97it/s, failures=0, objective=-0.345]     13%|█▎        | 131/1000 [00:02<00:21, 39.97it/s, failures=0, objective=-0.345]     13%|█▎        | 132/1000 [00:02<00:19, 44.35it/s, failures=0, objective=-0.345]     13%|█▎        | 132/1000 [00:02<00:19, 44.35it/s, failures=0, objective=-0.345]     13%|█▎        | 133/1000 [00:02<00:19, 44.35it/s, failures=0, objective=-0.345]     13%|█▎        | 134/1000 [00:02<00:19, 44.35it/s, failures=0, objective=-0.345]     14%|█▎        | 135/1000 [00:02<00:19, 44.35it/s, failures=0, objective=-0.345]     14%|█▎        | 136/1000 [00:02<00:19, 44.35it/s, failures=0, objective=-0.345]     14%|█▎        | 137/1000 [00:02<00:18, 45.49it/s, failures=0, objective=-0.345]     14%|█▎        | 137/1000 [00:02<00:18, 45.49it/s, failures=0, objective=-0.345]     14%|█▍        | 138/1000 [00:02<00:18, 45.49it/s, failures=0, objective=-0.345]     14%|█▍        | 139/1000 [00:02<00:18, 45.49it/s, failures=0, objective=-0.345]     14%|█▍        | 140/1000 [00:02<00:18, 45.49it/s, failures=0, objective=-0.345]     14%|█▍        | 141/1000 [00:02<00:18, 45.49it/s, failures=0, objective=-0.345]     14%|█▍        | 142/1000 [00:02<00:23, 37.18it/s, failures=0, objective=-0.345]     14%|█▍        | 142/1000 [00:02<00:23, 37.18it/s, failures=0, objective=-0.345]     14%|█▍        | 143/1000 [00:02<00:23, 37.18it/s, failures=0, objective=-0.345]     14%|█▍        | 144/1000 [00:02<00:23, 37.18it/s, failures=0, objective=-0.345]     14%|█▍        | 145/1000 [00:02<00:22, 37.18it/s, failures=0, objective=-0.345]     15%|█▍        | 146/1000 [00:02<00:22, 37.18it/s, failures=0, objective=-0.345]     15%|█▍        | 147/1000 [00:02<00:22, 37.41it/s, failures=0, objective=-0.345]     15%|█▍        | 147/1000 [00:02<00:22, 37.41it/s, failures=0, objective=-0.345]     15%|█▍        | 148/1000 [00:02<00:22, 37.41it/s, failures=0, objective=-0.345]     15%|█▍        | 149/1000 [00:02<00:22, 37.41it/s, failures=0, objective=-0.345]     15%|█▌        | 150/1000 [00:03<00:22, 37.41it/s, failures=0, objective=-0.345]     15%|█▌        | 151/1000 [00:03<00:22, 37.41it/s, failures=0, objective=-0.345]     15%|█▌        | 152/1000 [00:03<00:21, 39.99it/s, failures=0, objective=-0.345]     15%|█▌        | 152/1000 [00:03<00:21, 39.99it/s, failures=0, objective=-0.345]     15%|█▌        | 153/1000 [00:03<00:21, 39.99it/s, failures=0, objective=-0.345]     15%|█▌        | 154/1000 [00:03<00:21, 39.99it/s, failures=0, objective=-0.345]     16%|█▌        | 155/1000 [00:03<00:21, 39.99it/s, failures=0, objective=-0.345]     16%|█▌        | 156/1000 [00:03<00:21, 39.99it/s, failures=0, objective=-0.345]     16%|█▌        | 157/1000 [00:03<00:21, 39.99it/s, failures=0, objective=-0.345]     16%|█▌        | 158/1000 [00:03<00:22, 36.81it/s, failures=0, objective=-0.345]     16%|█▌        | 158/1000 [00:03<00:22, 36.81it/s, failures=0, objective=-0.345]     16%|█▌        | 159/1000 [00:03<00:22, 36.81it/s, failures=0, objective=-0.345]     16%|█▌        | 160/1000 [00:03<00:22, 36.81it/s, failures=0, objective=-0.345]     16%|█▌        | 161/1000 [00:03<00:22, 36.81it/s, failures=0, objective=-0.345]     16%|█▌        | 162/1000 [00:03<00:22, 36.81it/s, failures=0, objective=-0.345]     16%|█▋        | 163/1000 [00:03<00:22, 36.81it/s, failures=0, objective=-0.345]     16%|█▋        | 164/1000 [00:03<00:22, 36.81it/s, failures=0, objective=-0.345]     16%|█▋        | 165/1000 [00:03<00:18, 44.14it/s, failures=0, objective=-0.345]     16%|█▋        | 165/1000 [00:03<00:18, 44.14it/s, failures=0, objective=-0.345]     17%|█▋        | 166/1000 [00:03<00:18, 44.14it/s, failures=0, objective=-0.345]     17%|█▋        | 167/1000 [00:03<00:18, 44.14it/s, failures=0, objective=-0.345]     17%|█▋        | 168/1000 [00:03<00:18, 44.14it/s, failures=0, objective=-0.345]     17%|█▋        | 169/1000 [00:03<00:18, 44.14it/s, failures=0, objective=-0.345]     17%|█▋        | 170/1000 [00:03<00:22, 36.98it/s, failures=0, objective=-0.345]     17%|█▋        | 170/1000 [00:03<00:22, 36.98it/s, failures=0, objective=-0.345]     17%|█▋        | 171/1000 [00:03<00:22, 36.98it/s, failures=0, objective=-0.345]     17%|█▋        | 172/1000 [00:03<00:22, 36.98it/s, failures=0, objective=-0.345]     17%|█▋        | 173/1000 [00:03<00:22, 36.98it/s, failures=0, objective=-0.345]     17%|█▋        | 174/1000 [00:03<00:22, 36.98it/s, failures=0, objective=-0.345]     18%|█▊        | 175/1000 [00:03<00:21, 38.60it/s, failures=0, objective=-0.345]     18%|█▊        | 175/1000 [00:03<00:21, 38.60it/s, failures=0, objective=-0.345]     18%|█▊        | 176/1000 [00:03<00:21, 38.60it/s, failures=0, objective=-0.345]     18%|█▊        | 177/1000 [00:03<00:21, 38.60it/s, failures=0, objective=-0.345]     18%|█▊        | 178/1000 [00:03<00:21, 38.60it/s, failures=0, objective=-0.345]     18%|█▊        | 179/1000 [00:03<00:21, 38.60it/s, failures=0, objective=-0.345]     18%|█▊        | 180/1000 [00:03<00:19, 41.10it/s, failures=0, objective=-0.345]     18%|█▊        | 180/1000 [00:03<00:19, 41.10it/s, failures=0, objective=-0.345]     18%|█▊        | 181/1000 [00:03<00:19, 41.10it/s, failures=0, objective=-0.345]     18%|█▊        | 182/1000 [00:03<00:19, 41.10it/s, failures=0, objective=-0.345]     18%|█▊        | 183/1000 [00:03<00:19, 41.10it/s, failures=0, objective=-0.345]     18%|█▊        | 184/1000 [00:03<00:19, 41.10it/s, failures=0, objective=-0.345]     18%|█▊        | 185/1000 [00:03<00:19, 42.65it/s, failures=0, objective=-0.345]     18%|█▊        | 185/1000 [00:03<00:19, 42.65it/s, failures=0, objective=-0.345]     19%|█▊        | 186/1000 [00:03<00:19, 42.65it/s, failures=0, objective=-0.345]     19%|█▊        | 187/1000 [00:03<00:19, 42.65it/s, failures=0, objective=-0.345]     19%|█▉        | 188/1000 [00:03<00:19, 42.65it/s, failures=0, objective=-0.345]     19%|█▉        | 189/1000 [00:03<00:19, 42.65it/s, failures=0, objective=-0.345]     19%|█▉        | 190/1000 [00:04<00:22, 35.92it/s, failures=0, objective=-0.345]     19%|█▉        | 190/1000 [00:04<00:22, 35.92it/s, failures=0, objective=-0.345]     19%|█▉        | 191/1000 [00:04<00:22, 35.92it/s, failures=0, objective=-0.345]     19%|█▉        | 192/1000 [00:04<00:22, 35.92it/s, failures=0, objective=-0.345]     19%|█▉        | 193/1000 [00:04<00:22, 35.92it/s, failures=0, objective=-0.345]     19%|█▉        | 194/1000 [00:04<00:22, 35.92it/s, failures=0, objective=-0.345]     20%|█▉        | 195/1000 [00:04<00:20, 39.03it/s, failures=0, objective=-0.345]     20%|█▉        | 195/1000 [00:04<00:20, 39.03it/s, failures=0, objective=-0.345]     20%|█▉        | 196/1000 [00:04<00:20, 39.03it/s, failures=0, objective=-0.345]     20%|█▉        | 197/1000 [00:04<00:20, 39.03it/s, failures=0, objective=-0.345]     20%|█▉        | 198/1000 [00:04<00:20, 39.03it/s, failures=0, objective=-0.345]     20%|█▉        | 199/1000 [00:04<00:20, 39.03it/s, failures=0, objective=-0.345]     20%|██        | 200/1000 [00:04<00:19, 41.63it/s, failures=0, objective=-0.345]     20%|██        | 200/1000 [00:04<00:19, 41.63it/s, failures=0, objective=-0.345]     20%|██        | 201/1000 [00:04<00:19, 41.63it/s, failures=0, objective=-0.345]     20%|██        | 202/1000 [00:04<00:19, 41.63it/s, failures=0, objective=-0.345]     20%|██        | 203/1000 [00:04<00:19, 41.63it/s, failures=0, objective=-0.345]     20%|██        | 204/1000 [00:04<00:19, 41.63it/s, failures=0, objective=-0.345]     20%|██        | 205/1000 [00:04<00:18, 43.57it/s, failures=0, objective=-0.345]     20%|██        | 205/1000 [00:04<00:18, 43.57it/s, failures=0, objective=-0.345]     21%|██        | 206/1000 [00:04<00:18, 43.57it/s, failures=0, objective=-0.345]     21%|██        | 207/1000 [00:04<00:18, 43.57it/s, failures=0, objective=-0.345]     21%|██        | 208/1000 [00:04<00:18, 43.57it/s, failures=0, objective=-0.345]     21%|██        | 209/1000 [00:04<00:18, 43.57it/s, failures=0, objective=-0.345]     21%|██        | 210/1000 [00:04<00:22, 35.61it/s, failures=0, objective=-0.345]     21%|██        | 210/1000 [00:04<00:22, 35.61it/s, failures=0, objective=-0.345]     21%|██        | 211/1000 [00:04<00:22, 35.61it/s, failures=0, objective=-0.345]     21%|██        | 212/1000 [00:04<00:22, 35.61it/s, failures=0, objective=-0.345]     21%|██▏       | 213/1000 [00:04<00:22, 35.61it/s, failures=0, objective=-0.345]     21%|██▏       | 214/1000 [00:04<00:21, 36.24it/s, failures=0, objective=-0.345]     21%|██▏       | 214/1000 [00:04<00:21, 36.24it/s, failures=0, objective=-0.345]     22%|██▏       | 215/1000 [00:04<00:21, 36.24it/s, failures=0, objective=-0.345]     22%|██▏       | 216/1000 [00:04<00:21, 36.24it/s, failures=0, objective=-0.345]     22%|██▏       | 217/1000 [00:04<00:21, 36.24it/s, failures=0, objective=-0.345]     22%|██▏       | 218/1000 [00:04<00:22, 34.14it/s, failures=0, objective=-0.345]     22%|██▏       | 218/1000 [00:04<00:22, 34.14it/s, failures=0, objective=-0.345]     22%|██▏       | 219/1000 [00:04<00:22, 34.14it/s, failures=0, objective=-0.345]     22%|██▏       | 220/1000 [00:04<00:22, 34.14it/s, failures=0, objective=-0.345]     22%|██▏       | 221/1000 [00:04<00:22, 34.14it/s, failures=0, objective=-0.345]     22%|██▏       | 222/1000 [00:04<00:22, 35.07it/s, failures=0, objective=-0.345]     22%|██▏       | 222/1000 [00:04<00:22, 35.07it/s, failures=0, objective=-0.345]     22%|██▏       | 223/1000 [00:04<00:22, 35.07it/s, failures=0, objective=-0.345]     22%|██▏       | 224/1000 [00:04<00:22, 35.07it/s, failures=0, objective=-0.345]     22%|██▎       | 225/1000 [00:04<00:22, 35.07it/s, failures=0, objective=-0.345]     23%|██▎       | 226/1000 [00:05<00:21, 35.84it/s, failures=0, objective=-0.345]     23%|██▎       | 226/1000 [00:05<00:21, 35.84it/s, failures=0, objective=-0.345]     23%|██▎       | 227/1000 [00:05<00:21, 35.84it/s, failures=0, objective=-0.345]     23%|██▎       | 228/1000 [00:05<00:21, 35.84it/s, failures=0, objective=-0.345]     23%|██▎       | 229/1000 [00:05<00:21, 35.84it/s, failures=0, objective=-0.345]     23%|██▎       | 230/1000 [00:05<00:21, 36.37it/s, failures=0, objective=-0.345]     23%|██▎       | 230/1000 [00:05<00:21, 36.37it/s, failures=0, objective=-0.345]     23%|██▎       | 231/1000 [00:05<00:21, 36.37it/s, failures=0, objective=-0.345]     23%|██▎       | 232/1000 [00:05<00:21, 36.37it/s, failures=0, objective=-0.345]     23%|██▎       | 233/1000 [00:05<00:21, 36.37it/s, failures=0, objective=-0.345]     23%|██▎       | 234/1000 [00:05<00:20, 36.85it/s, failures=0, objective=-0.345]     23%|██▎       | 234/1000 [00:05<00:20, 36.85it/s, failures=0, objective=-0.345]     24%|██▎       | 235/1000 [00:05<00:20, 36.85it/s, failures=0, objective=-0.345]     24%|██▎       | 236/1000 [00:05<00:20, 36.85it/s, failures=0, objective=-0.345]     24%|██▎       | 237/1000 [00:05<00:20, 36.85it/s, failures=0, objective=-0.345]     24%|██▍       | 238/1000 [00:05<00:20, 37.06it/s, failures=0, objective=-0.345]     24%|██▍       | 238/1000 [00:05<00:20, 37.06it/s, failures=0, objective=-0.345]     24%|██▍       | 239/1000 [00:05<00:20, 37.06it/s, failures=0, objective=-0.345]     24%|██▍       | 240/1000 [00:05<00:20, 37.06it/s, failures=0, objective=-0.345]     24%|██▍       | 241/1000 [00:05<00:20, 37.06it/s, failures=0, objective=-0.345]     24%|██▍       | 242/1000 [00:05<00:20, 37.28it/s, failures=0, objective=-0.345]     24%|██▍       | 242/1000 [00:05<00:20, 37.28it/s, failures=0, objective=-0.345]     24%|██▍       | 243/1000 [00:05<00:20, 37.28it/s, failures=0, objective=-0.345]     24%|██▍       | 244/1000 [00:05<00:20, 37.28it/s, failures=0, objective=-0.345]     24%|██▍       | 245/1000 [00:05<00:20, 37.28it/s, failures=0, objective=-0.345]     25%|██▍       | 246/1000 [00:05<00:20, 37.35it/s, failures=0, objective=-0.345]     25%|██▍       | 246/1000 [00:05<00:20, 37.35it/s, failures=0, objective=-0.345]     25%|██▍       | 247/1000 [00:05<00:20, 37.35it/s, failures=0, objective=-0.345]     25%|██▍       | 248/1000 [00:05<00:20, 37.35it/s, failures=0, objective=-0.345]     25%|██▍       | 249/1000 [00:05<00:20, 37.35it/s, failures=0, objective=-0.345]     25%|██▌       | 250/1000 [00:05<00:20, 37.45it/s, failures=0, objective=-0.345]     25%|██▌       | 250/1000 [00:05<00:20, 37.45it/s, failures=0, objective=-0.345]     25%|██▌       | 251/1000 [00:05<00:19, 37.45it/s, failures=0, objective=-0.345]     25%|██▌       | 252/1000 [00:05<00:19, 37.45it/s, failures=0, objective=-0.345]     25%|██▌       | 253/1000 [00:05<00:19, 37.45it/s, failures=0, objective=-0.345]     25%|██▌       | 254/1000 [00:05<00:20, 36.97it/s, failures=0, objective=-0.345]     25%|██▌       | 254/1000 [00:05<00:20, 36.97it/s, failures=0, objective=-0.345]     26%|██▌       | 255/1000 [00:05<00:20, 36.97it/s, failures=0, objective=-0.345]     26%|██▌       | 256/1000 [00:05<00:20, 36.97it/s, failures=0, objective=-0.345]     26%|██▌       | 257/1000 [00:05<00:20, 36.97it/s, failures=0, objective=-0.345]     26%|██▌       | 258/1000 [00:05<00:20, 36.64it/s, failures=0, objective=-0.345]     26%|██▌       | 258/1000 [00:05<00:20, 36.64it/s, failures=0, objective=-0.345]     26%|██▌       | 259/1000 [00:05<00:20, 36.64it/s, failures=0, objective=-0.345]     26%|██▌       | 260/1000 [00:05<00:20, 36.64it/s, failures=0, objective=-0.345]     26%|██▌       | 261/1000 [00:05<00:20, 36.64it/s, failures=0, objective=-0.345]     26%|██▌       | 262/1000 [00:05<00:20, 36.58it/s, failures=0, objective=-0.345]     26%|██▌       | 262/1000 [00:05<00:20, 36.58it/s, failures=0, objective=-0.345]     26%|██▋       | 263/1000 [00:05<00:20, 36.58it/s, failures=0, objective=-0.345]     26%|██▋       | 264/1000 [00:05<00:20, 36.58it/s, failures=0, objective=-0.345]     26%|██▋       | 265/1000 [00:05<00:20, 36.58it/s, failures=0, objective=-0.345]     27%|██▋       | 266/1000 [00:06<00:20, 36.41it/s, failures=0, objective=-0.345]     27%|██▋       | 266/1000 [00:06<00:20, 36.41it/s, failures=0, objective=-0.345]     27%|██▋       | 267/1000 [00:06<00:20, 36.41it/s, failures=0, objective=-0.345]     27%|██▋       | 268/1000 [00:06<00:20, 36.41it/s, failures=0, objective=-0.345]     27%|██▋       | 269/1000 [00:06<00:20, 36.41it/s, failures=0, objective=-0.345]     27%|██▋       | 270/1000 [00:06<00:20, 36.13it/s, failures=0, objective=-0.345]     27%|██▋       | 270/1000 [00:06<00:20, 36.13it/s, failures=0, objective=-0.345]     27%|██▋       | 271/1000 [00:06<00:20, 36.13it/s, failures=0, objective=-0.345]     27%|██▋       | 272/1000 [00:06<00:20, 36.13it/s, failures=0, objective=-0.345]     27%|██▋       | 273/1000 [00:06<00:20, 36.13it/s, failures=0, objective=-0.345]     27%|██▋       | 274/1000 [00:06<00:20, 35.93it/s, failures=0, objective=-0.345]     27%|██▋       | 274/1000 [00:06<00:20, 35.93it/s, failures=0, objective=-0.345]     28%|██▊       | 275/1000 [00:06<00:20, 35.93it/s, failures=0, objective=-0.345]     28%|██▊       | 276/1000 [00:06<00:20, 35.93it/s, failures=0, objective=-0.345]     28%|██▊       | 277/1000 [00:06<00:20, 35.93it/s, failures=0, objective=-0.345]     28%|██▊       | 278/1000 [00:06<00:22, 31.73it/s, failures=0, objective=-0.345]     28%|██▊       | 278/1000 [00:06<00:22, 31.73it/s, failures=0, objective=-0.345]     28%|██▊       | 279/1000 [00:06<00:22, 31.73it/s, failures=0, objective=-0.345]     28%|██▊       | 280/1000 [00:06<00:22, 31.73it/s, failures=0, objective=-0.345]     28%|██▊       | 281/1000 [00:06<00:22, 31.73it/s, failures=0, objective=-0.345]     28%|██▊       | 282/1000 [00:06<00:22, 32.47it/s, failures=0, objective=-0.345]     28%|██▊       | 282/1000 [00:06<00:22, 32.47it/s, failures=0, objective=-0.345]     28%|██▊       | 283/1000 [00:06<00:22, 32.47it/s, failures=0, objective=-0.345]     28%|██▊       | 284/1000 [00:06<00:22, 32.47it/s, failures=0, objective=-0.345]     28%|██▊       | 285/1000 [00:06<00:22, 32.47it/s, failures=0, objective=-0.345]     29%|██▊       | 286/1000 [00:06<00:21, 33.13it/s, failures=0, objective=-0.345]     29%|██▊       | 286/1000 [00:06<00:21, 33.13it/s, failures=0, objective=-0.345]     29%|██▊       | 287/1000 [00:06<00:21, 33.13it/s, failures=0, objective=-0.345]     29%|██▉       | 288/1000 [00:06<00:21, 33.13it/s, failures=0, objective=-0.345]     29%|██▉       | 289/1000 [00:06<00:21, 33.13it/s, failures=0, objective=-0.345]     29%|██▉       | 290/1000 [00:06<00:21, 33.70it/s, failures=0, objective=-0.345]     29%|██▉       | 290/1000 [00:06<00:21, 33.70it/s, failures=0, objective=-0.345]     29%|██▉       | 291/1000 [00:06<00:21, 33.70it/s, failures=0, objective=-0.345]     29%|██▉       | 292/1000 [00:06<00:21, 33.70it/s, failures=0, objective=-0.345]     29%|██▉       | 293/1000 [00:06<00:20, 33.70it/s, failures=0, objective=-0.345]     29%|██▉       | 294/1000 [00:06<00:20, 34.06it/s, failures=0, objective=-0.345]     29%|██▉       | 294/1000 [00:06<00:20, 34.06it/s, failures=0, objective=-0.345]     30%|██▉       | 295/1000 [00:06<00:20, 34.06it/s, failures=0, objective=-0.345]     30%|██▉       | 296/1000 [00:06<00:20, 34.06it/s, failures=0, objective=-0.345]     30%|██▉       | 297/1000 [00:06<00:20, 34.06it/s, failures=0, objective=-0.345]     30%|██▉       | 298/1000 [00:07<00:20, 34.23it/s, failures=0, objective=-0.345]     30%|██▉       | 298/1000 [00:07<00:20, 34.23it/s, failures=0, objective=-0.345]     30%|██▉       | 299/1000 [00:07<00:20, 34.23it/s, failures=0, objective=-0.345]     30%|███       | 300/1000 [00:07<00:20, 34.23it/s, failures=0, objective=-0.345]     30%|███       | 301/1000 [00:07<00:20, 34.23it/s, failures=0, objective=-0.345]     30%|███       | 302/1000 [00:07<00:21, 32.92it/s, failures=0, objective=-0.345]     30%|███       | 302/1000 [00:07<00:21, 32.92it/s, failures=0, objective=-0.345]     30%|███       | 303/1000 [00:07<00:21, 32.92it/s, failures=0, objective=-0.345]     30%|███       | 304/1000 [00:07<00:21, 32.92it/s, failures=0, objective=-0.345]     30%|███       | 305/1000 [00:07<00:21, 32.92it/s, failures=0, objective=-0.345]     31%|███       | 306/1000 [00:07<00:21, 32.56it/s, failures=0, objective=-0.345]     31%|███       | 306/1000 [00:07<00:21, 32.56it/s, failures=0, objective=-0.345]     31%|███       | 307/1000 [00:07<00:21, 32.56it/s, failures=0, objective=-0.345]     31%|███       | 308/1000 [00:07<00:21, 32.56it/s, failures=0, objective=-0.345]     31%|███       | 309/1000 [00:07<00:21, 32.56it/s, failures=0, objective=-0.345]     31%|███       | 310/1000 [00:07<00:20, 33.01it/s, failures=0, objective=-0.345]     31%|███       | 310/1000 [00:07<00:20, 33.01it/s, failures=0, objective=-0.345]     31%|███       | 311/1000 [00:07<00:20, 33.01it/s, failures=0, objective=-0.345]     31%|███       | 312/1000 [00:07<00:20, 33.01it/s, failures=0, objective=-0.345]     31%|███▏      | 313/1000 [00:07<00:20, 33.01it/s, failures=0, objective=-0.345]     31%|███▏      | 314/1000 [00:07<00:20, 32.86it/s, failures=0, objective=-0.345]     31%|███▏      | 314/1000 [00:07<00:20, 32.86it/s, failures=0, objective=-0.345]     32%|███▏      | 315/1000 [00:07<00:20, 32.86it/s, failures=0, objective=-0.345]     32%|███▏      | 316/1000 [00:07<00:20, 32.86it/s, failures=0, objective=-0.345]     32%|███▏      | 317/1000 [00:07<00:20, 32.86it/s, failures=0, objective=-0.345]     32%|███▏      | 318/1000 [00:07<00:20, 33.32it/s, failures=0, objective=-0.345]     32%|███▏      | 318/1000 [00:07<00:20, 33.32it/s, failures=0, objective=-0.345]     32%|███▏      | 319/1000 [00:07<00:20, 33.32it/s, failures=0, objective=-0.345]     32%|███▏      | 320/1000 [00:07<00:20, 33.32it/s, failures=0, objective=-0.345]     32%|███▏      | 321/1000 [00:07<00:20, 33.32it/s, failures=0, objective=-0.345]     32%|███▏      | 322/1000 [00:07<00:20, 33.56it/s, failures=0, objective=-0.345]     32%|███▏      | 322/1000 [00:07<00:20, 33.56it/s, failures=0, objective=-0.345]     32%|███▏      | 323/1000 [00:07<00:20, 33.56it/s, failures=0, objective=-0.345]     32%|███▏      | 324/1000 [00:07<00:20, 33.56it/s, failures=0, objective=-0.345]     32%|███▎      | 325/1000 [00:07<00:20, 33.56it/s, failures=0, objective=-0.345]     33%|███▎      | 326/1000 [00:07<00:19, 33.81it/s, failures=0, objective=-0.345]     33%|███▎      | 326/1000 [00:07<00:19, 33.81it/s, failures=0, objective=-0.345]     33%|███▎      | 327/1000 [00:07<00:19, 33.81it/s, failures=0, objective=-0.345]     33%|███▎      | 328/1000 [00:07<00:19, 33.81it/s, failures=0, objective=-0.345]     33%|███▎      | 329/1000 [00:07<00:19, 33.81it/s, failures=0, objective=-0.345]     33%|███▎      | 330/1000 [00:08<00:19, 34.04it/s, failures=0, objective=-0.345]     33%|███▎      | 330/1000 [00:08<00:19, 34.04it/s, failures=0, objective=-0.345]     33%|███▎      | 331/1000 [00:08<00:19, 34.04it/s, failures=0, objective=-0.345]     33%|███▎      | 332/1000 [00:08<00:19, 34.04it/s, failures=0, objective=-0.345]     33%|███▎      | 333/1000 [00:08<00:19, 34.04it/s, failures=0, objective=-0.345]     33%|███▎      | 334/1000 [00:08<00:19, 34.09it/s, failures=0, objective=-0.345]     33%|███▎      | 334/1000 [00:08<00:19, 34.09it/s, failures=0, objective=-0.345]     34%|███▎      | 335/1000 [00:08<00:19, 34.09it/s, failures=0, objective=-0.345]     34%|███▎      | 336/1000 [00:08<00:19, 34.09it/s, failures=0, objective=-0.345]     34%|███▎      | 337/1000 [00:08<00:19, 34.09it/s, failures=0, objective=-0.345]     34%|███▍      | 338/1000 [00:08<00:19, 34.19it/s, failures=0, objective=-0.345]     34%|███▍      | 338/1000 [00:08<00:19, 34.19it/s, failures=0, objective=-0.345]     34%|███▍      | 339/1000 [00:08<00:19, 34.19it/s, failures=0, objective=-0.345]     34%|███▍      | 340/1000 [00:08<00:19, 34.19it/s, failures=0, objective=-0.345]     34%|███▍      | 341/1000 [00:08<00:19, 34.19it/s, failures=0, objective=-0.345]     34%|███▍      | 342/1000 [00:08<00:19, 34.20it/s, failures=0, objective=-0.345]     34%|███▍      | 342/1000 [00:08<00:19, 34.20it/s, failures=0, objective=-0.345]     34%|███▍      | 343/1000 [00:08<00:19, 34.20it/s, failures=0, objective=-0.345]     34%|███▍      | 344/1000 [00:08<00:19, 34.20it/s, failures=0, objective=-0.345]     34%|███▍      | 345/1000 [00:08<00:19, 34.20it/s, failures=0, objective=-0.345]     35%|███▍      | 346/1000 [00:08<00:19, 34.10it/s, failures=0, objective=-0.345]     35%|███▍      | 346/1000 [00:08<00:19, 34.10it/s, failures=0, objective=-0.345]     35%|███▍      | 347/1000 [00:08<00:19, 34.10it/s, failures=0, objective=-0.345]     35%|███▍      | 348/1000 [00:08<00:19, 34.10it/s, failures=0, objective=-0.345]     35%|███▍      | 349/1000 [00:08<00:19, 34.10it/s, failures=0, objective=-0.345]     35%|███▌      | 350/1000 [00:08<00:19, 34.11it/s, failures=0, objective=-0.345]     35%|███▌      | 350/1000 [00:08<00:19, 34.11it/s, failures=0, objective=-0.345]     35%|███▌      | 351/1000 [00:08<00:19, 34.11it/s, failures=0, objective=-0.345]     35%|███▌      | 352/1000 [00:08<00:18, 34.11it/s, failures=0, objective=-0.345]     35%|███▌      | 353/1000 [00:08<00:18, 34.11it/s, failures=0, objective=-0.345]     35%|███▌      | 354/1000 [00:08<00:18, 34.12it/s, failures=0, objective=-0.345]     35%|███▌      | 354/1000 [00:08<00:18, 34.12it/s, failures=0, objective=-0.345]     36%|███▌      | 355/1000 [00:08<00:18, 34.12it/s, failures=0, objective=-0.345]     36%|███▌      | 356/1000 [00:08<00:18, 34.12it/s, failures=0, objective=-0.345]     36%|███▌      | 357/1000 [00:08<00:18, 34.12it/s, failures=0, objective=-0.345]     36%|███▌      | 358/1000 [00:08<00:18, 34.13it/s, failures=0, objective=-0.345]     36%|███▌      | 358/1000 [00:08<00:18, 34.13it/s, failures=0, objective=-0.345]     36%|███▌      | 359/1000 [00:08<00:18, 34.13it/s, failures=0, objective=-0.345]     36%|███▌      | 360/1000 [00:08<00:18, 34.13it/s, failures=0, objective=-0.345]     36%|███▌      | 361/1000 [00:08<00:18, 34.13it/s, failures=0, objective=-0.345]     36%|███▌      | 362/1000 [00:08<00:18, 33.95it/s, failures=0, objective=-0.345]     36%|███▌      | 362/1000 [00:08<00:18, 33.95it/s, failures=0, objective=-0.345]     36%|███▋      | 363/1000 [00:08<00:18, 33.95it/s, failures=0, objective=-0.345]     36%|███▋      | 364/1000 [00:08<00:18, 33.95it/s, failures=0, objective=-0.345]     36%|███▋      | 365/1000 [00:08<00:18, 33.95it/s, failures=0, objective=-0.345]     37%|███▋      | 366/1000 [00:09<00:18, 33.83it/s, failures=0, objective=-0.345]     37%|███▋      | 366/1000 [00:09<00:18, 33.83it/s, failures=0, objective=-0.345]     37%|███▋      | 367/1000 [00:09<00:18, 33.83it/s, failures=0, objective=-0.345]     37%|███▋      | 368/1000 [00:09<00:18, 33.83it/s, failures=0, objective=-0.345]     37%|███▋      | 369/1000 [00:09<00:18, 33.83it/s, failures=0, objective=-0.345]     37%|███▋      | 370/1000 [00:09<00:18, 33.78it/s, failures=0, objective=-0.345]     37%|███▋      | 370/1000 [00:09<00:18, 33.78it/s, failures=0, objective=-0.345]     37%|███▋      | 371/1000 [00:09<00:18, 33.78it/s, failures=0, objective=-0.345]     37%|███▋      | 372/1000 [00:09<00:18, 33.78it/s, failures=0, objective=-0.345]     37%|███▋      | 373/1000 [00:09<00:18, 33.78it/s, failures=0, objective=-0.345]     37%|███▋      | 374/1000 [00:09<00:18, 33.68it/s, failures=0, objective=-0.345]     37%|███▋      | 374/1000 [00:09<00:18, 33.68it/s, failures=0, objective=-0.345]     38%|███▊      | 375/1000 [00:09<00:18, 33.68it/s, failures=0, objective=-0.345]     38%|███▊      | 376/1000 [00:09<00:18, 33.68it/s, failures=0, objective=-0.345]     38%|███▊      | 377/1000 [00:09<00:18, 33.68it/s, failures=0, objective=-0.345]     38%|███▊      | 378/1000 [00:09<00:18, 33.53it/s, failures=0, objective=-0.345]     38%|███▊      | 378/1000 [00:09<00:18, 33.53it/s, failures=0, objective=-0.345]     38%|███▊      | 379/1000 [00:09<00:18, 33.53it/s, failures=0, objective=-0.345]     38%|███▊      | 380/1000 [00:09<00:18, 33.53it/s, failures=0, objective=-0.345]     38%|███▊      | 381/1000 [00:09<00:18, 33.53it/s, failures=0, objective=-0.345]     38%|███▊      | 382/1000 [00:09<00:18, 33.55it/s, failures=0, objective=-0.345]     38%|███▊      | 382/1000 [00:09<00:18, 33.55it/s, failures=0, objective=-0.345]     38%|███▊      | 383/1000 [00:09<00:18, 33.55it/s, failures=0, objective=-0.345]     38%|███▊      | 384/1000 [00:09<00:18, 33.55it/s, failures=0, objective=-0.345]     38%|███▊      | 385/1000 [00:09<00:18, 33.55it/s, failures=0, objective=-0.345]     39%|███▊      | 386/1000 [00:09<00:18, 33.38it/s, failures=0, objective=-0.345]     39%|███▊      | 386/1000 [00:09<00:18, 33.38it/s, failures=0, objective=-0.345]     39%|███▊      | 387/1000 [00:09<00:18, 33.38it/s, failures=0, objective=-0.345]     39%|███▉      | 388/1000 [00:09<00:18, 33.38it/s, failures=0, objective=-0.345]     39%|███▉      | 389/1000 [00:09<00:18, 33.38it/s, failures=0, objective=-0.345]     39%|███▉      | 390/1000 [00:09<00:18, 33.32it/s, failures=0, objective=-0.345]     39%|███▉      | 390/1000 [00:09<00:18, 33.32it/s, failures=0, objective=-0.345]     39%|███▉      | 391/1000 [00:09<00:18, 33.32it/s, failures=0, objective=-0.345]     39%|███▉      | 392/1000 [00:09<00:18, 33.32it/s, failures=0, objective=-0.345]     39%|███▉      | 393/1000 [00:09<00:18, 33.32it/s, failures=0, objective=-0.345]     39%|███▉      | 394/1000 [00:09<00:18, 33.17it/s, failures=0, objective=-0.345]     39%|███▉      | 394/1000 [00:09<00:18, 33.17it/s, failures=0, objective=-0.345]     40%|███▉      | 395/1000 [00:09<00:18, 33.17it/s, failures=0, objective=-0.345]     40%|███▉      | 396/1000 [00:09<00:18, 33.17it/s, failures=0, objective=-0.345]     40%|███▉      | 397/1000 [00:09<00:18, 33.17it/s, failures=0, objective=-0.345]     40%|███▉      | 398/1000 [00:10<00:18, 33.17it/s, failures=0, objective=-0.345]     40%|███▉      | 398/1000 [00:10<00:18, 33.17it/s, failures=0, objective=-0.345]     40%|███▉      | 399/1000 [00:10<00:18, 33.17it/s, failures=0, objective=-0.345]     40%|████      | 400/1000 [00:10<00:18, 33.17it/s, failures=0, objective=-0.345]     40%|████      | 401/1000 [00:10<00:18, 33.17it/s, failures=0, objective=-0.345]     40%|████      | 402/1000 [00:10<00:18, 33.20it/s, failures=0, objective=-0.345]     40%|████      | 402/1000 [00:10<00:18, 33.20it/s, failures=0, objective=-0.345]     40%|████      | 403/1000 [00:10<00:17, 33.20it/s, failures=0, objective=-0.345]     40%|████      | 404/1000 [00:10<00:17, 33.20it/s, failures=0, objective=-0.345]     40%|████      | 405/1000 [00:10<00:17, 33.20it/s, failures=0, objective=-0.345]     41%|████      | 406/1000 [00:10<00:17, 33.18it/s, failures=0, objective=-0.345]     41%|████      | 406/1000 [00:10<00:17, 33.18it/s, failures=0, objective=-0.345]     41%|████      | 407/1000 [00:10<00:17, 33.18it/s, failures=0, objective=-0.345]     41%|████      | 408/1000 [00:10<00:17, 33.18it/s, failures=0, objective=-0.345]     41%|████      | 409/1000 [00:10<00:17, 33.18it/s, failures=0, objective=-0.345]     41%|████      | 410/1000 [00:10<00:17, 33.04it/s, failures=0, objective=-0.345]     41%|████      | 410/1000 [00:10<00:17, 33.04it/s, failures=0, objective=-0.345]     41%|████      | 411/1000 [00:10<00:17, 33.04it/s, failures=0, objective=-0.345]     41%|████      | 412/1000 [00:10<00:17, 33.04it/s, failures=0, objective=-0.345]     41%|████▏     | 413/1000 [00:10<00:17, 33.04it/s, failures=0, objective=-0.345]     41%|████▏     | 414/1000 [00:10<00:17, 32.81it/s, failures=0, objective=-0.345]     41%|████▏     | 414/1000 [00:10<00:17, 32.81it/s, failures=0, objective=-0.345]     42%|████▏     | 415/1000 [00:10<00:17, 32.81it/s, failures=0, objective=-0.345]     42%|████▏     | 416/1000 [00:10<00:17, 32.81it/s, failures=0, objective=-0.345]     42%|████▏     | 417/1000 [00:10<00:17, 32.81it/s, failures=0, objective=-0.345]     42%|████▏     | 418/1000 [00:10<00:17, 32.82it/s, failures=0, objective=-0.345]     42%|████▏     | 418/1000 [00:10<00:17, 32.82it/s, failures=0, objective=-0.345]     42%|████▏     | 419/1000 [00:10<00:17, 32.82it/s, failures=0, objective=-0.345]     42%|████▏     | 420/1000 [00:10<00:17, 32.82it/s, failures=0, objective=-0.345]     42%|████▏     | 421/1000 [00:10<00:17, 32.82it/s, failures=0, objective=-0.345]     42%|████▏     | 422/1000 [00:10<00:17, 32.86it/s, failures=0, objective=-0.345]     42%|████▏     | 422/1000 [00:10<00:17, 32.86it/s, failures=0, objective=-0.345]     42%|████▏     | 423/1000 [00:10<00:17, 32.86it/s, failures=0, objective=-0.345]     42%|████▏     | 424/1000 [00:10<00:17, 32.86it/s, failures=0, objective=-0.345]     42%|████▎     | 425/1000 [00:10<00:17, 32.86it/s, failures=0, objective=-0.345]     43%|████▎     | 426/1000 [00:10<00:17, 32.87it/s, failures=0, objective=-0.345]     43%|████▎     | 426/1000 [00:10<00:17, 32.87it/s, failures=0, objective=-0.345]     43%|████▎     | 427/1000 [00:10<00:17, 32.87it/s, failures=0, objective=-0.345]     43%|████▎     | 428/1000 [00:10<00:17, 32.87it/s, failures=0, objective=-0.345]     43%|████▎     | 429/1000 [00:10<00:17, 32.87it/s, failures=0, objective=-0.345]     43%|████▎     | 430/1000 [00:11<00:17, 32.86it/s, failures=0, objective=-0.345]     43%|████▎     | 430/1000 [00:11<00:17, 32.86it/s, failures=0, objective=-0.345]     43%|████▎     | 431/1000 [00:11<00:17, 32.86it/s, failures=0, objective=-0.345]     43%|████▎     | 432/1000 [00:11<00:17, 32.86it/s, failures=0, objective=-0.345]     43%|████▎     | 433/1000 [00:11<00:17, 32.86it/s, failures=0, objective=-0.345]     43%|████▎     | 434/1000 [00:11<00:17, 32.81it/s, failures=0, objective=-0.345]     43%|████▎     | 434/1000 [00:11<00:17, 32.81it/s, failures=0, objective=-0.345]     44%|████▎     | 435/1000 [00:11<00:17, 32.81it/s, failures=0, objective=-0.345]     44%|████▎     | 436/1000 [00:11<00:17, 32.81it/s, failures=0, objective=-0.345]     44%|████▎     | 437/1000 [00:11<00:17, 32.81it/s, failures=0, objective=-0.345]     44%|████▍     | 438/1000 [00:11<00:17, 32.79it/s, failures=0, objective=-0.345]     44%|████▍     | 438/1000 [00:11<00:17, 32.79it/s, failures=0, objective=-0.345]     44%|████▍     | 439/1000 [00:11<00:17, 32.79it/s, failures=0, objective=-0.345]     44%|████▍     | 440/1000 [00:11<00:17, 32.79it/s, failures=0, objective=-0.345]     44%|████▍     | 441/1000 [00:11<00:17, 32.79it/s, failures=0, objective=-0.345]     44%|████▍     | 442/1000 [00:11<00:17, 32.68it/s, failures=0, objective=-0.345]     44%|████▍     | 442/1000 [00:11<00:17, 32.68it/s, failures=0, objective=-0.345]     44%|████▍     | 443/1000 [00:11<00:17, 32.68it/s, failures=0, objective=-0.345]     44%|████▍     | 444/1000 [00:11<00:17, 32.68it/s, failures=0, objective=-0.345]     44%|████▍     | 445/1000 [00:11<00:16, 32.68it/s, failures=0, objective=-0.345]     45%|████▍     | 446/1000 [00:11<00:16, 32.61it/s, failures=0, objective=-0.345]     45%|████▍     | 446/1000 [00:11<00:16, 32.61it/s, failures=0, objective=-0.345]     45%|████▍     | 447/1000 [00:11<00:16, 32.61it/s, failures=0, objective=-0.345]     45%|████▍     | 448/1000 [00:11<00:16, 32.61it/s, failures=0, objective=-0.345]     45%|████▍     | 449/1000 [00:11<00:16, 32.61it/s, failures=0, objective=-0.345]     45%|████▌     | 450/1000 [00:11<00:16, 32.58it/s, failures=0, objective=-0.345]     45%|████▌     | 450/1000 [00:11<00:16, 32.58it/s, failures=0, objective=-0.345]     45%|████▌     | 451/1000 [00:11<00:16, 32.58it/s, failures=0, objective=-0.345]     45%|████▌     | 452/1000 [00:11<00:16, 32.58it/s, failures=0, objective=-0.345]     45%|████▌     | 453/1000 [00:11<00:16, 32.58it/s, failures=0, objective=-0.345]     45%|████▌     | 454/1000 [00:11<00:16, 32.54it/s, failures=0, objective=-0.345]     45%|████▌     | 454/1000 [00:11<00:16, 32.54it/s, failures=0, objective=-0.345]     46%|████▌     | 455/1000 [00:11<00:16, 32.54it/s, failures=0, objective=-0.345]     46%|████▌     | 456/1000 [00:11<00:16, 32.54it/s, failures=0, objective=-0.345]     46%|████▌     | 457/1000 [00:11<00:16, 32.54it/s, failures=0, objective=-0.345]     46%|████▌     | 458/1000 [00:11<00:16, 32.49it/s, failures=0, objective=-0.345]     46%|████▌     | 458/1000 [00:11<00:16, 32.49it/s, failures=0, objective=-0.345]     46%|████▌     | 459/1000 [00:11<00:16, 32.49it/s, failures=0, objective=-0.345]     46%|████▌     | 460/1000 [00:11<00:16, 32.49it/s, failures=0, objective=-0.345]     46%|████▌     | 461/1000 [00:11<00:16, 32.49it/s, failures=0, objective=-0.345]     46%|████▌     | 462/1000 [00:12<00:16, 32.25it/s, failures=0, objective=-0.345]     46%|████▌     | 462/1000 [00:12<00:16, 32.25it/s, failures=0, objective=-0.345]     46%|████▋     | 463/1000 [00:12<00:16, 32.25it/s, failures=0, objective=-0.345]     46%|████▋     | 464/1000 [00:12<00:16, 32.25it/s, failures=0, objective=-0.345]     46%|████▋     | 465/1000 [00:12<00:16, 32.25it/s, failures=0, objective=-0.345]     47%|████▋     | 466/1000 [00:12<00:16, 32.06it/s, failures=0, objective=-0.345]     47%|████▋     | 466/1000 [00:12<00:16, 32.06it/s, failures=0, objective=-0.345]     47%|████▋     | 467/1000 [00:12<00:16, 32.06it/s, failures=0, objective=-0.345]     47%|████▋     | 468/1000 [00:12<00:16, 32.06it/s, failures=0, objective=-0.345]     47%|████▋     | 469/1000 [00:12<00:16, 32.06it/s, failures=0, objective=-0.345]     47%|████▋     | 470/1000 [00:12<00:16, 32.17it/s, failures=0, objective=-0.345]     47%|████▋     | 470/1000 [00:12<00:16, 32.17it/s, failures=0, objective=-0.345]     47%|████▋     | 471/1000 [00:12<00:16, 32.17it/s, failures=0, objective=-0.345]     47%|████▋     | 472/1000 [00:12<00:16, 32.17it/s, failures=0, objective=-0.345]     47%|████▋     | 473/1000 [00:12<00:16, 32.17it/s, failures=0, objective=-0.345]     47%|████▋     | 474/1000 [00:12<00:16, 32.22it/s, failures=0, objective=-0.345]     47%|████▋     | 474/1000 [00:12<00:16, 32.22it/s, failures=0, objective=-0.345]     48%|████▊     | 475/1000 [00:12<00:16, 32.22it/s, failures=0, objective=-0.345]     48%|████▊     | 476/1000 [00:12<00:16, 32.22it/s, failures=0, objective=-0.345]     48%|████▊     | 477/1000 [00:12<00:16, 32.22it/s, failures=0, objective=-0.345]     48%|████▊     | 478/1000 [00:12<00:16, 32.15it/s, failures=0, objective=-0.345]     48%|████▊     | 478/1000 [00:12<00:16, 32.15it/s, failures=0, objective=-0.345]     48%|████▊     | 479/1000 [00:12<00:16, 32.15it/s, failures=0, objective=-0.345]     48%|████▊     | 480/1000 [00:12<00:16, 32.15it/s, failures=0, objective=-0.345]     48%|████▊     | 481/1000 [00:12<00:16, 32.15it/s, failures=0, objective=-0.345]     48%|████▊     | 482/1000 [00:12<00:17, 30.08it/s, failures=0, objective=-0.345]     48%|████▊     | 482/1000 [00:12<00:17, 30.08it/s, failures=0, objective=-0.345]     48%|████▊     | 483/1000 [00:12<00:17, 30.08it/s, failures=0, objective=-0.345]     48%|████▊     | 484/1000 [00:12<00:17, 30.08it/s, failures=0, objective=-0.345]     48%|████▊     | 485/1000 [00:12<00:17, 30.08it/s, failures=0, objective=-0.345]     49%|████▊     | 486/1000 [00:12<00:16, 30.46it/s, failures=0, objective=-0.345]     49%|████▊     | 486/1000 [00:12<00:16, 30.46it/s, failures=0, objective=-0.345]     49%|████▊     | 487/1000 [00:12<00:16, 30.46it/s, failures=0, objective=-0.345]     49%|████▉     | 488/1000 [00:12<00:16, 30.46it/s, failures=0, objective=-0.345]     49%|████▉     | 489/1000 [00:12<00:16, 30.46it/s, failures=0, objective=-0.345]     49%|████▉     | 490/1000 [00:12<00:18, 27.84it/s, failures=0, objective=-0.345]     49%|████▉     | 490/1000 [00:12<00:18, 27.84it/s, failures=0, objective=-0.345]     49%|████▉     | 491/1000 [00:12<00:18, 27.84it/s, failures=0, objective=-0.345]     49%|████▉     | 492/1000 [00:12<00:18, 27.84it/s, failures=0, objective=-0.345]     49%|████▉     | 493/1000 [00:12<00:18, 27.84it/s, failures=0, objective=-0.345]     49%|████▉     | 494/1000 [00:13<00:17, 28.76it/s, failures=0, objective=-0.345]     49%|████▉     | 494/1000 [00:13<00:17, 28.76it/s, failures=0, objective=-0.345]     50%|████▉     | 495/1000 [00:13<00:17, 28.76it/s, failures=0, objective=-0.345]     50%|████▉     | 496/1000 [00:13<00:17, 28.76it/s, failures=0, objective=-0.345]     50%|████▉     | 497/1000 [00:13<00:17, 28.76it/s, failures=0, objective=-0.345]     50%|████▉     | 498/1000 [00:13<00:16, 29.70it/s, failures=0, objective=-0.345]     50%|████▉     | 498/1000 [00:13<00:16, 29.70it/s, failures=0, objective=-0.345]     50%|████▉     | 499/1000 [00:13<00:16, 29.70it/s, failures=0, objective=-0.345]     50%|█████     | 500/1000 [00:13<00:16, 29.70it/s, failures=0, objective=-0.345]     50%|█████     | 501/1000 [00:13<00:16, 29.70it/s, failures=0, objective=-0.345]     50%|█████     | 502/1000 [00:13<00:16, 30.41it/s, failures=0, objective=-0.345]     50%|█████     | 502/1000 [00:13<00:16, 30.41it/s, failures=0, objective=-0.345]     50%|█████     | 503/1000 [00:13<00:16, 30.41it/s, failures=0, objective=-0.345]     50%|█████     | 504/1000 [00:13<00:16, 30.41it/s, failures=0, objective=-0.345]     50%|█████     | 505/1000 [00:13<00:16, 30.41it/s, failures=0, objective=-0.345]     51%|█████     | 506/1000 [00:13<00:15, 30.92it/s, failures=0, objective=-0.345]     51%|█████     | 506/1000 [00:13<00:15, 30.92it/s, failures=0, objective=-0.345]     51%|█████     | 507/1000 [00:13<00:15, 30.92it/s, failures=0, objective=-0.345]     51%|█████     | 508/1000 [00:13<00:15, 30.92it/s, failures=0, objective=-0.345]     51%|█████     | 509/1000 [00:13<00:15, 30.92it/s, failures=0, objective=-0.345]     51%|█████     | 510/1000 [00:13<00:16, 29.25it/s, failures=0, objective=-0.345]     51%|█████     | 510/1000 [00:13<00:16, 29.25it/s, failures=0, objective=-0.345]     51%|█████     | 511/1000 [00:13<00:16, 29.25it/s, failures=0, objective=-0.345]     51%|█████     | 512/1000 [00:13<00:16, 29.25it/s, failures=0, objective=-0.345]     51%|█████▏    | 513/1000 [00:13<00:16, 29.25it/s, failures=0, objective=-0.345]     51%|█████▏    | 514/1000 [00:13<00:16, 30.06it/s, failures=0, objective=-0.345]     51%|█████▏    | 514/1000 [00:13<00:16, 30.06it/s, failures=0, objective=-0.345]     52%|█████▏    | 515/1000 [00:13<00:16, 30.06it/s, failures=0, objective=-0.345]     52%|█████▏    | 516/1000 [00:13<00:16, 30.06it/s, failures=0, objective=-0.345]     52%|█████▏    | 517/1000 [00:13<00:16, 30.06it/s, failures=0, objective=-0.345]     52%|█████▏    | 518/1000 [00:13<00:15, 30.67it/s, failures=0, objective=-0.345]     52%|█████▏    | 518/1000 [00:13<00:15, 30.67it/s, failures=0, objective=-0.345]     52%|█████▏    | 519/1000 [00:13<00:15, 30.67it/s, failures=0, objective=-0.345]     52%|█████▏    | 520/1000 [00:13<00:15, 30.67it/s, failures=0, objective=-0.345]     52%|█████▏    | 521/1000 [00:13<00:15, 30.67it/s, failures=0, objective=-0.345]     52%|█████▏    | 522/1000 [00:13<00:15, 31.03it/s, failures=0, objective=-0.345]     52%|█████▏    | 522/1000 [00:13<00:15, 31.03it/s, failures=0, objective=-0.345]     52%|█████▏    | 523/1000 [00:13<00:15, 31.03it/s, failures=0, objective=-0.345]     52%|█████▏    | 524/1000 [00:13<00:15, 31.03it/s, failures=0, objective=-0.345]     52%|█████▎    | 525/1000 [00:13<00:15, 31.03it/s, failures=0, objective=-0.345]     53%|█████▎    | 526/1000 [00:14<00:15, 30.77it/s, failures=0, objective=-0.345]     53%|█████▎    | 526/1000 [00:14<00:15, 30.77it/s, failures=0, objective=-0.345]     53%|█████▎    | 527/1000 [00:14<00:15, 30.77it/s, failures=0, objective=-0.345]     53%|█████▎    | 528/1000 [00:14<00:15, 30.77it/s, failures=0, objective=-0.345]     53%|█████▎    | 529/1000 [00:14<00:15, 30.77it/s, failures=0, objective=-0.345]     53%|█████▎    | 530/1000 [00:14<00:15, 31.07it/s, failures=0, objective=-0.345]     53%|█████▎    | 530/1000 [00:14<00:15, 31.07it/s, failures=0, objective=-0.345]     53%|█████▎    | 531/1000 [00:14<00:15, 31.07it/s, failures=0, objective=-0.345]     53%|█████▎    | 532/1000 [00:14<00:15, 31.07it/s, failures=0, objective=-0.345]     53%|█████▎    | 533/1000 [00:14<00:15, 31.07it/s, failures=0, objective=-0.345]     53%|█████▎    | 534/1000 [00:14<00:14, 31.31it/s, failures=0, objective=-0.345]     53%|█████▎    | 534/1000 [00:14<00:14, 31.31it/s, failures=0, objective=-0.345]     54%|█████▎    | 535/1000 [00:14<00:14, 31.31it/s, failures=0, objective=-0.345]     54%|█████▎    | 536/1000 [00:14<00:14, 31.31it/s, failures=0, objective=-0.345]     54%|█████▎    | 537/1000 [00:14<00:14, 31.31it/s, failures=0, objective=-0.345]     54%|█████▍    | 538/1000 [00:14<00:14, 31.47it/s, failures=0, objective=-0.345]     54%|█████▍    | 538/1000 [00:14<00:14, 31.47it/s, failures=0, objective=-0.345]     54%|█████▍    | 539/1000 [00:14<00:14, 31.47it/s, failures=0, objective=-0.345]     54%|█████▍    | 540/1000 [00:14<00:14, 31.47it/s, failures=0, objective=-0.345]     54%|█████▍    | 541/1000 [00:14<00:14, 31.47it/s, failures=0, objective=-0.345]     54%|█████▍    | 542/1000 [00:14<00:14, 31.60it/s, failures=0, objective=-0.345]     54%|█████▍    | 542/1000 [00:14<00:14, 31.60it/s, failures=0, objective=-0.345]     54%|█████▍    | 543/1000 [00:14<00:14, 31.60it/s, failures=0, objective=-0.345]     54%|█████▍    | 544/1000 [00:14<00:14, 31.60it/s, failures=0, objective=-0.345]     55%|█████▍    | 545/1000 [00:14<00:14, 31.60it/s, failures=0, objective=-0.345]     55%|█████▍    | 546/1000 [00:14<00:16, 28.22it/s, failures=0, objective=-0.345]     55%|█████▍    | 546/1000 [00:14<00:16, 28.22it/s, failures=0, objective=-0.345]     55%|█████▍    | 547/1000 [00:14<00:16, 28.22it/s, failures=0, objective=-0.345]     55%|█████▍    | 548/1000 [00:14<00:16, 28.22it/s, failures=0, objective=-0.345]     55%|█████▍    | 549/1000 [00:14<00:15, 28.22it/s, failures=0, objective=-0.345]     55%|█████▌    | 550/1000 [00:14<00:15, 29.01it/s, failures=0, objective=-0.345]     55%|█████▌    | 550/1000 [00:14<00:15, 29.01it/s, failures=0, objective=-0.345]     55%|█████▌    | 551/1000 [00:14<00:15, 29.01it/s, failures=0, objective=-0.345]     55%|█████▌    | 552/1000 [00:14<00:15, 29.01it/s, failures=0, objective=-0.345]     55%|█████▌    | 553/1000 [00:14<00:15, 29.01it/s, failures=0, objective=-0.345]     55%|█████▌    | 554/1000 [00:15<00:16, 27.04it/s, failures=0, objective=-0.345]     55%|█████▌    | 554/1000 [00:15<00:16, 27.04it/s, failures=0, objective=-0.345]     56%|█████▌    | 555/1000 [00:15<00:16, 27.04it/s, failures=0, objective=-0.345]     56%|█████▌    | 556/1000 [00:15<00:16, 27.04it/s, failures=0, objective=-0.345]     56%|█████▌    | 557/1000 [00:15<00:16, 27.04it/s, failures=0, objective=-0.345]     56%|█████▌    | 558/1000 [00:15<00:15, 27.95it/s, failures=0, objective=-0.345]     56%|█████▌    | 558/1000 [00:15<00:15, 27.95it/s, failures=0, objective=-0.345]     56%|█████▌    | 559/1000 [00:15<00:15, 27.95it/s, failures=0, objective=-0.345]     56%|█████▌    | 560/1000 [00:15<00:15, 27.95it/s, failures=0, objective=-0.345]     56%|█████▌    | 561/1000 [00:15<00:15, 27.95it/s, failures=0, objective=-0.345]     56%|█████▌    | 562/1000 [00:15<00:15, 28.68it/s, failures=0, objective=-0.345]     56%|█████▌    | 562/1000 [00:15<00:15, 28.68it/s, failures=0, objective=-0.345]     56%|█████▋    | 563/1000 [00:15<00:15, 28.68it/s, failures=0, objective=-0.345]     56%|█████▋    | 564/1000 [00:15<00:15, 28.68it/s, failures=0, objective=-0.345]     56%|█████▋    | 565/1000 [00:15<00:15, 28.68it/s, failures=0, objective=-0.345]     57%|█████▋    | 566/1000 [00:15<00:14, 29.39it/s, failures=0, objective=-0.345]     57%|█████▋    | 566/1000 [00:15<00:14, 29.39it/s, failures=0, objective=-0.345]     57%|█████▋    | 567/1000 [00:15<00:14, 29.39it/s, failures=0, objective=-0.345]     57%|█████▋    | 568/1000 [00:15<00:14, 29.39it/s, failures=0, objective=-0.345]     57%|█████▋    | 569/1000 [00:15<00:14, 29.39it/s, failures=0, objective=-0.345]     57%|█████▋    | 570/1000 [00:15<00:14, 30.04it/s, failures=0, objective=-0.345]     57%|█████▋    | 570/1000 [00:15<00:14, 30.04it/s, failures=0, objective=-0.345]     57%|█████▋    | 571/1000 [00:15<00:14, 30.04it/s, failures=0, objective=-0.345]     57%|█████▋    | 572/1000 [00:15<00:14, 30.04it/s, failures=0, objective=-0.345]     57%|█████▋    | 573/1000 [00:15<00:14, 30.04it/s, failures=0, objective=-0.345]     57%|█████▋    | 574/1000 [00:15<00:14, 30.40it/s, failures=0, objective=-0.345]     57%|█████▋    | 574/1000 [00:15<00:14, 30.40it/s, failures=0, objective=-0.345]     57%|█████▊    | 575/1000 [00:15<00:13, 30.40it/s, failures=0, objective=-0.345]     58%|█████▊    | 576/1000 [00:15<00:13, 30.40it/s, failures=0, objective=-0.345]     58%|█████▊    | 577/1000 [00:15<00:13, 30.40it/s, failures=0, objective=-0.345]     58%|█████▊    | 578/1000 [00:15<00:13, 30.75it/s, failures=0, objective=-0.345]     58%|█████▊    | 578/1000 [00:15<00:13, 30.75it/s, failures=0, objective=-0.345]     58%|█████▊    | 579/1000 [00:15<00:13, 30.75it/s, failures=0, objective=-0.345]     58%|█████▊    | 580/1000 [00:15<00:13, 30.75it/s, failures=0, objective=-0.345]     58%|█████▊    | 581/1000 [00:15<00:13, 30.75it/s, failures=0, objective=-0.345]     58%|█████▊    | 582/1000 [00:16<00:13, 30.77it/s, failures=0, objective=-0.345]     58%|█████▊    | 582/1000 [00:16<00:13, 30.77it/s, failures=0, objective=-0.345]     58%|█████▊    | 583/1000 [00:16<00:13, 30.77it/s, failures=0, objective=-0.345]     58%|█████▊    | 584/1000 [00:16<00:13, 30.77it/s, failures=0, objective=-0.345]     58%|█████▊    | 585/1000 [00:16<00:13, 30.77it/s, failures=0, objective=-0.345]     59%|█████▊    | 586/1000 [00:16<00:13, 31.01it/s, failures=0, objective=-0.345]     59%|█████▊    | 586/1000 [00:16<00:13, 31.01it/s, failures=0, objective=-0.345]     59%|█████▊    | 587/1000 [00:16<00:13, 31.01it/s, failures=0, objective=-0.345]     59%|█████▉    | 588/1000 [00:16<00:13, 31.01it/s, failures=0, objective=-0.345]     59%|█████▉    | 589/1000 [00:16<00:13, 31.01it/s, failures=0, objective=-0.345]     59%|█████▉    | 590/1000 [00:16<00:13, 31.20it/s, failures=0, objective=-0.345]     59%|█████▉    | 590/1000 [00:16<00:13, 31.20it/s, failures=0, objective=-0.345]     59%|█████▉    | 591/1000 [00:16<00:13, 31.20it/s, failures=0, objective=-0.345]     59%|█████▉    | 592/1000 [00:16<00:13, 31.20it/s, failures=0, objective=-0.345]     59%|█████▉    | 593/1000 [00:16<00:13, 31.20it/s, failures=0, objective=-0.345]     59%|█████▉    | 594/1000 [00:16<00:13, 31.23it/s, failures=0, objective=-0.345]     59%|█████▉    | 594/1000 [00:16<00:13, 31.23it/s, failures=0, objective=-0.345]     60%|█████▉    | 595/1000 [00:16<00:12, 31.23it/s, failures=0, objective=-0.345]     60%|█████▉    | 596/1000 [00:16<00:12, 31.23it/s, failures=0, objective=-0.345]     60%|█████▉    | 597/1000 [00:16<00:12, 31.23it/s, failures=0, objective=-0.345]     60%|█████▉    | 598/1000 [00:16<00:12, 30.98it/s, failures=0, objective=-0.345]     60%|█████▉    | 598/1000 [00:16<00:12, 30.98it/s, failures=0, objective=-0.345]     60%|█████▉    | 599/1000 [00:16<00:12, 30.98it/s, failures=0, objective=-0.345]     60%|██████    | 600/1000 [00:16<00:12, 30.98it/s, failures=0, objective=-0.345]     60%|██████    | 601/1000 [00:16<00:12, 30.98it/s, failures=0, objective=-0.345]     60%|██████    | 602/1000 [00:16<00:12, 31.16it/s, failures=0, objective=-0.345]     60%|██████    | 602/1000 [00:16<00:12, 31.16it/s, failures=0, objective=-0.345]     60%|██████    | 603/1000 [00:16<00:12, 31.16it/s, failures=0, objective=-0.345]     60%|██████    | 604/1000 [00:16<00:12, 31.16it/s, failures=0, objective=-0.345]     60%|██████    | 605/1000 [00:16<00:12, 31.16it/s, failures=0, objective=-0.345]     61%|██████    | 606/1000 [00:16<00:13, 30.21it/s, failures=0, objective=-0.345]     61%|██████    | 606/1000 [00:16<00:13, 30.21it/s, failures=0, objective=-0.345]     61%|██████    | 607/1000 [00:16<00:13, 30.21it/s, failures=0, objective=-0.345]     61%|██████    | 608/1000 [00:16<00:12, 30.21it/s, failures=0, objective=-0.345]     61%|██████    | 609/1000 [00:16<00:12, 30.21it/s, failures=0, objective=-0.345]     61%|██████    | 610/1000 [00:16<00:12, 30.47it/s, failures=0, objective=-0.345]     61%|██████    | 610/1000 [00:16<00:12, 30.47it/s, failures=0, objective=-0.345]     61%|██████    | 611/1000 [00:16<00:12, 30.47it/s, failures=0, objective=-0.345]     61%|██████    | 612/1000 [00:16<00:12, 30.47it/s, failures=0, objective=-0.345]     61%|██████▏   | 613/1000 [00:16<00:12, 30.47it/s, failures=0, objective=-0.345]     61%|██████▏   | 614/1000 [00:17<00:12, 30.73it/s, failures=0, objective=-0.345]     61%|██████▏   | 614/1000 [00:17<00:12, 30.73it/s, failures=0, objective=-0.345]     62%|██████▏   | 615/1000 [00:17<00:12, 30.73it/s, failures=0, objective=-0.345]     62%|██████▏   | 616/1000 [00:17<00:12, 30.73it/s, failures=0, objective=-0.345]     62%|██████▏   | 617/1000 [00:17<00:12, 30.73it/s, failures=0, objective=-0.345]     62%|██████▏   | 618/1000 [00:17<00:12, 30.95it/s, failures=0, objective=-0.345]     62%|██████▏   | 618/1000 [00:17<00:12, 30.95it/s, failures=0, objective=-0.345]     62%|██████▏   | 619/1000 [00:17<00:12, 30.95it/s, failures=0, objective=-0.345]     62%|██████▏   | 620/1000 [00:17<00:12, 30.95it/s, failures=0, objective=-0.345]     62%|██████▏   | 621/1000 [00:17<00:12, 30.95it/s, failures=0, objective=-0.345]     62%|██████▏   | 622/1000 [00:17<00:12, 30.96it/s, failures=0, objective=-0.345]     62%|██████▏   | 622/1000 [00:17<00:12, 30.96it/s, failures=0, objective=-0.345]     62%|██████▏   | 623/1000 [00:17<00:12, 30.96it/s, failures=0, objective=-0.345]     62%|██████▏   | 624/1000 [00:17<00:12, 30.96it/s, failures=0, objective=-0.345]     62%|██████▎   | 625/1000 [00:17<00:12, 30.96it/s, failures=0, objective=-0.345]     63%|██████▎   | 626/1000 [00:17<00:12, 31.05it/s, failures=0, objective=-0.345]     63%|██████▎   | 626/1000 [00:17<00:12, 31.05it/s, failures=0, objective=-0.345]     63%|██████▎   | 627/1000 [00:17<00:12, 31.05it/s, failures=0, objective=-0.345]     63%|██████▎   | 628/1000 [00:17<00:11, 31.05it/s, failures=0, objective=-0.345]     63%|██████▎   | 629/1000 [00:17<00:11, 31.05it/s, failures=0, objective=-0.345]     63%|██████▎   | 630/1000 [00:17<00:11, 31.06it/s, failures=0, objective=-0.345]     63%|██████▎   | 630/1000 [00:17<00:11, 31.06it/s, failures=0, objective=-0.345]     63%|██████▎   | 631/1000 [00:17<00:11, 31.06it/s, failures=0, objective=-0.345]     63%|██████▎   | 632/1000 [00:17<00:11, 31.06it/s, failures=0, objective=-0.345]     63%|██████▎   | 633/1000 [00:17<00:11, 31.06it/s, failures=0, objective=-0.345]     63%|██████▎   | 634/1000 [00:17<00:11, 30.98it/s, failures=0, objective=-0.345]     63%|██████▎   | 634/1000 [00:17<00:11, 30.98it/s, failures=0, objective=-0.345]     64%|██████▎   | 635/1000 [00:17<00:11, 30.98it/s, failures=0, objective=-0.345]     64%|██████▎   | 636/1000 [00:17<00:11, 30.98it/s, failures=0, objective=-0.345]     64%|██████▎   | 637/1000 [00:17<00:11, 30.98it/s, failures=0, objective=-0.345]     64%|██████▍   | 638/1000 [00:17<00:11, 30.94it/s, failures=0, objective=-0.345]     64%|██████▍   | 638/1000 [00:17<00:11, 30.94it/s, failures=0, objective=-0.345]     64%|██████▍   | 639/1000 [00:17<00:11, 30.94it/s, failures=0, objective=-0.345]     64%|██████▍   | 640/1000 [00:17<00:11, 30.94it/s, failures=0, objective=-0.345]     64%|██████▍   | 641/1000 [00:17<00:11, 30.94it/s, failures=0, objective=-0.345]     64%|██████▍   | 642/1000 [00:17<00:11, 31.10it/s, failures=0, objective=-0.345]     64%|██████▍   | 642/1000 [00:17<00:11, 31.10it/s, failures=0, objective=-0.345]     64%|██████▍   | 643/1000 [00:17<00:11, 31.10it/s, failures=0, objective=-0.345]     64%|██████▍   | 644/1000 [00:17<00:11, 31.10it/s, failures=0, objective=-0.345]     64%|██████▍   | 645/1000 [00:17<00:11, 31.10it/s, failures=0, objective=-0.345]     65%|██████▍   | 646/1000 [00:18<00:11, 31.15it/s, failures=0, objective=-0.345]     65%|██████▍   | 646/1000 [00:18<00:11, 31.15it/s, failures=0, objective=-0.345]     65%|██████▍   | 647/1000 [00:18<00:11, 31.15it/s, failures=0, objective=-0.345]     65%|██████▍   | 648/1000 [00:18<00:11, 31.15it/s, failures=0, objective=-0.345]     65%|██████▍   | 649/1000 [00:18<00:11, 31.15it/s, failures=0, objective=-0.345]     65%|██████▌   | 650/1000 [00:18<00:11, 31.10it/s, failures=0, objective=-0.345]     65%|██████▌   | 650/1000 [00:18<00:11, 31.10it/s, failures=0, objective=-0.345]     65%|██████▌   | 651/1000 [00:18<00:11, 31.10it/s, failures=0, objective=-0.345]     65%|██████▌   | 652/1000 [00:18<00:11, 31.10it/s, failures=0, objective=-0.345]     65%|██████▌   | 653/1000 [00:18<00:11, 31.10it/s, failures=0, objective=-0.345]     65%|██████▌   | 654/1000 [00:18<00:11, 31.08it/s, failures=0, objective=-0.345]     65%|██████▌   | 654/1000 [00:18<00:11, 31.08it/s, failures=0, objective=-0.345]     66%|██████▌   | 655/1000 [00:18<00:11, 31.08it/s, failures=0, objective=-0.345]     66%|██████▌   | 656/1000 [00:18<00:11, 31.08it/s, failures=0, objective=-0.345]     66%|██████▌   | 657/1000 [00:18<00:11, 31.08it/s, failures=0, objective=-0.345]     66%|██████▌   | 658/1000 [00:18<00:11, 30.04it/s, failures=0, objective=-0.345]     66%|██████▌   | 658/1000 [00:18<00:11, 30.04it/s, failures=0, objective=-0.345]     66%|██████▌   | 659/1000 [00:18<00:11, 30.04it/s, failures=0, objective=-0.345]     66%|██████▌   | 660/1000 [00:18<00:11, 30.04it/s, failures=0, objective=-0.345]     66%|██████▌   | 661/1000 [00:18<00:11, 30.04it/s, failures=0, objective=-0.345]     66%|██████▌   | 662/1000 [00:18<00:11, 30.36it/s, failures=0, objective=-0.345]     66%|██████▌   | 662/1000 [00:18<00:11, 30.36it/s, failures=0, objective=-0.345]     66%|██████▋   | 663/1000 [00:18<00:11, 30.36it/s, failures=0, objective=-0.345]     66%|██████▋   | 664/1000 [00:18<00:11, 30.36it/s, failures=0, objective=-0.345]     66%|██████▋   | 665/1000 [00:18<00:11, 30.36it/s, failures=0, objective=-0.345]     67%|██████▋   | 666/1000 [00:18<00:10, 30.71it/s, failures=0, objective=-0.345]     67%|██████▋   | 666/1000 [00:18<00:10, 30.71it/s, failures=0, objective=-0.345]     67%|██████▋   | 667/1000 [00:18<00:10, 30.71it/s, failures=0, objective=-0.345]     67%|██████▋   | 668/1000 [00:18<00:10, 30.71it/s, failures=0, objective=-0.345]     67%|██████▋   | 669/1000 [00:18<00:10, 30.71it/s, failures=0, objective=-0.345]     67%|██████▋   | 670/1000 [00:18<00:10, 30.88it/s, failures=0, objective=-0.345]     67%|██████▋   | 670/1000 [00:18<00:10, 30.88it/s, failures=0, objective=-0.345]     67%|██████▋   | 671/1000 [00:18<00:10, 30.88it/s, failures=0, objective=-0.345]     67%|██████▋   | 672/1000 [00:18<00:10, 30.88it/s, failures=0, objective=-0.345]     67%|██████▋   | 673/1000 [00:18<00:10, 30.88it/s, failures=0, objective=-0.345]     67%|██████▋   | 674/1000 [00:18<00:10, 31.00it/s, failures=0, objective=-0.345]     67%|██████▋   | 674/1000 [00:18<00:10, 31.00it/s, failures=0, objective=-0.345]     68%|██████▊   | 675/1000 [00:18<00:10, 31.00it/s, failures=0, objective=-0.345]     68%|██████▊   | 676/1000 [00:18<00:10, 31.00it/s, failures=0, objective=-0.345]     68%|██████▊   | 677/1000 [00:18<00:10, 31.00it/s, failures=0, objective=-0.345]     68%|██████▊   | 678/1000 [00:19<00:10, 30.94it/s, failures=0, objective=-0.345]     68%|██████▊   | 678/1000 [00:19<00:10, 30.94it/s, failures=0, objective=-0.345]     68%|██████▊   | 679/1000 [00:19<00:10, 30.94it/s, failures=0, objective=-0.345]     68%|██████▊   | 680/1000 [00:19<00:10, 30.94it/s, failures=0, objective=-0.345]     68%|██████▊   | 681/1000 [00:19<00:10, 30.94it/s, failures=0, objective=-0.345]     68%|██████▊   | 682/1000 [00:19<00:10, 30.99it/s, failures=0, objective=-0.345]     68%|██████▊   | 682/1000 [00:19<00:10, 30.99it/s, failures=0, objective=-0.344]     68%|██████▊   | 683/1000 [00:19<00:10, 30.99it/s, failures=0, objective=-0.344]     68%|██████▊   | 684/1000 [00:19<00:10, 30.99it/s, failures=0, objective=-0.344]     68%|██████▊   | 685/1000 [00:19<00:10, 30.99it/s, failures=0, objective=-0.344]     69%|██████▊   | 686/1000 [00:19<00:10, 30.98it/s, failures=0, objective=-0.344]     69%|██████▊   | 686/1000 [00:19<00:10, 30.98it/s, failures=0, objective=-0.344]     69%|██████▊   | 687/1000 [00:19<00:10, 30.98it/s, failures=0, objective=-0.344]     69%|██████▉   | 688/1000 [00:19<00:10, 30.98it/s, failures=0, objective=-0.344]     69%|██████▉   | 689/1000 [00:19<00:10, 30.98it/s, failures=0, objective=-0.344]     69%|██████▉   | 690/1000 [00:19<00:10, 30.87it/s, failures=0, objective=-0.344]     69%|██████▉   | 690/1000 [00:19<00:10, 30.87it/s, failures=0, objective=-0.344]     69%|██████▉   | 691/1000 [00:19<00:10, 30.87it/s, failures=0, objective=-0.344]     69%|██████▉   | 692/1000 [00:19<00:09, 30.87it/s, failures=0, objective=-0.344]     69%|██████▉   | 693/1000 [00:19<00:09, 30.87it/s, failures=0, objective=-0.344]     69%|██████▉   | 694/1000 [00:19<00:09, 30.90it/s, failures=0, objective=-0.344]     69%|██████▉   | 694/1000 [00:19<00:09, 30.90it/s, failures=0, objective=-0.344]     70%|██████▉   | 695/1000 [00:19<00:09, 30.90it/s, failures=0, objective=-0.344]     70%|██████▉   | 696/1000 [00:19<00:09, 30.90it/s, failures=0, objective=-0.344]     70%|██████▉   | 697/1000 [00:19<00:09, 30.90it/s, failures=0, objective=-0.344]     70%|██████▉   | 698/1000 [00:19<00:10, 29.52it/s, failures=0, objective=-0.344]     70%|██████▉   | 698/1000 [00:19<00:10, 29.52it/s, failures=0, objective=-0.344]     70%|██████▉   | 699/1000 [00:19<00:10, 29.52it/s, failures=0, objective=-0.344]     70%|███████   | 700/1000 [00:19<00:10, 29.52it/s, failures=0, objective=-0.344]     70%|███████   | 701/1000 [00:19<00:10, 29.52it/s, failures=0, objective=-0.344]     70%|███████   | 702/1000 [00:19<00:09, 29.96it/s, failures=0, objective=-0.344]     70%|███████   | 702/1000 [00:19<00:09, 29.96it/s, failures=0, objective=-0.344]     70%|███████   | 703/1000 [00:19<00:09, 29.96it/s, failures=0, objective=-0.344]     70%|███████   | 704/1000 [00:19<00:09, 29.96it/s, failures=0, objective=-0.344]     70%|███████   | 705/1000 [00:19<00:09, 29.96it/s, failures=0, objective=-0.344]     71%|███████   | 706/1000 [00:20<00:09, 30.34it/s, failures=0, objective=-0.344]     71%|███████   | 706/1000 [00:20<00:09, 30.34it/s, failures=0, objective=-0.344]     71%|███████   | 707/1000 [00:20<00:09, 30.34it/s, failures=0, objective=-0.344]     71%|███████   | 708/1000 [00:20<00:09, 30.34it/s, failures=0, objective=-0.344]     71%|███████   | 709/1000 [00:20<00:09, 30.34it/s, failures=0, objective=-0.344]     71%|███████   | 710/1000 [00:20<00:09, 30.57it/s, failures=0, objective=-0.344]     71%|███████   | 710/1000 [00:20<00:09, 30.57it/s, failures=0, objective=-0.344]     71%|███████   | 711/1000 [00:20<00:09, 30.57it/s, failures=0, objective=-0.344]     71%|███████   | 712/1000 [00:20<00:09, 30.57it/s, failures=0, objective=-0.344]     71%|███████▏  | 713/1000 [00:20<00:09, 30.57it/s, failures=0, objective=-0.344]     71%|███████▏  | 714/1000 [00:20<00:09, 30.70it/s, failures=0, objective=-0.344]     71%|███████▏  | 714/1000 [00:20<00:09, 30.70it/s, failures=0, objective=-0.344]     72%|███████▏  | 715/1000 [00:20<00:09, 30.70it/s, failures=0, objective=-0.344]     72%|███████▏  | 716/1000 [00:20<00:09, 30.70it/s, failures=0, objective=-0.344]     72%|███████▏  | 717/1000 [00:20<00:09, 30.70it/s, failures=0, objective=-0.344]     72%|███████▏  | 718/1000 [00:20<00:09, 30.80it/s, failures=0, objective=-0.344]     72%|███████▏  | 718/1000 [00:20<00:09, 30.80it/s, failures=0, objective=-0.344]     72%|███████▏  | 719/1000 [00:20<00:09, 30.80it/s, failures=0, objective=-0.344]     72%|███████▏  | 720/1000 [00:20<00:09, 30.80it/s, failures=0, objective=-0.344]     72%|███████▏  | 721/1000 [00:20<00:09, 30.80it/s, failures=0, objective=-0.344]     72%|███████▏  | 722/1000 [00:20<00:09, 30.73it/s, failures=0, objective=-0.344]     72%|███████▏  | 722/1000 [00:20<00:09, 30.73it/s, failures=0, objective=-0.344]     72%|███████▏  | 723/1000 [00:20<00:09, 30.73it/s, failures=0, objective=-0.344]     72%|███████▏  | 724/1000 [00:20<00:08, 30.73it/s, failures=0, objective=-0.344]     72%|███████▎  | 725/1000 [00:20<00:08, 30.73it/s, failures=0, objective=-0.344]     73%|███████▎  | 726/1000 [00:20<00:08, 30.80it/s, failures=0, objective=-0.344]     73%|███████▎  | 726/1000 [00:20<00:08, 30.80it/s, failures=0, objective=-0.344]     73%|███████▎  | 727/1000 [00:20<00:08, 30.80it/s, failures=0, objective=-0.344]     73%|███████▎  | 728/1000 [00:20<00:08, 30.80it/s, failures=0, objective=-0.344]     73%|███████▎  | 729/1000 [00:20<00:08, 30.80it/s, failures=0, objective=-0.344]     73%|███████▎  | 730/1000 [00:20<00:08, 30.69it/s, failures=0, objective=-0.344]     73%|███████▎  | 730/1000 [00:20<00:08, 30.69it/s, failures=0, objective=-0.344]     73%|███████▎  | 731/1000 [00:20<00:08, 30.69it/s, failures=0, objective=-0.344]     73%|███████▎  | 732/1000 [00:20<00:08, 30.69it/s, failures=0, objective=-0.344]     73%|███████▎  | 733/1000 [00:20<00:08, 30.69it/s, failures=0, objective=-0.344]     73%|███████▎  | 734/1000 [00:20<00:08, 30.79it/s, failures=0, objective=-0.344]     73%|███████▎  | 734/1000 [00:20<00:08, 30.79it/s, failures=0, objective=-0.344]     74%|███████▎  | 735/1000 [00:20<00:08, 30.79it/s, failures=0, objective=-0.344]     74%|███████▎  | 736/1000 [00:20<00:08, 30.79it/s, failures=0, objective=-0.344]     74%|███████▎  | 737/1000 [00:20<00:08, 30.79it/s, failures=0, objective=-0.344]     74%|███████▍  | 738/1000 [00:21<00:08, 30.88it/s, failures=0, objective=-0.344]     74%|███████▍  | 738/1000 [00:21<00:08, 30.88it/s, failures=0, objective=-0.344]     74%|███████▍  | 739/1000 [00:21<00:08, 30.88it/s, failures=0, objective=-0.344]     74%|███████▍  | 740/1000 [00:21<00:08, 30.88it/s, failures=0, objective=-0.344]     74%|███████▍  | 741/1000 [00:21<00:08, 30.88it/s, failures=0, objective=-0.344]     74%|███████▍  | 742/1000 [00:21<00:08, 30.96it/s, failures=0, objective=-0.344]     74%|███████▍  | 742/1000 [00:21<00:08, 30.96it/s, failures=0, objective=-0.344]     74%|███████▍  | 743/1000 [00:21<00:08, 30.96it/s, failures=0, objective=-0.344]     74%|███████▍  | 744/1000 [00:21<00:08, 30.96it/s, failures=0, objective=-0.344]     74%|███████▍  | 745/1000 [00:21<00:08, 30.96it/s, failures=0, objective=-0.344]     75%|███████▍  | 746/1000 [00:21<00:08, 31.01it/s, failures=0, objective=-0.344]     75%|███████▍  | 746/1000 [00:21<00:08, 31.01it/s, failures=0, objective=-0.344]     75%|███████▍  | 747/1000 [00:21<00:08, 31.01it/s, failures=0, objective=-0.344]     75%|███████▍  | 748/1000 [00:21<00:08, 31.01it/s, failures=0, objective=-0.344]     75%|███████▍  | 749/1000 [00:21<00:08, 31.01it/s, failures=0, objective=-0.344]     75%|███████▌  | 750/1000 [00:21<00:08, 31.02it/s, failures=0, objective=-0.344]     75%|███████▌  | 750/1000 [00:21<00:08, 31.02it/s, failures=0, objective=-0.344]     75%|███████▌  | 751/1000 [00:21<00:08, 31.02it/s, failures=0, objective=-0.344]     75%|███████▌  | 752/1000 [00:21<00:07, 31.02it/s, failures=0, objective=-0.344]     75%|███████▌  | 753/1000 [00:21<00:07, 31.02it/s, failures=0, objective=-0.344]     75%|███████▌  | 754/1000 [00:21<00:07, 31.00it/s, failures=0, objective=-0.344]     75%|███████▌  | 754/1000 [00:21<00:07, 31.00it/s, failures=0, objective=-0.344]     76%|███████▌  | 755/1000 [00:21<00:07, 31.00it/s, failures=0, objective=-0.344]     76%|███████▌  | 756/1000 [00:21<00:07, 31.00it/s, failures=0, objective=-0.344]     76%|███████▌  | 757/1000 [00:21<00:07, 31.00it/s, failures=0, objective=-0.344]     76%|███████▌  | 758/1000 [00:21<00:07, 31.00it/s, failures=0, objective=-0.344]     76%|███████▌  | 758/1000 [00:21<00:07, 31.00it/s, failures=0, objective=-0.344]     76%|███████▌  | 759/1000 [00:21<00:07, 31.00it/s, failures=0, objective=-0.344]     76%|███████▌  | 760/1000 [00:21<00:07, 31.00it/s, failures=0, objective=-0.344]     76%|███████▌  | 761/1000 [00:21<00:07, 31.00it/s, failures=0, objective=-0.344]     76%|███████▌  | 762/1000 [00:21<00:07, 30.91it/s, failures=0, objective=-0.344]     76%|███████▌  | 762/1000 [00:21<00:07, 30.91it/s, failures=0, objective=-0.344]     76%|███████▋  | 763/1000 [00:21<00:07, 30.91it/s, failures=0, objective=-0.344]     76%|███████▋  | 764/1000 [00:21<00:07, 30.91it/s, failures=0, objective=-0.344]     76%|███████▋  | 765/1000 [00:21<00:07, 30.91it/s, failures=0, objective=-0.344]     77%|███████▋  | 766/1000 [00:21<00:07, 30.97it/s, failures=0, objective=-0.344]     77%|███████▋  | 766/1000 [00:21<00:07, 30.97it/s, failures=0, objective=-0.344]     77%|███████▋  | 767/1000 [00:21<00:07, 30.97it/s, failures=0, objective=-0.344]     77%|███████▋  | 768/1000 [00:21<00:07, 30.97it/s, failures=0, objective=-0.344]     77%|███████▋  | 769/1000 [00:21<00:07, 30.97it/s, failures=0, objective=-0.344]     77%|███████▋  | 770/1000 [00:22<00:07, 31.02it/s, failures=0, objective=-0.344]     77%|███████▋  | 770/1000 [00:22<00:07, 31.02it/s, failures=0, objective=-0.344]     77%|███████▋  | 771/1000 [00:22<00:07, 31.02it/s, failures=0, objective=-0.344]     77%|███████▋  | 772/1000 [00:22<00:07, 31.02it/s, failures=0, objective=-0.344]     77%|███████▋  | 773/1000 [00:22<00:07, 31.02it/s, failures=0, objective=-0.344]     77%|███████▋  | 774/1000 [00:22<00:07, 31.03it/s, failures=0, objective=-0.344]     77%|███████▋  | 774/1000 [00:22<00:07, 31.03it/s, failures=0, objective=-0.344]     78%|███████▊  | 775/1000 [00:22<00:07, 31.03it/s, failures=0, objective=-0.344]     78%|███████▊  | 776/1000 [00:22<00:07, 31.03it/s, failures=0, objective=-0.344]     78%|███████▊  | 777/1000 [00:22<00:07, 31.03it/s, failures=0, objective=-0.344]     78%|███████▊  | 778/1000 [00:22<00:07, 31.06it/s, failures=0, objective=-0.344]     78%|███████▊  | 778/1000 [00:22<00:07, 31.06it/s, failures=0, objective=-0.344]     78%|███████▊  | 779/1000 [00:22<00:07, 31.06it/s, failures=0, objective=-0.344]     78%|███████▊  | 780/1000 [00:22<00:07, 31.06it/s, failures=0, objective=-0.344]     78%|███████▊  | 781/1000 [00:22<00:07, 31.06it/s, failures=0, objective=-0.344]     78%|███████▊  | 782/1000 [00:22<00:07, 30.96it/s, failures=0, objective=-0.344]     78%|███████▊  | 782/1000 [00:22<00:07, 30.96it/s, failures=0, objective=-0.344]     78%|███████▊  | 783/1000 [00:22<00:07, 30.96it/s, failures=0, objective=-0.344]     78%|███████▊  | 784/1000 [00:22<00:06, 30.96it/s, failures=0, objective=-0.344]     78%|███████▊  | 785/1000 [00:22<00:06, 30.96it/s, failures=0, objective=-0.344]     79%|███████▊  | 786/1000 [00:22<00:06, 30.96it/s, failures=0, objective=-0.344]     79%|███████▊  | 786/1000 [00:22<00:06, 30.96it/s, failures=0, objective=-0.344]     79%|███████▊  | 787/1000 [00:22<00:06, 30.96it/s, failures=0, objective=-0.344]     79%|███████▉  | 788/1000 [00:22<00:06, 30.96it/s, failures=0, objective=-0.344]     79%|███████▉  | 789/1000 [00:22<00:06, 30.96it/s, failures=0, objective=-0.344]     79%|███████▉  | 790/1000 [00:22<00:06, 30.95it/s, failures=0, objective=-0.344]     79%|███████▉  | 790/1000 [00:22<00:06, 30.95it/s, failures=0, objective=-0.344]     79%|███████▉  | 791/1000 [00:22<00:06, 30.95it/s, failures=0, objective=-0.344]     79%|███████▉  | 792/1000 [00:22<00:06, 30.95it/s, failures=0, objective=-0.344]     79%|███████▉  | 793/1000 [00:22<00:06, 30.95it/s, failures=0, objective=-0.344]     79%|███████▉  | 794/1000 [00:22<00:06, 30.86it/s, failures=0, objective=-0.344]     79%|███████▉  | 794/1000 [00:22<00:06, 30.86it/s, failures=0, objective=-0.344]     80%|███████▉  | 795/1000 [00:22<00:06, 30.86it/s, failures=0, objective=-0.344]     80%|███████▉  | 796/1000 [00:22<00:06, 30.86it/s, failures=0, objective=-0.344]     80%|███████▉  | 797/1000 [00:22<00:06, 30.86it/s, failures=0, objective=-0.344]     80%|███████▉  | 798/1000 [00:23<00:06, 30.84it/s, failures=0, objective=-0.344]     80%|███████▉  | 798/1000 [00:23<00:06, 30.84it/s, failures=0, objective=-0.344]     80%|███████▉  | 799/1000 [00:23<00:06, 30.84it/s, failures=0, objective=-0.344]     80%|████████  | 800/1000 [00:23<00:06, 30.84it/s, failures=0, objective=-0.344]     80%|████████  | 801/1000 [00:23<00:06, 30.84it/s, failures=0, objective=-0.344]     80%|████████  | 802/1000 [00:23<00:06, 29.02it/s, failures=0, objective=-0.344]     80%|████████  | 802/1000 [00:23<00:06, 29.02it/s, failures=0, objective=-0.344]     80%|████████  | 803/1000 [00:23<00:06, 29.02it/s, failures=0, objective=-0.344]     80%|████████  | 804/1000 [00:23<00:06, 29.02it/s, failures=0, objective=-0.344]     80%|████████  | 805/1000 [00:23<00:06, 29.02it/s, failures=0, objective=-0.344]     81%|████████  | 806/1000 [00:23<00:06, 29.52it/s, failures=0, objective=-0.344]     81%|████████  | 806/1000 [00:23<00:06, 29.52it/s, failures=0, objective=-0.344]     81%|████████  | 807/1000 [00:23<00:06, 29.52it/s, failures=0, objective=-0.344]     81%|████████  | 808/1000 [00:23<00:06, 29.52it/s, failures=0, objective=-0.344]     81%|████████  | 809/1000 [00:23<00:06, 29.52it/s, failures=0, objective=-0.344]     81%|████████  | 810/1000 [00:23<00:07, 27.06it/s, failures=0, objective=-0.344]     81%|████████  | 810/1000 [00:23<00:07, 27.06it/s, failures=0, objective=-0.344]     81%|████████  | 811/1000 [00:23<00:06, 27.06it/s, failures=0, objective=-0.344]     81%|████████  | 812/1000 [00:23<00:06, 27.06it/s, failures=0, objective=-0.344]     81%|████████▏ | 813/1000 [00:23<00:06, 27.06it/s, failures=0, objective=-0.344]     81%|████████▏ | 814/1000 [00:23<00:06, 28.03it/s, failures=0, objective=-0.344]     81%|████████▏ | 814/1000 [00:23<00:06, 28.03it/s, failures=0, objective=-0.344]     82%|████████▏ | 815/1000 [00:23<00:06, 28.03it/s, failures=0, objective=-0.344]     82%|████████▏ | 816/1000 [00:23<00:06, 28.03it/s, failures=0, objective=-0.344]     82%|████████▏ | 817/1000 [00:23<00:06, 28.03it/s, failures=0, objective=-0.344]     82%|████████▏ | 818/1000 [00:23<00:06, 28.76it/s, failures=0, objective=-0.344]     82%|████████▏ | 818/1000 [00:23<00:06, 28.76it/s, failures=0, objective=-0.344]     82%|████████▏ | 819/1000 [00:23<00:06, 28.76it/s, failures=0, objective=-0.344]     82%|████████▏ | 820/1000 [00:23<00:06, 28.76it/s, failures=0, objective=-0.344]     82%|████████▏ | 821/1000 [00:23<00:06, 28.76it/s, failures=0, objective=-0.344]     82%|████████▏ | 822/1000 [00:23<00:06, 27.34it/s, failures=0, objective=-0.344]     82%|████████▏ | 822/1000 [00:23<00:06, 27.34it/s, failures=0, objective=-0.344]     82%|████████▏ | 823/1000 [00:23<00:06, 27.34it/s, failures=0, objective=-0.344]     82%|████████▏ | 824/1000 [00:23<00:06, 27.34it/s, failures=0, objective=-0.344]     82%|████████▎ | 825/1000 [00:23<00:06, 27.34it/s, failures=0, objective=-0.344]     83%|████████▎ | 826/1000 [00:24<00:06, 28.24it/s, failures=0, objective=-0.344]     83%|████████▎ | 826/1000 [00:24<00:06, 28.24it/s, failures=0, objective=-0.344]     83%|████████▎ | 827/1000 [00:24<00:06, 28.24it/s, failures=0, objective=-0.344]     83%|████████▎ | 828/1000 [00:24<00:06, 28.24it/s, failures=0, objective=-0.344]     83%|████████▎ | 829/1000 [00:24<00:06, 28.24it/s, failures=0, objective=-0.344]     83%|████████▎ | 830/1000 [00:24<00:05, 28.82it/s, failures=0, objective=-0.344]     83%|████████▎ | 830/1000 [00:24<00:05, 28.82it/s, failures=0, objective=-0.344]     83%|████████▎ | 831/1000 [00:24<00:05, 28.82it/s, failures=0, objective=-0.344]     83%|████████▎ | 832/1000 [00:24<00:05, 28.82it/s, failures=0, objective=-0.344]     83%|████████▎ | 833/1000 [00:24<00:05, 28.82it/s, failures=0, objective=-0.344]     83%|████████▎ | 834/1000 [00:24<00:05, 29.22it/s, failures=0, objective=-0.344]     83%|████████▎ | 834/1000 [00:24<00:05, 29.22it/s, failures=0, objective=-0.344]     84%|████████▎ | 835/1000 [00:24<00:05, 29.22it/s, failures=0, objective=-0.344]     84%|████████▎ | 836/1000 [00:24<00:05, 29.22it/s, failures=0, objective=-0.344]     84%|████████▎ | 837/1000 [00:24<00:05, 29.22it/s, failures=0, objective=-0.344]     84%|████████▍ | 838/1000 [00:24<00:05, 29.52it/s, failures=0, objective=-0.344]     84%|████████▍ | 838/1000 [00:24<00:05, 29.52it/s, failures=0, objective=-0.344]     84%|████████▍ | 839/1000 [00:24<00:05, 29.52it/s, failures=0, objective=-0.344]     84%|████████▍ | 840/1000 [00:24<00:05, 29.52it/s, failures=0, objective=-0.344]     84%|████████▍ | 841/1000 [00:24<00:05, 29.52it/s, failures=0, objective=-0.344]     84%|████████▍ | 842/1000 [00:24<00:05, 29.72it/s, failures=0, objective=-0.344]     84%|████████▍ | 842/1000 [00:24<00:05, 29.72it/s, failures=0, objective=-0.344]     84%|████████▍ | 843/1000 [00:24<00:05, 29.72it/s, failures=0, objective=-0.344]     84%|████████▍ | 844/1000 [00:24<00:05, 29.72it/s, failures=0, objective=-0.344]     84%|████████▍ | 845/1000 [00:24<00:05, 29.72it/s, failures=0, objective=-0.344]     85%|████████▍ | 846/1000 [00:24<00:05, 29.93it/s, failures=0, objective=-0.344]     85%|████████▍ | 846/1000 [00:24<00:05, 29.93it/s, failures=0, objective=-0.344]     85%|████████▍ | 847/1000 [00:24<00:05, 29.93it/s, failures=0, objective=-0.344]     85%|████████▍ | 848/1000 [00:24<00:05, 29.93it/s, failures=0, objective=-0.344]     85%|████████▍ | 849/1000 [00:24<00:05, 29.93it/s, failures=0, objective=-0.344]     85%|████████▌ | 850/1000 [00:24<00:04, 30.03it/s, failures=0, objective=-0.344]     85%|████████▌ | 850/1000 [00:24<00:04, 30.03it/s, failures=0, objective=-0.344]     85%|████████▌ | 851/1000 [00:24<00:04, 30.03it/s, failures=0, objective=-0.344]     85%|████████▌ | 852/1000 [00:24<00:04, 30.03it/s, failures=0, objective=-0.344]     85%|████████▌ | 853/1000 [00:24<00:04, 30.03it/s, failures=0, objective=-0.344]     85%|████████▌ | 854/1000 [00:24<00:04, 30.08it/s, failures=0, objective=-0.344]     85%|████████▌ | 854/1000 [00:24<00:04, 30.08it/s, failures=0, objective=-0.344]     86%|████████▌ | 855/1000 [00:24<00:04, 30.08it/s, failures=0, objective=-0.344]     86%|████████▌ | 856/1000 [00:24<00:04, 30.08it/s, failures=0, objective=-0.344]     86%|████████▌ | 857/1000 [00:24<00:04, 30.08it/s, failures=0, objective=-0.344]     86%|████████▌ | 858/1000 [00:25<00:04, 30.14it/s, failures=0, objective=-0.344]     86%|████████▌ | 858/1000 [00:25<00:04, 30.14it/s, failures=0, objective=-0.344]     86%|████████▌ | 859/1000 [00:25<00:04, 30.14it/s, failures=0, objective=-0.344]     86%|████████▌ | 860/1000 [00:25<00:04, 30.14it/s, failures=0, objective=-0.344]     86%|████████▌ | 861/1000 [00:25<00:04, 30.14it/s, failures=0, objective=-0.344]     86%|████████▌ | 862/1000 [00:25<00:04, 30.13it/s, failures=0, objective=-0.344]     86%|████████▌ | 862/1000 [00:25<00:04, 30.13it/s, failures=0, objective=-0.344]     86%|████████▋ | 863/1000 [00:25<00:04, 30.13it/s, failures=0, objective=-0.344]     86%|████████▋ | 864/1000 [00:25<00:04, 30.13it/s, failures=0, objective=-0.344]     86%|████████▋ | 865/1000 [00:25<00:04, 30.13it/s, failures=0, objective=-0.344]     87%|████████▋ | 866/1000 [00:25<00:04, 30.17it/s, failures=0, objective=-0.344]     87%|████████▋ | 866/1000 [00:25<00:04, 30.17it/s, failures=0, objective=-0.344]     87%|████████▋ | 867/1000 [00:25<00:04, 30.17it/s, failures=0, objective=-0.344]     87%|████████▋ | 868/1000 [00:25<00:04, 30.17it/s, failures=0, objective=-0.344]     87%|████████▋ | 869/1000 [00:25<00:04, 30.17it/s, failures=0, objective=-0.344]     87%|████████▋ | 870/1000 [00:25<00:04, 30.00it/s, failures=0, objective=-0.344]     87%|████████▋ | 870/1000 [00:25<00:04, 30.00it/s, failures=0, objective=-0.344]     87%|████████▋ | 871/1000 [00:25<00:04, 30.00it/s, failures=0, objective=-0.344]     87%|████████▋ | 872/1000 [00:25<00:04, 30.00it/s, failures=0, objective=-0.344]     87%|████████▋ | 873/1000 [00:25<00:04, 30.00it/s, failures=0, objective=-0.344]     87%|████████▋ | 874/1000 [00:25<00:04, 29.97it/s, failures=0, objective=-0.344]     87%|████████▋ | 874/1000 [00:25<00:04, 29.97it/s, failures=0, objective=-0.344]     88%|████████▊ | 875/1000 [00:25<00:04, 29.97it/s, failures=0, objective=-0.344]     88%|████████▊ | 876/1000 [00:25<00:04, 29.97it/s, failures=0, objective=-0.344]     88%|████████▊ | 877/1000 [00:25<00:04, 29.97it/s, failures=0, objective=-0.344]     88%|████████▊ | 878/1000 [00:25<00:04, 30.08it/s, failures=0, objective=-0.344]     88%|████████▊ | 878/1000 [00:25<00:04, 30.08it/s, failures=0, objective=-0.344]     88%|████████▊ | 879/1000 [00:25<00:04, 30.08it/s, failures=0, objective=-0.344]     88%|████████▊ | 880/1000 [00:25<00:03, 30.08it/s, failures=0, objective=-0.344]     88%|████████▊ | 881/1000 [00:25<00:03, 30.08it/s, failures=0, objective=-0.344]     88%|████████▊ | 882/1000 [00:25<00:03, 30.08it/s, failures=0, objective=-0.344]     88%|████████▊ | 882/1000 [00:25<00:03, 30.08it/s, failures=0, objective=-0.344]     88%|████████▊ | 883/1000 [00:25<00:03, 30.08it/s, failures=0, objective=-0.344]     88%|████████▊ | 884/1000 [00:25<00:03, 30.08it/s, failures=0, objective=-0.344]     88%|████████▊ | 885/1000 [00:25<00:03, 30.08it/s, failures=0, objective=-0.344]     89%|████████▊ | 886/1000 [00:26<00:03, 30.05it/s, failures=0, objective=-0.344]     89%|████████▊ | 886/1000 [00:26<00:03, 30.05it/s, failures=0, objective=-0.344]     89%|████████▊ | 887/1000 [00:26<00:03, 30.05it/s, failures=0, objective=-0.344]     89%|████████▉ | 888/1000 [00:26<00:03, 30.05it/s, failures=0, objective=-0.344]     89%|████████▉ | 889/1000 [00:26<00:03, 30.05it/s, failures=0, objective=-0.344]     89%|████████▉ | 890/1000 [00:26<00:03, 30.03it/s, failures=0, objective=-0.344]     89%|████████▉ | 890/1000 [00:26<00:03, 30.03it/s, failures=0, objective=-0.344]     89%|████████▉ | 891/1000 [00:26<00:03, 30.03it/s, failures=0, objective=-0.344]     89%|████████▉ | 892/1000 [00:26<00:03, 30.03it/s, failures=0, objective=-0.344]     89%|████████▉ | 893/1000 [00:26<00:03, 30.03it/s, failures=0, objective=-0.344]     89%|████████▉ | 894/1000 [00:26<00:03, 30.08it/s, failures=0, objective=-0.344]     89%|████████▉ | 894/1000 [00:26<00:03, 30.08it/s, failures=0, objective=-0.344]     90%|████████▉ | 895/1000 [00:26<00:03, 30.08it/s, failures=0, objective=-0.344]     90%|████████▉ | 896/1000 [00:26<00:03, 30.08it/s, failures=0, objective=-0.344]     90%|████████▉ | 897/1000 [00:26<00:03, 30.08it/s, failures=0, objective=-0.344]     90%|████████▉ | 898/1000 [00:26<00:03, 30.08it/s, failures=0, objective=-0.344]     90%|████████▉ | 898/1000 [00:26<00:03, 30.08it/s, failures=0, objective=-0.344]     90%|████████▉ | 899/1000 [00:26<00:03, 30.08it/s, failures=0, objective=-0.344]     90%|█████████ | 900/1000 [00:26<00:03, 30.08it/s, failures=0, objective=-0.344]     90%|█████████ | 901/1000 [00:26<00:03, 30.08it/s, failures=0, objective=-0.344]     90%|█████████ | 902/1000 [00:26<00:03, 29.82it/s, failures=0, objective=-0.344]     90%|█████████ | 902/1000 [00:26<00:03, 29.82it/s, failures=0, objective=-0.344]     90%|█████████ | 903/1000 [00:26<00:03, 29.82it/s, failures=0, objective=-0.344]     90%|█████████ | 904/1000 [00:26<00:03, 29.82it/s, failures=0, objective=-0.344]     90%|█████████ | 905/1000 [00:26<00:03, 29.82it/s, failures=0, objective=-0.344]     91%|█████████ | 906/1000 [00:26<00:03, 29.93it/s, failures=0, objective=-0.344]     91%|█████████ | 906/1000 [00:26<00:03, 29.93it/s, failures=0, objective=-0.344]     91%|█████████ | 907/1000 [00:26<00:03, 29.93it/s, failures=0, objective=-0.344]     91%|█████████ | 908/1000 [00:26<00:03, 29.93it/s, failures=0, objective=-0.344]     91%|█████████ | 909/1000 [00:26<00:03, 29.93it/s, failures=0, objective=-0.344]     91%|█████████ | 910/1000 [00:26<00:03, 29.79it/s, failures=0, objective=-0.344]     91%|█████████ | 910/1000 [00:26<00:03, 29.79it/s, failures=0, objective=-0.344]     91%|█████████ | 911/1000 [00:26<00:02, 29.79it/s, failures=0, objective=-0.344]     91%|█████████ | 912/1000 [00:26<00:02, 29.79it/s, failures=0, objective=-0.344]     91%|█████████▏| 913/1000 [00:26<00:02, 29.79it/s, failures=0, objective=-0.344]     91%|█████████▏| 914/1000 [00:26<00:02, 29.73it/s, failures=0, objective=-0.344]     91%|█████████▏| 914/1000 [00:26<00:02, 29.73it/s, failures=0, objective=-0.344]     92%|█████████▏| 915/1000 [00:26<00:02, 29.73it/s, failures=0, objective=-0.344]     92%|█████████▏| 916/1000 [00:26<00:02, 29.73it/s, failures=0, objective=-0.344]     92%|█████████▏| 917/1000 [00:26<00:02, 29.73it/s, failures=0, objective=-0.344]     92%|█████████▏| 918/1000 [00:27<00:02, 29.73it/s, failures=0, objective=-0.344]     92%|█████████▏| 918/1000 [00:27<00:02, 29.73it/s, failures=0, objective=-0.344]     92%|█████████▏| 919/1000 [00:27<00:02, 29.73it/s, failures=0, objective=-0.344]     92%|█████████▏| 920/1000 [00:27<00:02, 29.73it/s, failures=0, objective=-0.344]     92%|█████████▏| 921/1000 [00:27<00:02, 29.73it/s, failures=0, objective=-0.344]     92%|█████████▏| 922/1000 [00:27<00:02, 29.87it/s, failures=0, objective=-0.344]     92%|█████████▏| 922/1000 [00:27<00:02, 29.87it/s, failures=0, objective=-0.344]     92%|█████████▏| 923/1000 [00:27<00:02, 29.87it/s, failures=0, objective=-0.344]     92%|█████████▏| 924/1000 [00:27<00:02, 29.87it/s, failures=0, objective=-0.344]     92%|█████████▎| 925/1000 [00:27<00:02, 29.87it/s, failures=0, objective=-0.344]     93%|█████████▎| 926/1000 [00:27<00:02, 29.87it/s, failures=0, objective=-0.344]     93%|█████████▎| 926/1000 [00:27<00:02, 29.87it/s, failures=0, objective=-0.344]     93%|█████████▎| 927/1000 [00:27<00:02, 29.87it/s, failures=0, objective=-0.344]     93%|█████████▎| 928/1000 [00:27<00:02, 29.87it/s, failures=0, objective=-0.344]     93%|█████████▎| 929/1000 [00:27<00:02, 29.87it/s, failures=0, objective=-0.344]     93%|█████████▎| 930/1000 [00:27<00:02, 29.80it/s, failures=0, objective=-0.344]     93%|█████████▎| 930/1000 [00:27<00:02, 29.80it/s, failures=0, objective=-0.344]     93%|█████████▎| 931/1000 [00:27<00:02, 29.80it/s, failures=0, objective=-0.344]     93%|█████████▎| 932/1000 [00:27<00:02, 29.80it/s, failures=0, objective=-0.344]     93%|█████████▎| 933/1000 [00:27<00:02, 29.80it/s, failures=0, objective=-0.344]     93%|█████████▎| 934/1000 [00:27<00:02, 29.58it/s, failures=0, objective=-0.344]     93%|█████████▎| 934/1000 [00:27<00:02, 29.58it/s, failures=0, objective=-0.344]     94%|█████████▎| 935/1000 [00:27<00:02, 29.58it/s, failures=0, objective=-0.344]     94%|█████████▎| 936/1000 [00:27<00:02, 29.58it/s, failures=0, objective=-0.344]     94%|█████████▎| 937/1000 [00:27<00:02, 29.58it/s, failures=0, objective=-0.344]     94%|█████████▍| 938/1000 [00:27<00:02, 29.67it/s, failures=0, objective=-0.344]     94%|█████████▍| 938/1000 [00:27<00:02, 29.67it/s, failures=0, objective=-0.344]     94%|█████████▍| 939/1000 [00:27<00:02, 29.67it/s, failures=0, objective=-0.344]     94%|█████████▍| 940/1000 [00:27<00:02, 29.67it/s, failures=0, objective=-0.344]     94%|█████████▍| 941/1000 [00:27<00:01, 29.67it/s, failures=0, objective=-0.344]     94%|█████████▍| 942/1000 [00:27<00:01, 29.75it/s, failures=0, objective=-0.344]     94%|█████████▍| 942/1000 [00:27<00:01, 29.75it/s, failures=0, objective=-0.344]     94%|█████████▍| 943/1000 [00:27<00:01, 29.75it/s, failures=0, objective=-0.344]     94%|█████████▍| 944/1000 [00:27<00:01, 29.75it/s, failures=0, objective=-0.344]     94%|█████████▍| 945/1000 [00:27<00:01, 29.75it/s, failures=0, objective=-0.344]     95%|█████████▍| 946/1000 [00:28<00:01, 29.82it/s, failures=0, objective=-0.344]     95%|█████████▍| 946/1000 [00:28<00:01, 29.82it/s, failures=0, objective=-0.344]     95%|█████████▍| 947/1000 [00:28<00:01, 29.82it/s, failures=0, objective=-0.344]     95%|█████████▍| 948/1000 [00:28<00:01, 29.82it/s, failures=0, objective=-0.344]     95%|█████████▍| 949/1000 [00:28<00:01, 29.82it/s, failures=0, objective=-0.344]     95%|█████████▌| 950/1000 [00:28<00:01, 29.85it/s, failures=0, objective=-0.344]     95%|█████████▌| 950/1000 [00:28<00:01, 29.85it/s, failures=0, objective=-0.344]     95%|█████████▌| 951/1000 [00:28<00:01, 29.85it/s, failures=0, objective=-0.344]     95%|█████████▌| 952/1000 [00:28<00:01, 29.85it/s, failures=0, objective=-0.344]     95%|█████████▌| 953/1000 [00:28<00:01, 29.85it/s, failures=0, objective=-0.344]     95%|█████████▌| 954/1000 [00:28<00:01, 29.88it/s, failures=0, objective=-0.344]     95%|█████████▌| 954/1000 [00:28<00:01, 29.88it/s, failures=0, objective=-0.344]     96%|█████████▌| 955/1000 [00:28<00:01, 29.88it/s, failures=0, objective=-0.344]     96%|█████████▌| 956/1000 [00:28<00:01, 29.88it/s, failures=0, objective=-0.344]     96%|█████████▌| 957/1000 [00:28<00:01, 29.88it/s, failures=0, objective=-0.344]     96%|█████████▌| 958/1000 [00:28<00:01, 29.87it/s, failures=0, objective=-0.344]     96%|█████████▌| 958/1000 [00:28<00:01, 29.87it/s, failures=0, objective=-0.344]     96%|█████████▌| 959/1000 [00:28<00:01, 29.87it/s, failures=0, objective=-0.344]     96%|█████████▌| 960/1000 [00:28<00:01, 29.87it/s, failures=0, objective=-0.344]     96%|█████████▌| 961/1000 [00:28<00:01, 29.87it/s, failures=0, objective=-0.344]     96%|█████████▌| 962/1000 [00:28<00:01, 29.68it/s, failures=0, objective=-0.344]     96%|█████████▌| 962/1000 [00:28<00:01, 29.68it/s, failures=0, objective=-0.344]     96%|█████████▋| 963/1000 [00:28<00:01, 29.68it/s, failures=0, objective=-0.344]     96%|█████████▋| 964/1000 [00:28<00:01, 29.68it/s, failures=0, objective=-0.344]     96%|█████████▋| 965/1000 [00:28<00:01, 29.68it/s, failures=0, objective=-0.344]     97%|█████████▋| 966/1000 [00:28<00:01, 29.35it/s, failures=0, objective=-0.344]     97%|█████████▋| 966/1000 [00:28<00:01, 29.35it/s, failures=0, objective=-0.344]     97%|█████████▋| 967/1000 [00:28<00:01, 29.35it/s, failures=0, objective=-0.344]     97%|█████████▋| 968/1000 [00:28<00:01, 29.35it/s, failures=0, objective=-0.344]     97%|█████████▋| 969/1000 [00:28<00:01, 29.35it/s, failures=0, objective=-0.344]     97%|█████████▋| 970/1000 [00:28<00:01, 29.34it/s, failures=0, objective=-0.344]     97%|█████████▋| 970/1000 [00:28<00:01, 29.34it/s, failures=0, objective=-0.344]     97%|█████████▋| 971/1000 [00:28<00:00, 29.34it/s, failures=0, objective=-0.344]     97%|█████████▋| 972/1000 [00:28<00:00, 29.34it/s, failures=0, objective=-0.344]     97%|█████████▋| 973/1000 [00:28<00:00, 29.34it/s, failures=0, objective=-0.344]     97%|█████████▋| 974/1000 [00:28<00:00, 29.33it/s, failures=0, objective=-0.344]     97%|█████████▋| 974/1000 [00:28<00:00, 29.33it/s, failures=0, objective=-0.344]     98%|█████████▊| 975/1000 [00:28<00:00, 29.33it/s, failures=0, objective=-0.344]     98%|█████████▊| 976/1000 [00:28<00:00, 29.33it/s, failures=0, objective=-0.344]     98%|█████████▊| 977/1000 [00:28<00:00, 29.33it/s, failures=0, objective=-0.344]     98%|█████████▊| 978/1000 [00:29<00:00, 29.31it/s, failures=0, objective=-0.344]     98%|█████████▊| 978/1000 [00:29<00:00, 29.31it/s, failures=0, objective=-0.344]     98%|█████████▊| 979/1000 [00:29<00:00, 29.31it/s, failures=0, objective=-0.344]     98%|█████████▊| 980/1000 [00:29<00:00, 29.31it/s, failures=0, objective=-0.344]     98%|█████████▊| 981/1000 [00:29<00:00, 29.31it/s, failures=0, objective=-0.344]     98%|█████████▊| 982/1000 [00:29<00:00, 29.18it/s, failures=0, objective=-0.344]     98%|█████████▊| 982/1000 [00:29<00:00, 29.18it/s, failures=0, objective=-0.344]     98%|█████████▊| 983/1000 [00:29<00:00, 29.18it/s, failures=0, objective=-0.344]     98%|█████████▊| 984/1000 [00:29<00:00, 29.18it/s, failures=0, objective=-0.344]     98%|█████████▊| 985/1000 [00:29<00:00, 29.18it/s, failures=0, objective=-0.344]     99%|█████████▊| 986/1000 [00:29<00:00, 29.29it/s, failures=0, objective=-0.344]     99%|█████████▊| 986/1000 [00:29<00:00, 29.29it/s, failures=0, objective=-0.342]     99%|█████████▊| 987/1000 [00:29<00:00, 29.29it/s, failures=0, objective=-0.342]     99%|█████████▉| 988/1000 [00:29<00:00, 29.29it/s, failures=0, objective=-0.342]     99%|█████████▉| 989/1000 [00:29<00:00, 29.29it/s, failures=0, objective=-0.342]     99%|█████████▉| 990/1000 [00:29<00:00, 29.25it/s, failures=0, objective=-0.342]     99%|█████████▉| 990/1000 [00:29<00:00, 29.25it/s, failures=0, objective=-0.342]     99%|█████████▉| 991/1000 [00:29<00:00, 29.25it/s, failures=0, objective=-0.342]     99%|█████████▉| 992/1000 [00:29<00:00, 29.25it/s, failures=0, objective=-0.342]     99%|█████████▉| 993/1000 [00:29<00:00, 29.25it/s, failures=0, objective=-0.342]     99%|█████████▉| 994/1000 [00:29<00:00, 29.22it/s, failures=0, objective=-0.342]     99%|█████████▉| 994/1000 [00:29<00:00, 29.22it/s, failures=0, objective=-0.342]    100%|█████████▉| 995/1000 [00:29<00:00, 29.22it/s, failures=0, objective=-0.342]    100%|█████████▉| 996/1000 [00:29<00:00, 29.22it/s, failures=0, objective=-0.342]    100%|█████████▉| 997/1000 [00:29<00:00, 29.22it/s, failures=0, objective=-0.342]    100%|█████████▉| 998/1000 [00:29<00:00, 29.30it/s, failures=0, objective=-0.342]    100%|█████████▉| 998/1000 [00:29<00:00, 29.30it/s, failures=0, objective=-0.342]    100%|█████████▉| 999/1000 [00:29<00:00, 29.30it/s, failures=0, objective=-0.342]    100%|██████████| 1000/1000 [00:29<00:00, 29.30it/s, failures=0, objective=-0.342]    100%|██████████| 1000/1000 [00:29<00:00, 33.55it/s, failures=0, objective=-0.342]




.. GENERATED FROM PYTHON SOURCE LINES 343-350

Analysis of the results
-----------------------

The results of the HPO is a dataframe.
The columns starting with ``p:`` are the hyperparameters.
The columns starting with ``m:`` are the metadata.
There are also special columns: ``objective``, ``job_id`` and ``job_status``.

.. GENERATED FROM PYTHON SOURCE LINES 350-353

.. code-block:: Python


    results






.. raw:: html

    <div class="output_subarea output_html rendered_html output_result">
    <div>
    <style scoped>
        .dataframe tbody tr th:only-of-type {
            vertical-align: middle;
        }

        .dataframe tbody tr th {
            vertical-align: top;
        }

        .dataframe thead th {
            text-align: right;
        }
    </style>
    <table border="1" class="dataframe">
      <thead>
        <tr style="text-align: right;">
          <th></th>
          <th>p:criterion</th>
          <th>p:max_depth</th>
          <th>p:min_samples_leaf</th>
          <th>p:min_samples_split</th>
          <th>p:min_weight_fraction_leaf</th>
          <th>p:splitter</th>
          <th>objective</th>
          <th>job_id</th>
          <th>job_status</th>
          <th>m:timestamp_submit</th>
          <th>m:test_cce</th>
          <th>m:test_acc</th>
          <th>m:timestamp_gather</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <th>0</th>
          <td>entropy</td>
          <td>473</td>
          <td>1</td>
          <td>15</td>
          <td>0.399777</td>
          <td>random</td>
          <td>-0.652100</td>
          <td>1</td>
          <td>DONE</td>
          <td>0.857375</td>
          <td>0.668201</td>
          <td>0.615152</td>
          <td>2.527716</td>
        </tr>
        <tr>
          <th>1</th>
          <td>log_loss</td>
          <td>584</td>
          <td>6</td>
          <td>8</td>
          <td>0.219015</td>
          <td>random</td>
          <td>-0.524039</td>
          <td>2</td>
          <td>DONE</td>
          <td>0.858437</td>
          <td>0.546033</td>
          <td>0.757576</td>
          <td>2.557154</td>
        </tr>
        <tr>
          <th>2</th>
          <td>log_loss</td>
          <td>40</td>
          <td>11</td>
          <td>8</td>
          <td>0.263310</td>
          <td>best</td>
          <td>-0.482095</td>
          <td>3</td>
          <td>DONE</td>
          <td>0.859354</td>
          <td>0.517822</td>
          <td>0.763636</td>
          <td>2.562505</td>
        </tr>
        <tr>
          <th>3</th>
          <td>entropy</td>
          <td>122</td>
          <td>9</td>
          <td>20</td>
          <td>0.439568</td>
          <td>random</td>
          <td>-0.693145</td>
          <td>8</td>
          <td>DONE</td>
          <td>2.552939</td>
          <td>0.693145</td>
          <td>0.503030</td>
          <td>2.577085</td>
        </tr>
        <tr>
          <th>4</th>
          <td>gini</td>
          <td>799</td>
          <td>13</td>
          <td>13</td>
          <td>0.357857</td>
          <td>best</td>
          <td>-0.525434</td>
          <td>4</td>
          <td>DONE</td>
          <td>0.860122</td>
          <td>0.540779</td>
          <td>0.763636</td>
          <td>2.581751</td>
        </tr>
        <tr>
          <th>...</th>
          <td>...</td>
          <td>...</td>
          <td>...</td>
          <td>...</td>
          <td>...</td>
          <td>...</td>
          <td>...</td>
          <td>...</td>
          <td>...</td>
          <td>...</td>
          <td>...</td>
          <td>...</td>
          <td>...</td>
        </tr>
        <tr>
          <th>1000</th>
          <td>gini</td>
          <td>171</td>
          <td>14</td>
          <td>2</td>
          <td>0.078259</td>
          <td>random</td>
          <td>-0.448314</td>
          <td>998</td>
          <td>DONE</td>
          <td>32.196486</td>
          <td>0.509838</td>
          <td>0.772727</td>
          <td>32.344678</td>
        </tr>
        <tr>
          <th>1001</th>
          <td>gini</td>
          <td>56</td>
          <td>14</td>
          <td>3</td>
          <td>0.067282</td>
          <td>random</td>
          <td>-0.492451</td>
          <td>1001</td>
          <td>DONE</td>
          <td>32.331540</td>
          <td>0.517744</td>
          <td>0.748485</td>
          <td>32.424286</td>
        </tr>
        <tr>
          <th>1002</th>
          <td>gini</td>
          <td>323</td>
          <td>12</td>
          <td>7</td>
          <td>0.076291</td>
          <td>random</td>
          <td>-0.499077</td>
          <td>1002</td>
          <td>DONE</td>
          <td>32.332477</td>
          <td>0.544741</td>
          <td>0.727273</td>
          <td>32.426498</td>
        </tr>
        <tr>
          <th>1003</th>
          <td>gini</td>
          <td>323</td>
          <td>12</td>
          <td>7</td>
          <td>0.076291</td>
          <td>random</td>
          <td>-0.719315</td>
          <td>1003</td>
          <td>DONE</td>
          <td>32.333362</td>
          <td>0.498796</td>
          <td>0.772727</td>
          <td>32.428591</td>
        </tr>
        <tr>
          <th>1004</th>
          <td>gini</td>
          <td>323</td>
          <td>12</td>
          <td>7</td>
          <td>0.076291</td>
          <td>random</td>
          <td>-0.505116</td>
          <td>1004</td>
          <td>DONE</td>
          <td>32.334272</td>
          <td>0.531597</td>
          <td>0.760606</td>
          <td>32.430668</td>
        </tr>
      </tbody>
    </table>
    <p>1005 rows × 13 columns</p>
    </div>
    </div>
    <br />
    <br />

.. GENERATED FROM PYTHON SOURCE LINES 354-358

Evolution of the objective
~~~~~~~~~~~~~~~~~~~~~~~~~~

We use :func:`deephyper.analysis.hpo.plot_search_trajectory_single_objective_hpo` to look at the evolution of the objective during the search.

.. GENERATED FROM PYTHON SOURCE LINES 358-368

.. dropdown:: Code (Plot search trajectory)

    .. code-block:: Python


        from deephyper.analysis.hpo import plot_search_trajectory_single_objective_hpo


        _, ax = plt.subplots(figsize=(WIDTH_PLOTS, HEIGHT_PLOTS), tight_layout=True)
        _ = plot_search_trajectory_single_objective_hpo(results, mode="min", ax=ax)
        ax.axhline(-baseline_output["objective"], linestyle="--", color="red", label="baseline")
        ax.set_yscale("log")




.. image-sg:: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_003.png
   :alt: plot hpo tree ensemble uq classification sklearn
   :srcset: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_003.png
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 369-370

The dashed red horizontal line corresponds to the baseline performance.

.. GENERATED FROM PYTHON SOURCE LINES 372-376

Worker utilization
~~~~~~~~~~~~~~~~~~

We use :func:`deephyper.analysis.hpo.plot_worker_utilization` to look at the number of active workers over the search.

.. GENERATED FROM PYTHON SOURCE LINES 376-383

.. dropdown:: Code (Plot worker utilization)

    .. code-block:: Python


        from deephyper.analysis.hpo import plot_worker_utilization

        _, ax = plt.subplots(figsize=(WIDTH_PLOTS, HEIGHT_PLOTS), tight_layout=True)
        _ = plot_worker_utilization(results, ax=ax)




.. image-sg:: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_004.png
   :alt: plot hpo tree ensemble uq classification sklearn
   :srcset: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_004.png
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 384-388

Best decision tree
~~~~~~~~~~~~~~~~~~~

Then, we look indivudualy at the performance of the top 5 models by using :func:`deephyper.analysis.hpo.parameters_from_row`:

.. GENERATED FROM PYTHON SOURCE LINES 388-399

.. code-block:: Python

    from deephyper.analysis.hpo import parameters_from_row


    topk_rows = results.nlargest(5, "objective").reset_index(drop=True)

    for i, row in topk_rows.iterrows():
        parameters = parameters_from_row(row)
        obj = row["objective"]
        print(f"Top-{i+1} -> {obj=:.3f}: {parameters}")
        print()





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    Top-1 -> obj=-0.342: {'criterion': 'gini', 'max_depth': 391, 'min_samples_leaf': 12, 'min_samples_split': 9, 'min_weight_fraction_leaf': 0.0799892256322516, 'splitter': 'random'}

    Top-2 -> obj=-0.344: {'criterion': 'log_loss', 'max_depth': 44, 'min_samples_leaf': 18, 'min_samples_split': 9, 'min_weight_fraction_leaf': 0.03020412119569555, 'splitter': 'random'}

    Top-3 -> obj=-0.345: {'criterion': 'gini', 'max_depth': 174, 'min_samples_leaf': 16, 'min_samples_split': 6, 'min_weight_fraction_leaf': 0.06825880170388439, 'splitter': 'random'}

    Top-4 -> obj=-0.348: {'criterion': 'log_loss', 'max_depth': 24, 'min_samples_leaf': 18, 'min_samples_split': 10, 'min_weight_fraction_leaf': 0.034806060105093746, 'splitter': 'random'}

    Top-5 -> obj=-0.349: {'criterion': 'log_loss', 'max_depth': 347, 'min_samples_leaf': 16, 'min_samples_split': 6, 'min_weight_fraction_leaf': 0.07115076987342352, 'splitter': 'random'}





.. GENERATED FROM PYTHON SOURCE LINES 400-403

If we just plot the decision boundary and calibration plots of the best model we can
observe a significant improvement over the baseline with log-loss values around 0.338 when it
was previously around 6.

.. GENERATED FROM PYTHON SOURCE LINES 403-410

.. code-block:: Python


    best_job = topk_rows.iloc[0]
    hpo_dir = "hpo_sklearn_classification"
    model_checkpoint_dir = os.path.join(hpo_dir, "models")
    with open(os.path.join(model_checkpoint_dir, f"model_0.{best_job.job_id}.pkl"), "rb") as f:
        best_model = pickle.load(f)








.. GENERATED FROM PYTHON SOURCE LINES 411-417

.. dropdown:: Code (Plot decision boundary and calibration)

    .. code-block:: Python


        fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(WIDTH_PLOTS, HEIGHT_PLOTS*2), tight_layout=True)
        plot_decision_boundary_decision_tree(tx, ty, best_model, steps=1000, color_map="viridis", ax=axes[0])
        disp = CalibrationDisplay.from_predictions(ty, best_model.predict_proba(tx)[:, 1], ax=axes[1])




.. image-sg:: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_005.png
   :alt: plot hpo tree ensemble uq classification sklearn
   :srcset: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_005.png
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 418-423

Ensemble of decision trees
--------------------------

We now move to ensembling checkpointed models and we start by importing utilities from :mod:`deephyper.ensemble` 
and :mod:`deephyper.predictor`.

.. GENERATED FROM PYTHON SOURCE LINES 423-429

.. code-block:: Python

    from deephyper.ensemble import EnsemblePredictor
    from deephyper.ensemble.aggregator import MixedCategoricalAggregator
    from deephyper.ensemble.loss import CategoricalCrossEntropy 
    from deephyper.ensemble.selector import GreedySelector, TopKSelector
    from deephyper.predictor.sklearn import SklearnPredictorFileLoader








.. GENERATED FROM PYTHON SOURCE LINES 430-506

.. dropdown:: Code (Plot decision boundary and uncertainty)

    .. code-block:: Python


        def plot_decision_boundary_and_uncertainty(
            dataset, labels, model, steps=1000, color_map="viridis", s=5
        ):

            fig, axs = plt.subplots(
                3, sharex="all", sharey="all", figsize=(WIDTH_PLOTS, HEIGHT_PLOTS * 2), tight_layout=True,
            )

            # Define region of interest by data limits
            xmin, xmax = dataset[:, 0].min() - 1, dataset[:, 0].max() + 1
            ymin, ymax = dataset[:, 1].min() - 1, dataset[:, 1].max() + 1
            x_span = np.linspace(xmin, xmax, steps)
            y_span = np.linspace(ymin, ymax, steps)
            xx, yy = np.meshgrid(x_span, y_span)

            # Make predictions across region of interest
            y_pred = model.predict(np.c_[xx.ravel(), yy.ravel()].astype(np.float32))
            y_pred_proba = y_pred["loc"]
            y_pred_aleatoric = y_pred["uncertainty_aleatoric"]
            y_pred_epistemic = y_pred["uncertainty_epistemic"]

            # Plot decision boundary in region of interest

            # 1. MODE
            color_map = plt.get_cmap("viridis")
            z = y_pred_proba[:, 1].reshape(xx.shape)

            cont = axs[0].contourf(xx, yy, z, cmap=color_map, vmin=0, vmax=1, alpha=0.5)

            # Get predicted labels on training data and plot
            axs[0].scatter(
                dataset[:, 0],
                dataset[:, 1],
                c=labels,
                cmap=color_map,
                s=s,
                lw=0,
            )
            plt.colorbar(cont, ax=axs[0], label="Probability of class 1")

            # 2. ALEATORIC
            color_map = plt.get_cmap("plasma")
            z = y_pred_aleatoric.reshape(xx.shape)

            cont = axs[1].contourf(xx, yy, z, cmap=color_map, vmin=0, vmax=0.69, alpha=0.5)

            # Get predicted labels on training data and plot
            axs[1].scatter(
                dataset[:, 0],
                dataset[:, 1],
                c=labels,
                cmap=color_map,
                s=s,
                lw=0,
            )
            plt.colorbar(cont, ax=axs[1], label="Aleatoric uncertainty")

            # 3. EPISTEMIC
            z = y_pred_epistemic.reshape(xx.shape)

            cont = axs[2].contourf(xx, yy, z, cmap=color_map, vmin=0, vmax=0.69, alpha=0.5)

            # Get predicted labels on training data and plot
            axs[2].scatter(
                dataset[:, 0],
                dataset[:, 1],
                c=labels,
                cmap=color_map,
                s=s,
                lw=0,
            )
            plt.colorbar(cont, ax=axs[2], label="Epistemic uncertainty")









.. GENERATED FROM PYTHON SOURCE LINES 507-509

We define a function that will create an ensemble with TopK or Greedy selection strategies.
This function also has a parameter ``k`` that sets the number of unique member in the ensemble.

.. GENERATED FROM PYTHON SOURCE LINES 509-569

.. code-block:: Python

    def create_ensemble_from_checkpoints(ensemble_selector: str = "topk", k=50):

        # 0. Load data
        _, (vx, vy), _ = load_data()

        # !1.3 SKLEARN EXAMPLE
        predictor_files = SklearnPredictorFileLoader.find_predictor_files(
            model_checkpoint_dir
        )
        predictor_loaders = [SklearnPredictorFileLoader(f) for f in predictor_files]
        predictors = [p.load() for p in predictor_loaders]

        # 2. Build an ensemble
        ensemble = EnsemblePredictor(
            predictors=predictors,
            aggregator=MixedCategoricalAggregator(
                uncertainty_method="entropy",
                decomposed_uncertainty=True,
            ),
            # You can specify parallel backends for the evaluation of the ensemble
            evaluator={
                "method": "ray",
                "method_kwargs": {"num_cpus_per_task": 1},
            },
        )
        y_predictors = ensemble.predictions_from_predictors(
            vx, predictors=ensemble.predictors
        )

        # Use TopK or Greedy/Caruana
        if ensemble_selector == "topk":
            selector = TopKSelector(
                loss_func=CategoricalCrossEntropy(),
                k=k,
            )
        elif ensemble_selector == "greedy":
            selector = GreedySelector(
                loss_func=CategoricalCrossEntropy(),
                aggregator=MixedCategoricalAggregator(),
                k=k,
                k_init=5,
                max_it=100,
                early_stopping=False,
                bagging=True,
                eps_tol=1e-5,
            )
        else:
            raise ValueError(f"Unknown ensemble_selector: {ensemble_selector}")

        selected_predictors_indexes, selected_predictors_weights = selector.select(
            vy, y_predictors
        )
        print(f"{selected_predictors_indexes=}")
        print(f"{selected_predictors_weights=}")

        ensemble.predictors = [ensemble.predictors[i] for i in selected_predictors_indexes]
        ensemble.weights = selected_predictors_weights

        return ensemble








.. GENERATED FROM PYTHON SOURCE LINES 570-571

We start by testing the Topk strategy.

.. GENERATED FROM PYTHON SOURCE LINES 571-577

.. code-block:: Python

    ensemble = create_ensemble_from_checkpoints("topk")
    ty_pred = ensemble.predict(tx)["loc"]
    cce = log_loss(ty, ty_pred)
    acc = accuracy_score(ty, np.argmax(ty_pred, axis=1))
    print(f"Test scores: {cce=:.3f}, {acc=:.3f}")





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    selected_predictors_indexes=[791, 346, 960, 725, 698, 303, 128, 192, 547, 757, 555, 872, 452, 374, 910, 310, 278, 527, 682, 147, 595, 268, 284, 600, 336, 743, 362, 9, 732, 70, 752, 773, 49, 733, 164, 389, 308, 453, 451, 941, 155, 391, 484, 962, 82, 561, 997, 655, 316, 948]
    selected_predictors_weights=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
    Test scores: cce=0.386, acc=0.879




.. GENERATED FROM PYTHON SOURCE LINES 578-583

.. dropdown:: Code (Plot decision boundary and uncertainty for ensemble)

    .. code-block:: Python



        plot_decision_boundary_and_uncertainty(tx, ty, ensemble, steps=1000, color_map="viridis")




.. image-sg:: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_006.png
   :alt: plot hpo tree ensemble uq classification sklearn
   :srcset: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_006.png
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 585-590

.. dropdown:: Code (Plot calibration for ensemble)

    .. code-block:: Python


        fig, ax = plt.subplots(figsize=(WIDTH_PLOTS, HEIGHT_PLOTS), tight_layout=True)
        disp = CalibrationDisplay.from_predictions(ty, ty_pred[:, 1], ax=ax)




.. image-sg:: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_007.png
   :alt: plot hpo tree ensemble uq classification sklearn
   :srcset: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_007.png
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 591-592

We do the same for the Greedy strategy.

.. GENERATED FROM PYTHON SOURCE LINES 592-598

.. code-block:: Python

    ensemble = create_ensemble_from_checkpoints("greedy")
    ty_pred = ensemble.predict(tx)["loc"]
    cce = log_loss(ty, ty_pred)
    acc = accuracy_score(ty, np.argmax(ty_pred, axis=1))
    print(f"Test scores: {cce=:.3f}, {acc=:.3f}")





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    selected_predictors_indexes=[80, 284, 327, 346, 453, 555, 698, 716, 725, 743, 759, 791, 910, 960, 968]
    selected_predictors_weights=[0.047619047619047616, 0.06666666666666667, 0.13333333333333333, 0.1523809523809524, 0.009523809523809525, 0.14285714285714285, 0.009523809523809525, 0.01904761904761905, 0.009523809523809525, 0.0380952380952381, 0.02857142857142857, 0.17142857142857143, 0.009523809523809525, 0.09523809523809523, 0.06666666666666667]
    Test scores: cce=0.368, acc=0.879




.. GENERATED FROM PYTHON SOURCE LINES 599-603

.. dropdown:: Code (Plot decision boundary and uncertainty for ensemble)

    .. code-block:: Python


        plot_decision_boundary_and_uncertainty(tx, ty, ensemble, steps=1000, color_map="viridis")




.. image-sg:: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_008.png
   :alt: plot hpo tree ensemble uq classification sklearn
   :srcset: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_008.png
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 604-609

.. dropdown:: Code (Plot calibration for ensemble)

    .. code-block:: Python


        fig, ax = plt.subplots(figsize=(WIDTH_PLOTS, HEIGHT_PLOTS), tight_layout=True)
        disp = CalibrationDisplay.from_predictions(ty, ty_pred[:, 1], ax=ax)




.. image-sg:: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_009.png
   :alt: plot hpo tree ensemble uq classification sklearn
   :srcset: /examples/examples_uq/images/sphx_glr_plot_hpo_tree_ensemble_uq_classification_sklearn_009.png
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 610-617

In conclusion, the improvement over the default hyperparameters is significant.

For CCE, we improved from about 6 to 0.4.

For Accuracy, we improved from 0.82 to 0.87.

Not only that we have disentangled uncertainty estimates. The epistemic uncertainty is informative of locations where we are missing data and the aleatoric uncertainty is informative of the noise level in the labels.


.. rst-class:: sphx-glr-timing

   **Total running time of the script:** (0 minutes 42.666 seconds)


.. _sphx_glr_download_examples_examples_uq_plot_hpo_tree_ensemble_uq_classification_sklearn.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example

    .. container:: sphx-glr-download sphx-glr-download-jupyter

      :download:`Download Jupyter notebook: plot_hpo_tree_ensemble_uq_classification_sklearn.ipynb <plot_hpo_tree_ensemble_uq_classification_sklearn.ipynb>`

    .. container:: sphx-glr-download sphx-glr-download-python

      :download:`Download Python source code: plot_hpo_tree_ensemble_uq_classification_sklearn.py <plot_hpo_tree_ensemble_uq_classification_sklearn.py>`

    .. container:: sphx-glr-download sphx-glr-download-zip

      :download:`Download zipped: plot_hpo_tree_ensemble_uq_classification_sklearn.zip <plot_hpo_tree_ensemble_uq_classification_sklearn.zip>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
