Skip to content

Note

Click here to download the full example code

Usage of the model calibration based on curve outputs

Calibrate a model based on curve outputs.

from __future__ import annotations

import logging

from gemseo.algos.opt.nlopt.settings.nlopt_cobyla_settings import NLOPT_COBYLA_Settings
from gemseo_calibration.calibrator import CalibrationMetricSettings
from gemseo_calibration.measures.integrated_measure import CurveScaling
from numpy import atleast_1d

from vimseo import EXAMPLE_RUNS_DIR
from vimseo.api import activate_logger
from vimseo.api import create_model
from vimseo.core.model_settings import IntegratedModelSettings
from vimseo.io.space_io import SpaceToolFileIO
from vimseo.problems.mock.mock_curves.mock_curves import MockCurves
from vimseo.storage_management.base_storage_manager import PersistencyPolicy
from vimseo.tools.calibration.calibration_step import CalibrationStep
from vimseo.tools.calibration.calibration_step import CalibrationStepInputs
from vimseo.tools.calibration.calibration_step import CalibrationStepSettings
from vimseo.tools.calibration.input_data import CALIBRATION_INPUT_DATA
from vimseo.utilities.generate_validation_reference import (
    generate_reference_from_parameter_space,
)

We first define the logger level:

activate_logger(level=logging.INFO)

We want to calibrate an analytical model that takes inputs :math:x, x_1 and returns the curve :math:(y_{axis}, y) where :math:\mathbf{y_{axis}} \in [0,1] and :math:\mathbf{y}=x \times \mathbf{y_{axis}} + x_1. The objective is to find the best \(x\) such that the simulated and reference \(y\) match.

Then, we need to create reference data. They are generated from the model to calibrate, which is biased by imposing a modified \(x\). Several samples are generated by varying \(x_1\).

X_TARGET = 1.5
MockCurves.CURVE_NB_POINTS = 10
model_name = "MockCurves"
load_case = "Dummy"
reference_mock_curves = create_model(
    model_name,
    load_case,
    model_options=IntegratedModelSettings(
        directory_archive_persistency=PersistencyPolicy.DELETE_ALWAYS,
        directory_scratch_persistency=PersistencyPolicy.DELETE_ALWAYS,
    ),
)
reference_mock_curves.default_input_data["x"] = atleast_1d(X_TARGET)
reference_mock_curves.cache = None
reference_data = generate_reference_from_parameter_space(
    reference_mock_curves,
    SpaceToolFileIO()
    .read(CALIBRATION_INPUT_DATA / "experimental_space_mock_curves.json")
    .parameter_space,
    n_samples=2,
    as_dataset=True,
)

Out:

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/pydantic/main.py:209: DeprecationWarning:

Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)

    INFO - 16:52:26: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/CustomDOETool/38
    INFO - 16:52:26:  
    INFO - 16:52:26: *** Start DOEScenario execution ***
    INFO - 16:52:26: DOEScenario
    INFO - 16:52:26:    Disciplines: Model MockCurves: 
    INFO - 16:52:26: 
    INFO - 16:52:26: Load case:
    INFO - 16:52:26:    Load case Dummy: A dummy load case.
    INFO - 16:52:26:    
    INFO - 16:52:26:    Boundary condition variables:
    INFO - 16:52:26:    []
    INFO - 16:52:26:    
    INFO - 16:52:26:    Plot parameters:
    INFO - 16:52:26:    {
    INFO - 16:52:26:     "curves": []
    INFO - 16:52:26: }
    INFO - 16:52:26:    Load:
    INFO - 16:52:26:    Load(direction='', sign='', type='')
    INFO - 16:52:26: 
    INFO - 16:52:26: Default values:
    INFO - 16:52:26:    
    INFO - 16:52:26:    Default geometrical variables:
    INFO - 16:52:26:    {"x": [1.5], "x_1": [1.0]}
    INFO - 16:52:26:    
    INFO - 16:52:26:    Default numerical variables:
    INFO - 16:52:26:    {}
    INFO - 16:52:26:    
    INFO - 16:52:26:    Default boundary conditions variables:
    INFO - 16:52:26:    {}
    INFO - 16:52:26:    
    INFO - 16:52:26:    Default material variables:
    INFO - 16:52:26:    {}
    INFO - 16:52:26: model_inputs:
    INFO - 16:52:26:    [
    INFO - 16:52:26:     "x",
    INFO - 16:52:26:     "x_1"
    INFO - 16:52:26: ]
    INFO - 16:52:26: model_outputs:
    INFO - 16:52:26:    [
    INFO - 16:52:26:     "y",
    INFO - 16:52:26:     "y_axis",
    INFO - 16:52:26:     "error_code",
    INFO - 16:52:26:     "model",
    INFO - 16:52:26:     "load_case",
    INFO - 16:52:26:     "description",
    INFO - 16:52:26:     "job_name",
    INFO - 16:52:26:     "persistent_result_files",
    INFO - 16:52:26:     "n_cpus",
    INFO - 16:52:26:     "date",
    INFO - 16:52:26:     "cpu_time",
    INFO - 16:52:26:     "user",
    INFO - 16:52:26:     "machine",
    INFO - 16:52:26:     "vims_git_version",
    INFO - 16:52:26:     "directory_archive_root",
    INFO - 16:52:26:     "directory_archive_job",
    INFO - 16:52:26:     "directory_scratch_root",
    INFO - 16:52:26:     "directory_scratch_job"
    INFO - 16:52:26: ]
    INFO - 16:52:26:    MDO formulation: DisciplinaryOpt
    INFO - 16:52:26: Optimization problem:
    INFO - 16:52:26:    minimize y(x_1)
    INFO - 16:52:26:    with respect to x_1
    INFO - 16:52:26:    over the design space:
    INFO - 16:52:26:       +------+-------------+-------+-------------+-------+
    INFO - 16:52:26:       | Name | Lower bound | Value | Upper bound | Type  |
    INFO - 16:52:26:       +------+-------------+-------+-------------+-------+
    INFO - 16:52:26:       | x_1  |     -inf    |  None |     inf     | float |
    INFO - 16:52:26:       +------+-------------+-------+-------------+-------+
    INFO - 16:52:26: Solving optimization problem with algorithm CustomDOE:
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26:     50%|█████     | 1/2 [00:00<00:00, 17.26 it/sec, obj=[0.99445415 1.00960566 1.02475718 1.03990869 1.05506021 1.07021173
    INFO - 16:52:26:  1.08536324 1.10051476 1.11566627 1.13081779 1.1459693  1.16112082
    INFO - 16:52:26:  1.17627233 1.19142385 1.20657536 1.22172688 1.23687839 1.25202991
    INFO - 16:52:26:  1.26718142 1.28233294 1.29748445 1.31263597 1.32778748 1.342939
    INFO - 16:52:26:  1.35809051 1.37324203 1.38839354 1.40354506 1.41869657 1.43384809
    INFO - 16:52:26:  1.4489996  1.46415112 1.47930263 1.49445415 1.50960566 1.52475718
    INFO - 16:52:26:  1.53990869 1.55506021 1.57021173 1.58536324 1.60051476 1.61566627
    INFO - 16:52:26:  1.63081779 1.6459693  1.66112082 1.67627233 1.69142385 1.70657536
    INFO - 16:52:26:  1.72172688 1.73687839 1.75202991 1.76718142 1.78233294 1.79748445
    INFO - 16:52:26:  1.81263597 1.82778748 1.842939   1.85809051 1.87324203 1.88839354
    INFO - 16:52:26:  1.90354506 1.91869657 1.93384809 1.9489996  1.96415112 1.97930263
    INFO - 16:52:26:  1.99445415 2.00960566 2.02475718 2.03990869 2.05506021 2.07021173
    INFO - 16:52:26:  2.08536324 2.10051476 2.11566627 2.13081779 2.1459693  2.16112082
    INFO - 16:52:26:  2.17627233 2.19142385 2.20657536 2.22172688 2.23687839 2.25202991
    INFO - 16:52:26:  2.26718142 2.28233294 2.29748445 2.31263597 2.32778748 2.342939
    INFO - 16:52:26:  2.35809051 2.37324203 2.38839354 2.40354506 2.41869657 2.43384809
    INFO - 16:52:26:  2.4489996  2.46415112 2.47930263 2.49445415]]
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/default_archive.
    INFO - 16:52:26: Removing job directory: default_archive/MockCurves/Dummy/1
    INFO - 16:52:26:    100%|██████████| 2/2 [00:00<00:00, 18.59 it/sec, obj=[0.96250865 0.97766017 0.99281168 1.0079632  1.02311471 1.03826623
    INFO - 16:52:26:  1.05341774 1.06856926 1.08372077 1.09887229 1.1140238  1.12917532
    INFO - 16:52:26:  1.14432683 1.15947835 1.17462986 1.18978138 1.20493289 1.22008441
    INFO - 16:52:26:  1.23523592 1.25038744 1.26553895 1.28069047 1.29584198 1.3109935
    INFO - 16:52:26:  1.32614501 1.34129653 1.35644804 1.37159956 1.38675107 1.40190259
    INFO - 16:52:26:  1.4170541  1.43220562 1.44735713 1.46250865 1.47766017 1.49281168
    INFO - 16:52:26:  1.5079632  1.52311471 1.53826623 1.55341774 1.56856926 1.58372077
    INFO - 16:52:26:  1.59887229 1.6140238  1.62917532 1.64432683 1.65947835 1.67462986
    INFO - 16:52:26:  1.68978138 1.70493289 1.72008441 1.73523592 1.75038744 1.76553895
    INFO - 16:52:26:  1.78069047 1.79584198 1.8109935  1.82614501 1.84129653 1.85644804
    INFO - 16:52:26:  1.87159956 1.88675107 1.90190259 1.9170541  1.93220562 1.94735713
    INFO - 16:52:26:  1.96250865 1.97766017 1.99281168 2.0079632  2.02311471 2.03826623
    INFO - 16:52:26:  2.05341774 2.06856926 2.08372077 2.09887229 2.1140238  2.12917532
    INFO - 16:52:26:  2.14432683 2.15947835 2.17462986 2.18978138 2.20493289 2.22008441
    INFO - 16:52:26:  2.23523592 2.25038744 2.26553895 2.28069047 2.29584198 2.3109935
    INFO - 16:52:26:  2.32614501 2.34129653 2.35644804 2.37159956 2.38675107 2.40190259
    INFO - 16:52:26:  2.4170541  2.43220562 2.44735713 2.46250865]]
    INFO - 16:52:26: Optimization result:
    INFO - 16:52:26:    Optimizer info:
    INFO - 16:52:26:       Status: None
    INFO - 16:52:26:       Message: None
    INFO - 16:52:26:       Number of calls to the objective function by the optimizer: 2
    INFO - 16:52:26:    Solution:
    INFO - 16:52:26:       Objective: 17.674766632128097
    INFO - 16:52:26:       Design space:
    INFO - 16:52:26:          +------+-------------+--------------------+-------------+-------+
    INFO - 16:52:26:          | Name | Lower bound |       Value        | Upper bound | Type  |
    INFO - 16:52:26:          +------+-------------+--------------------+-------------+-------+
    INFO - 16:52:26:          | x_1  |     -inf    | 0.9625086499676455 |     inf     | float |
    INFO - 16:52:26:          +------+-------------+--------------------+-------------+-------+
    INFO - 16:52:26: *** End DOEScenario execution (time: 0:00:00.113614) ***

We now define the model used for the calibration:

model = create_model(
    model_name,
    load_case,
    model_options=IntegratedModelSettings(
        directory_archive_root=EXAMPLE_RUNS_DIR / "archive/calibration_curves",
        directory_scratch_root=EXAMPLE_RUNS_DIR / "scratch/calibration_curves",
        cache_file_path=EXAMPLE_RUNS_DIR
        / f"caches/calibration_curves/{model_name}_{load_case}_cache.hdf",
    ),
)

Out:

    INFO - 16:52:26: Found 50 entries in the cache file : /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/caches/calibration_curves/MockCurves_Dummy_cache.hdf node : node

Then, a step of calibration is defined. It uses the :class:SBPISE metric, which computes the area between the reference and the simulated curves. The curves are scaled to zero-mean and unitary standard deviation by setting the argument scaling to CurveScaling.XYRange, which is mandatory when calibrating for: - several metrics in the same step - several load cases in the same step

output_name = "y"
step = CalibrationStep(working_directory="curves")
step.execute(
    inputs=CalibrationStepInputs(
        reference_data={
            "Dummy": reference_data,
        },
    ),
    settings=CalibrationStepSettings(
        name_to_models={"Dummy": model},
        control_outputs={
            output_name: CalibrationMetricSettings(
                measure="SBPISE",
                mesh="y_axis",
                scaling=CurveScaling.XYRange,
            ).model_dump()
        },
        input_names=[
            "x_1",
        ],
        parameter_names=["x"],
        optimizer_settings=NLOPT_COBYLA_Settings(max_iter=50),
    ),
)
step.save_results()

Out:

    INFO - 16:52:26: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/curves
    INFO - 16:52:26: Found 50 entries in the cache file : /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/caches/calibration_curves/MockCurves_Dummy_cache.hdf node : node
    INFO - 16:52:26: Calibration design space: Design space:
    INFO - 16:52:26: +------+-------------+-------+-------------+-------+
    INFO - 16:52:26: | Name | Lower bound | Value | Upper bound | Type  |
    INFO - 16:52:26: +------+-------------+-------+-------------+-------+
    INFO - 16:52:26: | x    |     -inf    |   1   |     inf     | float |
    INFO - 16:52:26: +------+-------------+-------+-------------+-------+
 WARNING - 16:52:26: No coupling in MDA, switching chain_linearize to True.
 WARNING - 16:52:26: The optimization problem already observes "Dummy:y_axis".
    INFO - 16:52:26:  
    INFO - 16:52:26: *** Start CalibrationScenario execution ***
    INFO - 16:52:26: CalibrationScenario
    INFO - 16:52:26:    Disciplines: Calibrator
    INFO - 16:52:26:    MDO formulation: DisciplinaryOpt
 WARNING - 16:52:26: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:26: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:26: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:26: Area metric: 0.03703892648898261
 WARNING - 16:52:26: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:26: 
 WARNING - 16:52:26: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:26: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:26: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:26: Area metric: 0.03703892648898261
 WARNING - 16:52:26: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:26: 
 WARNING - 16:52:26: SBPISE metric for variable Dummy:y: 0.03703892648898261
 WARNING - 16:52:26: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:26: Optimization problem:
    INFO - 16:52:26:    minimize SBPISE[Dummy:y[Dummy:y_axis]](x)
    INFO - 16:52:26:    with respect to x
    INFO - 16:52:26:    over the design space:
    INFO - 16:52:26:       +------+-------------+-------+-------------+-------+
    INFO - 16:52:26:       | Name | Lower bound | Value | Upper bound | Type  |
    INFO - 16:52:26:       +------+-------------+-------+-------------+-------+
    INFO - 16:52:26:       | x    |     -inf    |   1   |     inf     | float |
    INFO - 16:52:26:       +------+-------------+-------+-------------+-------+
    INFO - 16:52:26: Solving optimization problem with algorithm NLOPT_COBYLA:
    INFO - 16:52:26:      2%|         | 1/50 [00:00<00:00, 1276.42 it/sec, obj=0.037]
 WARNING - 16:52:26: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:26: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:26: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:26: Area metric: 0.009259731622245653
 WARNING - 16:52:26: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:26: 
 WARNING - 16:52:26: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:26: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:26: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:26: Area metric: 0.009259731622245655
 WARNING - 16:52:26: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:26: 
 WARNING - 16:52:26: SBPISE metric for variable Dummy:y: 0.009259731622245655
 WARNING - 16:52:26: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:26:      4%|         | 2/50 [00:00<00:02, 22.99 it/sec, obj=0.00926]
 WARNING - 16:52:26: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:26: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:26: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:26: Area metric: 0.0
 WARNING - 16:52:26: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:26: 
 WARNING - 16:52:26: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:26: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:26: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:26: Area metric: 0.0
 WARNING - 16:52:26: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:26: 
 WARNING - 16:52:26: SBPISE metric for variable Dummy:y: 0.0
 WARNING - 16:52:26: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:26:      6%|         | 3/50 [00:00<00:02, 17.72 it/sec, obj=0]
 WARNING - 16:52:26: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:26: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:26: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:26: Area metric: 0.0068030681306294576
 WARNING - 16:52:26: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:26: 
 WARNING - 16:52:26: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:26: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:26: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:26: Area metric: 0.006803068130629457
 WARNING - 16:52:26: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:26: 
 WARNING - 16:52:26: SBPISE metric for variable Dummy:y: 0.0068030681306294576
 WARNING - 16:52:26: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:26:      8%|         | 4/50 [00:00<00:02, 16.06 it/sec, obj=0.0068]
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 0.0019724872094724457
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 0.001972487209472446
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: SBPISE metric for variable Dummy:y: 0.0019724872094724457
 WARNING - 16:52:27: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:27:     10%|         | 5/50 [00:00<00:03, 14.99 it/sec, obj=0.00197]
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 0.0005787332263903536
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 0.0005787332263903535
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: SBPISE metric for variable Dummy:y: 0.0005787332263903536
 WARNING - 16:52:27: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:27:     12%|█▏        | 6/50 [00:00<00:03, 14.49 it/sec, obj=0.000579]
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 0.00013883812511488694
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 0.000138838125114887
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: SBPISE metric for variable Dummy:y: 0.00013883812511488697
 WARNING - 16:52:27: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:27:     14%|█▍        | 7/50 [00:00<00:03, 14.14 it/sec, obj=0.000139]
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 3.6170826649397115e-05
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 3.6170826649397095e-05
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: SBPISE metric for variable Dummy:y: 3.61708266493971e-05
 WARNING - 16:52:27: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:27:     16%|█▌        | 8/50 [00:00<00:03, 13.74 it/sec, obj=3.62e-5]
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 8.94924262130097e-06
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 8.949242621300964e-06
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: SBPISE metric for variable Dummy:y: 8.949242621300968e-06
 WARNING - 16:52:27: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:27:     18%|█▊        | 9/50 [00:00<00:03, 13.54 it/sec, obj=8.95e-6]
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 2.260676665587363e-06
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 2.2606766655873536e-06
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: SBPISE metric for variable Dummy:y: 2.2606766655873582e-06
 WARNING - 16:52:27: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:27:     20%|██        | 10/50 [00:00<00:02, 13.37 it/sec, obj=2.26e-6]
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 5.637002413091974e-07
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 5.637002413092067e-07
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: SBPISE metric for variable Dummy:y: 5.637002413092021e-07
 WARNING - 16:52:27: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:27:     22%|██▏       | 11/50 [00:00<00:02, 13.30 it/sec, obj=5.64e-7]
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 1.4129229159921378e-07
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 1.4129229159921283e-07
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: SBPISE metric for variable Dummy:y: 1.412922915992133e-07
 WARNING - 16:52:27: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:27:     24%|██▍       | 12/50 [00:00<00:02, 13.22 it/sec, obj=1.41e-7]
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 3.5300087331578243e-08
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 3.530008733157666e-08
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: SBPISE metric for variable Dummy:y: 3.5300087331577456e-08
 WARNING - 16:52:27: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:27:     26%|██▌       | 13/50 [00:00<00:02, 13.15 it/sec, obj=3.53e-8]
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 8.830768224952893e-09
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:27: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:27: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:27: Area metric: 8.830768224952539e-09
 WARNING - 16:52:27: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:27: 
 WARNING - 16:52:27: SBPISE metric for variable Dummy:y: 8.830768224952716e-09
 WARNING - 16:52:27: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:27:     28%|██▊       | 14/50 [00:01<00:02, 13.04 it/sec, obj=8.83e-9]
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 2.207332775215088e-09
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 2.2073327752154236e-09
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: SBPISE metric for variable Dummy:y: 2.2073327752152557e-09
 WARNING - 16:52:28: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:28:     30%|███       | 15/50 [00:01<00:03,  9.91 it/sec, obj=2.21e-9]
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 5.519230140596315e-10
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 5.519230140595901e-10
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: SBPISE metric for variable Dummy:y: 5.519230140596108e-10
 WARNING - 16:52:28: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:28:     32%|███▏      | 16/50 [00:01<00:03, 10.03 it/sec, obj=5.52e-10]
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 1.3797513923486138e-10
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 1.3797513923493472e-10
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: SBPISE metric for variable Dummy:y: 1.3797513923489804e-10
 WARNING - 16:52:28: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:28:     34%|███▍      | 17/50 [00:01<00:03, 10.09 it/sec, obj=1.38e-10]
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 3.449518837867838e-11
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 3.449518837866308e-11
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: SBPISE metric for variable Dummy:y: 3.449518837867073e-11
 WARNING - 16:52:28: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:28:     36%|███▌      | 18/50 [00:01<00:03, 10.18 it/sec, obj=3.45e-11]
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 8.623709369479173e-12
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 8.623709369466212e-12
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: SBPISE metric for variable Dummy:y: 8.623709369472693e-12
 WARNING - 16:52:28: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:28:     38%|███▊      | 19/50 [00:01<00:03, 10.26 it/sec, obj=8.62e-12]
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 2.1559492737128927e-12
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 2.155949273720177e-12
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: SBPISE metric for variable Dummy:y: 2.1559492737165347e-12
 WARNING - 16:52:28: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:28:     40%|████      | 20/50 [00:01<00:02, 10.34 it/sec, obj=2.16e-12]
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 5.38985947691185e-13
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 5.389859476949946e-13
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: SBPISE metric for variable Dummy:y: 5.389859476930898e-13
 WARNING - 16:52:28: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:28:     42%|████▏     | 21/50 [00:02<00:02, 10.41 it/sec, obj=5.39e-13]
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 1.3474682960525538e-13
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 1.347468296025157e-13
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: SBPISE metric for variable Dummy:y: 1.3474682960388553e-13
 WARNING - 16:52:28: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:28:     44%|████▍     | 22/50 [00:02<00:02, 10.47 it/sec, obj=1.35e-13]
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 3.368668598287868e-14
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:28: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:28: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:28: Area metric: 3.368668598284548e-14
 WARNING - 16:52:28: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:28: 
 WARNING - 16:52:28: SBPISE metric for variable Dummy:y: 3.3686685982862076e-14
 WARNING - 16:52:28: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:28:     46%|████▌     | 23/50 [00:02<00:02, 10.53 it/sec, obj=3.37e-14]
 WARNING - 16:52:29: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:29: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:29: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:29: Area metric: 8.421676853390955e-15
 WARNING - 16:52:29: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:29: 
 WARNING - 16:52:29: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:29: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:29: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:29: Area metric: 8.421676853164403e-15
 WARNING - 16:52:29: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:29: 
 WARNING - 16:52:29: SBPISE metric for variable Dummy:y: 8.421676853277679e-15
 WARNING - 16:52:29: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:29:     48%|████▊     | 24/50 [00:02<00:02, 10.54 it/sec, obj=8.42e-15]
 WARNING - 16:52:29: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:29: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:29: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:29: Area metric: 2.105418876466463e-15
 WARNING - 16:52:29: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:29: 
 WARNING - 16:52:29: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:29: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:29: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:29: Area metric: 2.1054188764745786e-15
 WARNING - 16:52:29: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:29: 
 WARNING - 16:52:29: SBPISE metric for variable Dummy:y: 2.1054188764705207e-15
 WARNING - 16:52:29: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:29:     50%|█████     | 25/50 [00:02<00:02, 10.58 it/sec, obj=2.11e-15]
    INFO - 16:52:29: Optimization result:
    INFO - 16:52:29:    Optimizer info:
    INFO - 16:52:29:       Status: None
    INFO - 16:52:29:       Message: Successive iterates of the objective function are closer than ftol_rel or ftol_abs. GEMSEO stopped the driver.
    INFO - 16:52:29:       Number of calls to the objective function by the optimizer: 26
    INFO - 16:52:29:    Solution:
    INFO - 16:52:29:       Objective: 0.0
    INFO - 16:52:29:       Design space:
    INFO - 16:52:29:          +------+-------------+-------+-------------+-------+
    INFO - 16:52:29:          | Name | Lower bound | Value | Upper bound | Type  |
    INFO - 16:52:29:          +------+-------------+-------+-------------+-------+
    INFO - 16:52:29:          | x    |     -inf    |  1.5  |     inf     | float |
    INFO - 16:52:29:          +------+-------------+-------+-------------+-------+
 WARNING - 16:52:29: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:29: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:29: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:29: Area metric: 0.0
 WARNING - 16:52:29: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:29: 
 WARNING - 16:52:29: Metrics on scaled curves for variable Dummy:y:
 WARNING - 16:52:29: MSE mismatch x-axis left bound: 0.0
 WARNING - 16:52:29: MSE mismatch x-axis right bound: 0.0
 WARNING - 16:52:29: Area metric: 0.0
 WARNING - 16:52:29: (model_support_length - reference_support_length) / model_support_length = 0.0
 WARNING - 16:52:29: 
 WARNING - 16:52:29: SBPISE metric for variable Dummy:y: 0.0
 WARNING - 16:52:29: Weights (left, area, right): ([0. 1. 0.]).
    INFO - 16:52:29: *** End CalibrationScenario execution (time: 0:00:02.686935) ***
    INFO - 16:52:29: Parameters before calibration: {'x': array([1.])}
    INFO - 16:52:29: Parameters after calibration: {'x': 1.5}
/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/gemseo/post/opt_history_view.py:231: RuntimeWarning:

invalid value encountered in divide

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/matplotlib/_fontconfig_pattern.py:85: PyparsingDeprecationWarning:

'parseString' deprecated - use 'parse_string'

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/matplotlib/_fontconfig_pattern.py:89: PyparsingDeprecationWarning:

'resetCache' deprecated - use 'reset_cache'

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/matplotlib/_mathtext.py:2010: PyparsingDeprecationWarning:

'oneOf' deprecated - use 'one_of'

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/matplotlib/_mathtext.py:2020: PyparsingDeprecationWarning:

'leaveWhitespace' deprecated - use 'leave_whitespace'

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/matplotlib/_mathtext.py:1984: PyparsingDeprecationWarning:

'setName' deprecated - use 'set_name'

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/matplotlib/_mathtext.py:1987: PyparsingDeprecationWarning:

'setParseAction' deprecated - use 'set_parse_action'

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/matplotlib/_mathtext.py:2088: PyparsingDeprecationWarning:

'endQuoteChar' argument is deprecated, use 'end_quote_char'

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/matplotlib/_mathtext.py:2146: PyparsingDeprecationWarning:

'unquoteResults' argument is deprecated, use 'unquote_results'

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/matplotlib/_mathtext.py:2170: PyparsingDeprecationWarning:

'parseString' deprecated - use 'parse_string'

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/pyparsing/util.py:466: PyparsingDeprecationWarning:

'parseAll' argument is deprecated, use 'parse_all'

/home/sebastien.bocquet/PycharmProjects/vimseo/.tox/doc/lib/python3.11/site-packages/matplotlib/_mathtext.py:2178: PyparsingDeprecationWarning:

'resetCache' deprecated - use 'reset_cache'

    INFO - 16:52:30: Saving result to /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/curves/CalibrationStep_result.hdf5
    INFO - 16:52:30: PICKLE fallback: key='Dummy', type=<class 'vimseo.problems.mock.mock_curves.mock_curves.MockCurves'>, value=Model MockCurves: 
    INFO - 16:52:30: 
    INFO - 16:52:30: Load case:
    INFO - 16:52:30:    Load case Dummy: A dummy load case.
    INFO - 16:52:30:    
    INFO - 16:52:30:    Boundary condition variables:
    INFO - 16:52:30:    []
    INFO - 16:52:30:    
    INFO - 16:52:30:    Plot parameters:
    INFO - 16:52:30:    {
    INFO - 16:52:30:     "curves": []
    INFO - 16:52:30: }
    INFO - 16:52:30:    Load:
    INFO - 16:52:30:    Load(direction='', sign='', type='')
    INFO - 16:52:30: 
    INFO - 16:52:30: Default values:
    INFO - 16:52:30:    
    INFO - 16:52:30:    Default geometrical variables:
    INFO - 16:52:30:    {"x": [1.0], "x_1": [1.0]}
    INFO - 16:52:30:    
    INFO - 16:52:30:    Default numerical variables:
    INFO - 16:52:30:    {}
    INFO - 16:52:30:    
    INFO - 16:52:30:    Default boundary conditions variables:
    INFO - 16:52:30:    {}
    INFO - 16:52:30:    
    INFO - 16:52:30:    Default material variables:
    INFO - 16:52:30:    {}
    INFO - 16:52:30: model_inputs:
    INFO - 16:52:30:    [
    INFO - 16:52:30:     "x",
    INFO - 16:52:30:     "x_1"
    INFO - 16:52:30: ]
    INFO - 16:52:30: model_outputs:
    INFO - 16:52:30:    [
    INFO - 16:52:30:     "y",
    INFO - 16:52:30:     "y_axis",
    INFO - 16:52:30:     "error_code",
    INFO - 16:52:30:     "model",
    INFO - 16:52:30:     "load_case",
    INFO - 16:52:30:     "description",
    INFO - 16:52:30:     "job_name",
    INFO - 16:52:30:     "persistent_result_files",
    INFO - 16:52:30:     "n_cpus",
    INFO - 16:52:30:     "date",
    INFO - 16:52:30:     "cpu_time",
    INFO - 16:52:30:     "user",
    INFO - 16:52:30:     "machine",
    INFO - 16:52:30:     "vims_git_version",
    INFO - 16:52:30:     "directory_archive_root",
    INFO - 16:52:30:     "directory_archive_job",
    INFO - 16:52:30:     "directory_scratch_root",
    INFO - 16:52:30:     "directory_scratch_job"
    INFO - 16:52:30: ]
    INFO - 16:52:30: PICKLE fallback: key='design_space', type=<class 'gemseo.algos.design_space.DesignSpace'>, value=Design space:
    INFO - 16:52:30: +------+-------------+-------+-------------+-------+
    INFO - 16:52:30: | Name | Lower bound | Value | Upper bound | Type  |
    INFO - 16:52:30: +------+-------------+-------+-------------+-------+
    INFO - 16:52:30: | x    |     -inf    |  1.5  |     inf     | float |
    INFO - 16:52:30: +------+-------------+-------+-------------+-------+
    INFO - 16:52:30: PICKLE fallback: key='optimization_history_variables', type=<class 'matplotlib.figure.Figure'>, value=Figure(1100x600)
    INFO - 16:52:30: PICKLE fallback: key='optimization_history_objective', type=<class 'matplotlib.figure.Figure'>, value=Figure(1100x600)
    INFO - 16:52:30: PICKLE fallback: key='optimization_history_x_xstar', type=<class 'matplotlib.figure.Figure'>, value=Figure(1100x600)
    INFO - 16:52:30: PICKLE fallback: key='simulated_versus_reference_y', type=<class 'matplotlib.figure.Figure'>, value=Figure(640x480)

We can show the prior parameters, i.e. the optimizer starting point:

step.result.prior_parameters

Out:

{'x': 1.0}

The outputs can be compared to the reference data, before and after calibration:

figs = step.plot_results(step.result, show=True, save=False)
figs["Dummy"]["simulated_versus_reference_curve_y_versus_y_axis"]

Out:

    INFO - 16:52:30: Working directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/08_calibration/curves

The curves that have been defined as control_outputs can be retrieved as Pandas DataFrame:

step.result.curve_data

Out:

CurveData(posterior_dataframes=defaultdict(<class 'list'>, {'Dummy': [{'y':            y    y_axis
0   0.994454  0.000000
1   1.009606  0.010101
2   1.024757  0.020202
3   1.039909  0.030303
4   1.055060  0.040404
..       ...       ...
95  2.433848  0.959596
96  2.449000  0.969697
97  2.464151  0.979798
98  2.479303  0.989899
99  2.494454  1.000000

[100 rows x 2 columns]}, {'y':            y    y_axis
0   0.962509  0.000000
1   0.977660  0.010101
2   0.992812  0.020202
3   1.007963  0.030303
4   1.023115  0.040404
..       ...       ...
95  2.401903  0.959596
96  2.417054  0.969697
97  2.432206  0.979798
98  2.447357  0.989899
99  2.462509  1.000000

[100 rows x 2 columns]}]}), prior_dataframes=defaultdict(<class 'list'>, {'Dummy': [{'y':            y    y_axis
0   0.994454  0.000000
1   1.004555  0.010101
2   1.014656  0.020202
3   1.024757  0.030303
4   1.034858  0.040404
..       ...       ...
95  1.954050  0.959596
96  1.964151  0.969697
97  1.974252  0.979798
98  1.984353  0.989899
99  1.994454  1.000000

[100 rows x 2 columns]}, {'y':            y    y_axis
0   0.962509  0.000000
1   0.972610  0.010101
2   0.982711  0.020202
3   0.992812  0.030303
4   1.002913  0.040404
..       ...       ...
95  1.922105  0.959596
96  1.932206  0.969697
97  1.942307  0.979798
98  1.952408  0.989899
99  1.962509  1.000000

[100 rows x 2 columns]}]}), reference_dataframes=defaultdict(<class 'list'>, {'Dummy': [{'y':            y    y_axis
0   0.994454  0.000000
1   1.009606  0.010101
2   1.024757  0.020202
3   1.039909  0.030303
4   1.055060  0.040404
..       ...       ...
95  2.433848  0.959596
96  2.449000  0.969697
97  2.464151  0.979798
98  2.479303  0.989899
99  2.494454  1.000000

[100 rows x 2 columns]}, {'y':            y    y_axis
0   0.962509  0.000000
1   0.977660  0.010101
2   0.992812  0.020202
3   1.007963  0.030303
4   1.023115  0.040404
..       ...       ...
95  2.401903  0.959596
96  2.417054  0.969697
97  2.432206  0.979798
98  2.447357  0.989899
99  2.462509  1.000000

[100 rows x 2 columns]}]}))

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

Download Python source code: plot_02_calibration_on_curves.py

Download Jupyter notebook: plot_02_calibration_on_curves.ipynb

Gallery generated by mkdocs-gallery