From 43f192b7bdf16b35ade0812899f68c4058636fcc Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Wed, 20 Mar 2024 12:14:40 +0000 Subject: [PATCH 1/7] Adds DFN, MPM, MSMR models. Moves duplicate code into parent class, updt base_model class naming to align across the codebase --- .../empirical/{ecm_base.py => base_ecm.py} | 0 pybop/models/empirical/ecm.py | 2 +- pybop/models/lithium_ion/__init__.py | 2 +- .../{echem_base.py => base_echem.py} | 40 +++- pybop/models/lithium_ion/echem.py | 223 ++++++++++++++---- tests/unit/test_models.py | 5 +- 6 files changed, 220 insertions(+), 52 deletions(-) rename pybop/models/empirical/{ecm_base.py => base_ecm.py} (100%) rename pybop/models/lithium_ion/{echem_base.py => base_echem.py} (86%) diff --git a/pybop/models/empirical/ecm_base.py b/pybop/models/empirical/base_ecm.py similarity index 100% rename from pybop/models/empirical/ecm_base.py rename to pybop/models/empirical/base_ecm.py diff --git a/pybop/models/empirical/ecm.py b/pybop/models/empirical/ecm.py index 6c0427c8..9df512a1 100644 --- a/pybop/models/empirical/ecm.py +++ b/pybop/models/empirical/ecm.py @@ -1,5 +1,5 @@ import pybamm -from .ecm_base import ECircuitModel +from .base_ecm import ECircuitModel class Thevenin(ECircuitModel): diff --git a/pybop/models/lithium_ion/__init__.py b/pybop/models/lithium_ion/__init__.py index d61591b4..4e4f32e9 100644 --- a/pybop/models/lithium_ion/__init__.py +++ b/pybop/models/lithium_ion/__init__.py @@ -1,4 +1,4 @@ # # Import lithium ion based models # -from .echem import SPM, SPMe +from .echem import EChemBaseModel, SPM, SPMe, DFN, MPM, MSMR diff --git a/pybop/models/lithium_ion/echem_base.py b/pybop/models/lithium_ion/base_echem.py similarity index 86% rename from pybop/models/lithium_ion/echem_base.py rename to pybop/models/lithium_ion/base_echem.py index 7e5c869f..b3cc4838 100644 --- a/pybop/models/lithium_ion/echem_base.py +++ b/pybop/models/lithium_ion/base_echem.py @@ -1,4 +1,6 @@ import warnings +import pybamm + from ..base_model import BaseModel @@ -7,8 +9,44 @@ class EChemBaseModel(BaseModel): Overwrites and extends `BaseModel` class for electrochemical PyBaMM models. """ - def __init__(self): + def __init__( + self, + model, + parameter_set=None, + geometry=None, + submesh_types=None, + var_pts=None, + spatial_methods=None, + solver=None, + ): super().__init__() + self.pybamm_model = model + + # Set parameters, using either the provided ones or the default + self.default_parameter_values = self.pybamm_model.default_parameter_values + self._parameter_set = ( + parameter_set or self.pybamm_model.default_parameter_values + ) + self._unprocessed_parameter_set = self._parameter_set + + # Define model geometry and discretization + self.geometry = geometry or self.pybamm_model.default_geometry + self.submesh_types = submesh_types or self.pybamm_model.default_submesh_types + self.var_pts = var_pts or self.pybamm_model.default_var_pts + self.spatial_methods = ( + spatial_methods or self.pybamm_model.default_spatial_methods + ) + self.solver = solver or self.pybamm_model.default_solver + + # Internal attributes for the built model are initialized but not set + self._model_with_set_params = None + self._built_model = None + self._built_initial_soc = None + self._mesh = None + self._disc = None + + self._electrode_soh = pybamm.lithium_ion.electrode_soh + self.rebuild_parameters = self.set_rebuild_parameters() def _check_params( self, inputs=None, parameter_set=None, allow_infeasible_solutions=True diff --git a/pybop/models/lithium_ion/echem.py b/pybop/models/lithium_ion/echem.py index bb03f658..9d2f64d4 100644 --- a/pybop/models/lithium_ion/echem.py +++ b/pybop/models/lithium_ion/echem.py @@ -1,5 +1,5 @@ import pybamm -from .echem_base import EChemBaseModel +from .base_echem import EChemBaseModel class SPM(EChemBaseModel): @@ -40,36 +40,19 @@ def __init__( solver=None, options=None, ): - super().__init__() self.pybamm_model = pybamm.lithium_ion.SPM(options=options) self._unprocessed_model = self.pybamm_model self.name = name - # Set parameters, using either the provided ones or the default - self.default_parameter_values = self.pybamm_model.default_parameter_values - self._parameter_set = ( - parameter_set or self.pybamm_model.default_parameter_values + super().__init__( + model=self.pybamm_model, + parameter_set=parameter_set, + geometry=geometry, + submesh_types=submesh_types, + var_pts=var_pts, + spatial_methods=spatial_methods, + solver=solver, ) - self._unprocessed_parameter_set = self._parameter_set - - # Define model geometry and discretization - self.geometry = geometry or self.pybamm_model.default_geometry - self.submesh_types = submesh_types or self.pybamm_model.default_submesh_types - self.var_pts = var_pts or self.pybamm_model.default_var_pts - self.spatial_methods = ( - spatial_methods or self.pybamm_model.default_spatial_methods - ) - self.solver = solver or self.pybamm_model.default_solver - - # Internal attributes for the built model are initialized but not set - self._model_with_set_params = None - self._built_model = None - self._built_initial_soc = None - self._mesh = None - self._disc = None - - self._electrode_soh = pybamm.lithium_ion.electrode_soh - self.rebuild_parameters = self.set_rebuild_parameters() class SPMe(EChemBaseModel): @@ -112,33 +95,177 @@ def __init__( solver=None, options=None, ): - super().__init__() self.pybamm_model = pybamm.lithium_ion.SPMe(options=options) self._unprocessed_model = self.pybamm_model self.name = name - # Set parameters, using either the provided ones or the default - self.default_parameter_values = self.pybamm_model.default_parameter_values - self._parameter_set = ( - parameter_set or self.pybamm_model.default_parameter_values + super().__init__( + model=self.pybamm_model, + parameter_set=parameter_set, + geometry=geometry, + submesh_types=submesh_types, + var_pts=var_pts, + spatial_methods=spatial_methods, + solver=solver, ) - self._unprocessed_parameter_set = self._parameter_set - - # Define model geometry and discretization - self.geometry = geometry or self.pybamm_model.default_geometry - self.submesh_types = submesh_types or self.pybamm_model.default_submesh_types - self.var_pts = var_pts or self.pybamm_model.default_var_pts - self.spatial_methods = ( - spatial_methods or self.pybamm_model.default_spatial_methods + + +class DFN(EChemBaseModel): + """ + Wraps the Doyle-Fuller-Newman (DFN) model for simulating lithium-ion batteries, as implemented in PyBaMM. + + The DFN represents lithium-ion battery dynamics using multiple spherical particles + to simulate the behavior of the negative and positive electrodes. This model includes + electrolyte dynamics, solid-phase diffusion, and Butler-Volmer kinetics. This model + is the full-order representation used to reduce to the SPM, and SPMe models. + + Parameters + ---------- + name : str, optional + The name for the model instance, defaulting to "Single Particle Model". + parameter_set : pybamm.ParameterValues or dict, optional + The parameters for the model. If None, default parameters provided by PyBaMM are used. + geometry : dict, optional + The geometry definitions for the model. If None, default geometry from PyBaMM is used. + submesh_types : dict, optional + The types of submeshes to use. If None, default submesh types from PyBaMM are used. + var_pts : dict, optional + The discretization points for each variable in the model. If None, default points from PyBaMM are used. + spatial_methods : dict, optional + The spatial methods used for discretization. If None, default spatial methods from PyBaMM are used. + solver : pybamm.Solver, optional + The solver to use for simulating the model. If None, the default solver from PyBaMM is used. + options : dict, optional + A dictionary of options to customize the behavior of the PyBaMM model. + """ + + def __init__( + self, + name="Doyle-Fuller-Newman", + parameter_set=None, + geometry=None, + submesh_types=None, + var_pts=None, + spatial_methods=None, + solver=None, + options=None, + ): + self.pybamm_model = pybamm.lithium_ion.DFN(options=options) + self._unprocessed_model = self.pybamm_model + self.name = name + + super().__init__( + model=self.pybamm_model, + parameter_set=parameter_set, + geometry=geometry, + submesh_types=submesh_types, + var_pts=var_pts, + spatial_methods=spatial_methods, + solver=solver, ) - self.solver = solver or self.pybamm_model.default_solver - # Internal attributes for the built model are initialized but not set - self._model_with_set_params = None - self._built_model = None - self._built_initial_soc = None - self._mesh = None - self._disc = None - self._electrode_soh = pybamm.lithium_ion.electrode_soh - self.rebuild_parameters = self.set_rebuild_parameters() +class MPM(EChemBaseModel): + """ + Wraps the Multi-Particle-Model (MPM) model for simulating lithium-ion batteries, as implemented in PyBaMM. + + The MPM represents lithium-ion battery dynamics using a distribution of spherical particles + for each electrode. This model inherits the SPM class. + + Parameters + ---------- + name : str, optional + The name for the model instance, defaulting to "Single Particle Model". + parameter_set : pybamm.ParameterValues or dict, optional + The parameters for the model. If None, default parameters provided by PyBaMM are used. + geometry : dict, optional + The geometry definitions for the model. If None, default geometry from PyBaMM is used. + submesh_types : dict, optional + The types of submeshes to use. If None, default submesh types from PyBaMM are used. + var_pts : dict, optional + The discretization points for each variable in the model. If None, default points from PyBaMM are used. + spatial_methods : dict, optional + The spatial methods used for discretization. If None, default spatial methods from PyBaMM are used. + solver : pybamm.Solver, optional + The solver to use for simulating the model. If None, the default solver from PyBaMM is used. + options : dict, optional + A dictionary of options to customize the behavior of the PyBaMM model. + """ + + def __init__( + self, + name="Doyle-Fuller-Newman", + parameter_set=None, + geometry=None, + submesh_types=None, + var_pts=None, + spatial_methods=None, + solver=None, + options=None, + ): + self.pybamm_model = pybamm.lithium_ion.MPM(options=options) + self._unprocessed_model = self.pybamm_model + self.name = name + + super().__init__( + model=self.pybamm_model, + parameter_set=parameter_set, + geometry=geometry, + submesh_types=submesh_types, + var_pts=var_pts, + spatial_methods=spatial_methods, + solver=solver, + ) + + +class MSMR(EChemBaseModel): + """ + Wraps the Multi-Species-Multi-Reactions (MSMR) model for simulating lithium-ion batteries, as implemented in PyBaMM. + + The MSMR represents lithium-ion battery dynamics using a distribution of spherical particles for each electrode. + This model inherits the DFN class. + + Parameters + ---------- + name : str, optional + The name for the model instance, defaulting to "Single Particle Model". + parameter_set : pybamm.ParameterValues or dict, optional + The parameters for the model. If None, default parameters provided by PyBaMM are used. + geometry : dict, optional + The geometry definitions for the model. If None, default geometry from PyBaMM is used. + submesh_types : dict, optional + The types of submeshes to use. If None, default submesh types from PyBaMM are used. + var_pts : dict, optional + The discretization points for each variable in the model. If None, default points from PyBaMM are used. + spatial_methods : dict, optional + The spatial methods used for discretization. If None, default spatial methods from PyBaMM are used. + solver : pybamm.Solver, optional + The solver to use for simulating the model. If None, the default solver from PyBaMM is used. + options : dict, optional + A dictionary of options to customize the behavior of the PyBaMM model. + """ + + def __init__( + self, + name="Doyle-Fuller-Newman", + parameter_set=None, + geometry=None, + submesh_types=None, + var_pts=None, + spatial_methods=None, + solver=None, + options=None, + ): + self.pybamm_model = pybamm.lithium_ion.MSMR(options=options) + self._unprocessed_model = self.pybamm_model + self.name = name + + super().__init__( + model=self.pybamm_model, + parameter_set=parameter_set, + geometry=geometry, + submesh_types=submesh_types, + var_pts=var_pts, + spatial_methods=spatial_methods, + solver=solver, + ) diff --git a/tests/unit/test_models.py b/tests/unit/test_models.py index ce9be93e..056bd1e9 100644 --- a/tests/unit/test_models.py +++ b/tests/unit/test_models.py @@ -15,6 +15,9 @@ class TestModels: params=[ pybop.lithium_ion.SPM(), pybop.lithium_ion.SPMe(), + pybop.lithium_ion.DFN(), + pybop.lithium_ion.MPM(), + pybop.lithium_ion.MSMR(options={"number of MSMR reactions": ("6", "4")}), pybop.empirical.Thevenin(), ] ) @@ -45,7 +48,7 @@ def test_predict_without_pybamm(self, model): def test_predict_with_inputs(self, model): # Define inputs t_eval = np.linspace(0, 10, 100) - if isinstance(model, (pybop.lithium_ion.SPM, pybop.lithium_ion.SPMe)): + if isinstance(model, (pybop.lithium_ion.EChemBaseModel)): inputs = { "Negative electrode active material volume fraction": 0.52, "Positive electrode active material volume fraction": 0.63, From 3745ad85fa5f6b0b38ec421b66396684ec00b09a Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Wed, 20 Mar 2024 12:42:35 +0000 Subject: [PATCH 2/7] updt init for circuit base model --- pybop/models/empirical/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pybop/models/empirical/__init__.py b/pybop/models/empirical/__init__.py index 58790627..6a28b0a9 100644 --- a/pybop/models/empirical/__init__.py +++ b/pybop/models/empirical/__init__.py @@ -1,4 +1,4 @@ # # Import lithium ion based models # -from .ecm import Thevenin +from .ecm import ECircuitModel, Thevenin From 6abb2cd95710dc6b6e7f7b690dc019a04db041d3 Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Tue, 2 Apr 2024 17:31:15 +0100 Subject: [PATCH 3/7] Add scikit-fem as dependancy for pybamm multi-dimensional models, add pouch-cell example, wrap model solve with exception catching for non-coverging conditions, limit default pybamm.solver.max_step_decrease_count --- examples/notebooks/pouch_cell_CMAES.ipynb | 10693 ++++++++++++++++++++ pybop/models/base_model.py | 42 +- pybop/models/empirical/__init__.py | 3 +- pybop/models/lithium_ion/__init__.py | 3 +- pybop/models/lithium_ion/base_echem.py | 1 + pyproject.toml | 5 +- 6 files changed, 10727 insertions(+), 20 deletions(-) create mode 100644 examples/notebooks/pouch_cell_CMAES.ipynb diff --git a/examples/notebooks/pouch_cell_CMAES.ipynb b/examples/notebooks/pouch_cell_CMAES.ipynb new file mode 100644 index 00000000..32521db1 --- /dev/null +++ b/examples/notebooks/pouch_cell_CMAES.ipynb @@ -0,0 +1,10693 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "expmkveO04pw" + }, + "source": [ + "## Parameter Estimation with CMA-ES in PyBOP\n", + "\n", + "In this notebook, we demonstrate an example of parameter estimation for a single-particle model using the Covariance Matrix Adaptation Evolution Strategy (CMA-ES). CMA-ES is an evolutionary algorithm for difficult non-linear, non-convex optimisation problems.\n", + "\n", + "### Setting up the Environment\n", + "\n", + "Before we begin, we need to ensure that we have all the necessary tools. We will install PyBOP from its development branch and upgrade some dependencies:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "X87NUGPW04py", + "outputId": "0d785b07-7cff-4aeb-e60a-4ff5a669afbf" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pip in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (24.0)\n", + "Requirement already satisfied: ipywidgets in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (8.1.2)\n", + "Requirement already satisfied: comm>=0.1.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (0.2.1)\n", + "Requirement already satisfied: ipython>=6.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (8.22.1)\n", + "Requirement already satisfied: traitlets>=4.3.1 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (5.14.1)\n", + "Requirement already satisfied: widgetsnbextension~=4.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (4.0.10)\n", + "Requirement already satisfied: jupyterlab-widgets~=3.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (3.0.10)\n", + "Requirement already satisfied: decorator in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n", + "Requirement already satisfied: jedi>=0.16 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\n", + "Requirement already satisfied: matplotlib-inline in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\n", + "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.43)\n", + "Requirement already satisfied: pygments>=2.4.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.17.2)\n", + "Requirement already satisfied: stack-data in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\n", + "Requirement already satisfied: pexpect>4.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\n", + "Requirement already satisfied: ptyprocess>=0.5 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\n", + "Requirement already satisfied: wcwidth in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from prompt-toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13)\n", + "Requirement already satisfied: executing>=1.2.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.0.1)\n", + "Requirement already satisfied: asttokens>=2.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.1)\n", + "Requirement already satisfied: pure-eval in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\n", + "Requirement already satisfied: six>=1.12.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\n", + "Note: you may need to restart the kernel to use updated packages.\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --upgrade pip ipywidgets\n", + "%pip install pybop -q" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jAvD5fk104p0" + }, + "source": [ + "### Importing Libraries\n", + "\n", + "With the environment set up, we can now import PyBOP alongside other libraries we will need:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "SQdt4brD04p1" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "import pybop" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5XU-dMtU04p2" + }, + "source": [ + "### Generate Synthetic Data\n", + "\n", + "To demonstrate parameter estimation, we first need some data. We will generate synthetic data using the PyBOP forward model, which requires defining a parameter set and the model itself.\n", + "\n", + "#### Defining Parameters and Model\n", + "\n", + "We start by creating an example parameter set and then instantiate the single-particle model (SPM):" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "parameter_set = pybop.ParameterSet.pybamm(\"Marquis2019\")\n", + "parameter_set.update(\n", + " {\n", + " \"Negative electrode active material volume fraction\": 0.495,\n", + " \"Positive electrode active material volume fraction\": 0.612,\n", + " }\n", + ")\n", + "model = pybop.lithium_ion.SPM(\n", + " parameter_set=parameter_set,\n", + " options={\"current collector\": \"potential pair\", \"dimensionality\": 2},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Simulating Forward Model\n", + "\n", + "We can then simulate the model using the `predict` method, with a default constant current to generate voltage data." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "sBasxv8U04p3" + }, + "outputs": [], + "source": [ + "t_eval = np.arange(0, 900, 2)\n", + "values = model.predict(t_eval=t_eval)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Adding Noise to Voltage Data\n", + "\n", + "To make the parameter estimation more realistic, we add Gaussian noise to the data." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "sigma = 0.001\n", + "corrupt_values = values[\"Voltage [V]\"].data + np.random.normal(0, sigma, len(t_eval))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "X8-tubYY04p_" + }, + "source": [ + "## Identify the Parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PQqhvSZN04p_" + }, + "source": [ + "We will now set up the parameter estimation process by defining the datasets for optimisation and selecting the model parameters we wish to estimate." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating Optimisation Dataset\n", + "\n", + "The dataset for optimisation is composed of time, current, and the noisy voltage data:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "zuvGHWID04p_" + }, + "outputs": [], + "source": [ + "dataset = pybop.Dataset(\n", + " {\n", + " \"Time [s]\": t_eval,\n", + " \"Current function [A]\": values[\"Current [A]\"].data,\n", + " \"Voltage [V]\": corrupt_values,\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ffS3CF_704qA" + }, + "source": [ + "### Defining Parameters to Estimate\n", + "\n", + "We select the parameters for estimation and set up their prior distributions and bounds:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "WPCybXIJ04qA" + }, + "outputs": [], + "source": [ + "parameters = [\n", + " pybop.Parameter(\n", + " \"Negative electrode active material volume fraction\",\n", + " prior=pybop.Gaussian(0.7, 0.05),\n", + " bounds=[0.45, 0.9],\n", + " ),\n", + " pybop.Parameter(\n", + " \"Positive electrode active material volume fraction\",\n", + " prior=pybop.Gaussian(0.58, 0.05),\n", + " bounds=[0.5, 0.8],\n", + " ),\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "n4OHa-aF04qA" + }, + "source": [ + "### Setting up the Optimisation Problem\n", + "\n", + "With the datasets and parameters defined, we can set up the optimisation problem, its cost function, and the optimiser." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "etMzRtx404qA" + }, + "outputs": [], + "source": [ + "problem = pybop.FittingProblem(model, parameters, dataset)\n", + "cost = pybop.SumSquaredError(problem)\n", + "optim = pybop.Optimisation(cost, optimiser=pybop.CMAES)\n", + "optim.set_max_iterations(30)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "caprp-bV04qB" + }, + "source": [ + "### Running the Optimisation\n", + "\n", + "We proceed to run the CMA-ES optimisation algorithm to estimate the parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "-9OVt0EQ04qB" + }, + "outputs": [], + "source": [ + "x, final_cost = optim.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-4pZsDmS04qC" + }, + "source": [ + "### Viewing the Estimated Parameters\n", + "\n", + "After the optimisation, we can examine the estimated parameter values:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Hgz8SV4i04qC", + "outputId": "e1e42ae7-5075-4c47-dd68-1b22ecc170f6" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.497269 , 0.61189681])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x # This will output the estimated parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KxKURtH704qC" + }, + "source": [ + "## Plotting and Visualisation\n", + "\n", + "PyBOP provides various plotting utilities to visualise the results of the optimisation." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-cWCOiqR04qC" + }, + "source": [ + "### Comparing System Response\n", + "\n", + "We can quickly plot the system's response using the estimated parameters compared to the target:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 467 + }, + "id": "tJUJ80Ve04qD", + "outputId": "855fbaa2-1e09-4935-eb1a-8caf7f99eb75" + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "fill": "toself", + "fillcolor": "rgba(255,229,204,0.8)", + "hoverinfo": "skip", + "line": { + "color": "rgba(255,255,255,0)" + }, + "showlegend": false, + "type": "scatter", + "x": [ + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 18, + 20, + 22, + 24, + 26, + 28, + 30, + 32, + 34, + 36, + 38, + 40, + 42, + 44, + 46, + 48, + 50, + 52, + 54, + 56, + 58, + 60, + 62, + 64, + 66, + 68, + 70, + 72, + 74, + 76, + 78, + 80, + 82, + 84, + 86, + 88, + 90, + 92, + 94, + 96, + 98, + 100, + 102, + 104, + 106, + 108, + 110, + 112, + 114, + 116, + 118, + 120, + 122, + 124, + 126, + 128, + 130, + 132, + 134, + 136, + 138, + 140, + 142, + 144, + 146, + 148, + 150, + 152, + 154, + 156, + 158, + 160, + 162, + 164, + 166, + 168, + 170, + 172, + 174, + 176, + 178, + 180, + 182, + 184, + 186, + 188, + 190, + 192, + 194, + 196, + 198, + 200, + 202, + 204, + 206, + 208, + 210, + 212, + 214, + 216, + 218, + 220, + 222, + 224, + 226, + 228, + 230, + 232, + 234, + 236, + 238, + 240, + 242, + 244, + 246, + 248, + 250, + 252, + 254, + 256, + 258, + 260, + 262, + 264, + 266, + 268, + 270, + 272, + 274, + 276, + 278, + 280, + 282, + 284, + 286, + 288, + 290, + 292, + 294, + 296, + 298, + 300, + 302, + 304, + 306, + 308, + 310, + 312, + 314, + 316, + 318, + 320, + 322, + 324, + 326, + 328, + 330, + 332, + 334, + 336, + 338, + 340, + 342, + 344, + 346, + 348, + 350, + 352, + 354, + 356, + 358, + 360, + 362, + 364, + 366, + 368, + 370, + 372, + 374, + 376, + 378, + 380, + 382, + 384, + 386, + 388, + 390, + 392, + 394, + 396, + 398, + 400, + 402, + 404, + 406, + 408, + 410, + 412, + 414, + 416, + 418, + 420, + 422, + 424, + 426, + 428, + 430, + 432, + 434, + 436, + 438, + 440, + 442, + 444, + 446, + 448, + 450, + 452, + 454, + 456, + 458, + 460, + 462, + 464, + 466, + 468, + 470, + 472, + 474, + 476, + 478, + 480, + 482, + 484, + 486, + 488, + 490, + 492, + 494, + 496, + 498, + 500, + 502, + 504, + 506, + 508, + 510, + 512, + 514, + 516, + 518, + 520, + 522, + 524, + 526, + 528, + 530, + 532, + 534, + 536, + 538, + 540, + 542, + 544, + 546, + 548, + 550, + 552, + 554, + 556, + 558, + 560, + 562, + 564, + 566, + 568, + 570, + 572, + 574, + 576, + 578, + 580, + 582, + 584, + 586, + 588, + 590, + 592, + 594, + 596, + 598, + 600, + 602, + 604, + 606, + 608, + 610, + 612, + 614, + 616, + 618, + 620, + 622, + 624, + 626, + 628, + 630, + 632, + 634, + 636, + 638, + 640, + 642, + 644, + 646, + 648, + 650, + 652, + 654, + 656, + 658, + 660, + 662, + 664, + 666, + 668, + 670, + 672, + 674, + 676, + 678, + 680, + 682, + 684, + 686, + 688, + 690, + 692, + 694, + 696, + 698, + 700, + 702, + 704, + 706, + 708, + 710, + 712, + 714, + 716, + 718, + 720, + 722, + 724, + 726, + 728, + 730, + 732, + 734, + 736, + 738, + 740, + 742, + 744, + 746, + 748, + 750, + 752, + 754, + 756, + 758, + 760, + 762, + 764, + 766, + 768, + 770, + 772, + 774, + 776, + 778, + 780, + 782, + 784, + 786, + 788, + 790, + 792, + 794, + 796, + 798, + 800, + 802, + 804, + 806, + 808, + 810, + 812, + 814, + 816, + 818, + 820, + 822, + 824, + 826, + 828, + 830, + 832, + 834, + 836, + 838, + 840, + 842, + 844, + 846, + 848, + 850, + 852, + 854, + 856, + 858, + 860, + 862, + 864, + 866, + 868, + 870, + 872, + 874, + 876, + 878, + 880, + 882, + 884, + 886, + 888, + 890, + 892, + 894, + 896, + 898, + 898, + 896, + 894, + 892, + 890, + 888, + 886, + 884, + 882, + 880, + 878, + 876, + 874, + 872, + 870, + 868, + 866, + 864, + 862, + 860, + 858, + 856, + 854, + 852, + 850, + 848, + 846, + 844, + 842, + 840, + 838, + 836, + 834, + 832, + 830, + 828, + 826, + 824, + 822, + 820, + 818, + 816, + 814, + 812, + 810, + 808, + 806, + 804, + 802, + 800, + 798, + 796, + 794, + 792, + 790, + 788, + 786, + 784, + 782, + 780, + 778, + 776, + 774, + 772, + 770, + 768, + 766, + 764, + 762, + 760, + 758, + 756, + 754, + 752, + 750, + 748, + 746, + 744, + 742, + 740, + 738, + 736, + 734, + 732, + 730, + 728, + 726, + 724, + 722, + 720, + 718, + 716, + 714, + 712, + 710, + 708, + 706, + 704, + 702, + 700, + 698, + 696, + 694, + 692, + 690, + 688, + 686, + 684, + 682, + 680, + 678, + 676, + 674, + 672, + 670, + 668, + 666, + 664, + 662, + 660, + 658, + 656, + 654, + 652, + 650, + 648, + 646, + 644, + 642, + 640, + 638, + 636, + 634, + 632, + 630, + 628, + 626, + 624, + 622, + 620, + 618, + 616, + 614, + 612, + 610, + 608, + 606, + 604, + 602, + 600, + 598, + 596, + 594, + 592, + 590, + 588, + 586, + 584, + 582, + 580, + 578, + 576, + 574, + 572, + 570, + 568, + 566, + 564, + 562, + 560, + 558, + 556, + 554, + 552, + 550, + 548, + 546, + 544, + 542, + 540, + 538, + 536, + 534, + 532, + 530, + 528, + 526, + 524, + 522, + 520, + 518, + 516, + 514, + 512, + 510, + 508, + 506, + 504, + 502, + 500, + 498, + 496, + 494, + 492, + 490, + 488, + 486, + 484, + 482, + 480, + 478, + 476, + 474, + 472, + 470, + 468, + 466, + 464, + 462, + 460, + 458, + 456, + 454, + 452, + 450, + 448, + 446, + 444, + 442, + 440, + 438, + 436, + 434, + 432, + 430, + 428, + 426, + 424, + 422, + 420, + 418, + 416, + 414, + 412, + 410, + 408, + 406, + 404, + 402, + 400, + 398, + 396, + 394, + 392, + 390, + 388, + 386, + 384, + 382, + 380, + 378, + 376, + 374, + 372, + 370, + 368, + 366, + 364, + 362, + 360, + 358, + 356, + 354, + 352, + 350, + 348, + 346, + 344, + 342, + 340, + 338, + 336, + 334, + 332, + 330, + 328, + 326, + 324, + 322, + 320, + 318, + 316, + 314, + 312, + 310, + 308, + 306, + 304, + 302, + 300, + 298, + 296, + 294, + 292, + 290, + 288, + 286, + 284, + 282, + 280, + 278, + 276, + 274, + 272, + 270, + 268, + 266, + 264, + 262, + 260, + 258, + 256, + 254, + 252, + 250, + 248, + 246, + 244, + 242, + 240, + 238, + 236, + 234, + 232, + 230, + 228, + 226, + 224, + 222, + 220, + 218, + 216, + 214, + 212, + 210, + 208, + 206, + 204, + 202, + 200, + 198, + 196, + 194, + 192, + 190, + 188, + 186, + 184, + 182, + 180, + 178, + 176, + 174, + 172, + 170, + 168, + 166, + 164, + 162, + 160, + 158, + 156, + 154, + 152, + 150, + 148, + 146, + 144, + 142, + 140, + 138, + 136, + 134, + 132, + 130, + 128, + 126, + 124, + 122, + 120, + 118, + 116, + 114, + 112, + 110, + 108, + 106, + 104, + 102, + 100, + 98, + 96, + 94, + 92, + 90, + 88, + 86, + 84, + 82, + 80, + 78, + 76, + 74, + 72, + 70, + 68, + 66, + 64, + 62, + 60, + 58, + 56, + 54, + 52, + 50, + 48, + 46, + 44, + 42, + 40, + 38, + 36, + 34, + 32, + 30, + 28, + 26, + 24, + 22, + 20, + 18, + 16, + 14, + 12, + 10, + 8, + 6, + 4, + 2, + 0 + ], + "y": [ + 3.787750926011304, + 3.786301999306898, + 3.785426001407571, + 3.7847577435613697, + 3.784187415777912, + 3.7836837723080783, + 3.783226031327964, + 3.7828009608308646, + 3.7824010508874553, + 3.782021654134181, + 3.781659307103322, + 3.781311349843796, + 3.780975729355, + 3.7806507398408034, + 3.780335149686653, + 3.780028081268729, + 3.779728450941728, + 3.779435575596694, + 3.7791487743557, + 3.778867478282105, + 3.778591201732383, + 3.7783195236335856, + 3.778052085427488, + 3.7777885360587673, + 3.777528607307424, + 3.777272064358975, + 3.777018682811441, + 3.7767683188212686, + 3.7765208191147046, + 3.776275886267083, + 3.776033441698319, + 3.775793349665902, + 3.7755554409959857, + 3.77531961856934, + 3.775085772834123, + 3.774853781085577, + 3.774623560124625, + 3.77439502357368, + 3.7741680819430425, + 3.773942668876987, + 3.773718716378263, + 3.77349614791821, + 3.77327491219842, + 3.773054954425563, + 3.772836214049802, + 3.7726186440417866, + 3.772402196824873, + 3.77218682900694, + 3.771972496660773, + 3.771759158018236, + 3.771546772283049, + 3.77133529921012, + 3.7711247052008425, + 3.7709149669735673, + 3.7707060435548048, + 3.770497902382348, + 3.770290511461573, + 3.7700838391466, + 3.769877866918579, + 3.7696725900293138, + 3.769467972540971, + 3.769263994396155, + 3.769060637081992, + 3.7688578835929576, + 3.768655715303635, + 3.768454112762925, + 3.7682530643762657, + 3.7680525564549088, + 3.767852576237788, + 3.767653111827306, + 3.7674541474298167, + 3.767255665716844, + 3.767057658578208, + 3.7668601138329487, + 3.7666630193508217, + 3.7664663629581465, + 3.766270121715636, + 3.766074269250938, + 3.765878795519301, + 3.765683680516778, + 3.765488902627952, + 3.765294438457864, + 3.7651003340916542, + 3.764906642757816, + 3.764713319229625, + 3.764520373456769, + 3.764327819627891, + 3.764135676472882, + 3.763943816951611, + 3.763752138187668, + 3.7635607195304224, + 3.7633695393811273, + 3.763178574638121, + 3.762987800693483, + 3.762797341623003, + 3.7626072738731766, + 3.7624175219285902, + 3.7622281029840634, + 3.762039037074706, + 3.761850347075264, + 3.7616618779002184, + 3.761473568377172, + 3.761285510792193, + 3.761097698461634, + 3.7609101247175194, + 3.760722782907586, + 3.760535692729025, + 3.76034885516384, + 3.760162253468161, + 3.759975884172153, + 3.759789743817522, + 3.759603828957529, + 3.759418144548624, + 3.759232688790352, + 3.759047455439714, + 3.758862442018661, + 3.7586776460560616, + 3.758493065087727, + 3.758308709274827, + 3.7581245775673713, + 3.757940663872767, + 3.757756967099421, + 3.757573486159892, + 3.757390219970895, + 3.757207164427895, + 3.757024318337965, + 3.7568416813614194, + 3.756659252108349, + 3.756477029191177, + 3.756295011224676, + 3.756113203645839, + 3.7559316058968406, + 3.7557502160909824, + 3.755569034452644, + 3.75538806135016, + 3.755207297295585, + 3.755026734454914, + 3.754846373191057, + 3.754666214821028, + 3.754486258511192, + 3.7543065033991208, + 3.754126948593328, + 3.7539475983819086, + 3.7537684517425713, + 3.753589507607512, + 3.753410766096093, + 3.753232227398166, + 3.75305389177389, + 3.7528757565860618, + 3.7526978224596705, + 3.752520089842336, + 3.752342558659292, + 3.7521652288509872, + 3.751988100372953, + 3.751811173195672, + 3.7516344473044354, + 3.751457922699216, + 3.751281599394528, + 3.751105477419294, + 3.750929556816709, + 3.750753838529552, + 3.7505783222352225, + 3.7504030079599295, + 3.750227895868342, + 3.7500529861429097, + 3.749878278983724, + 3.749703774608389, + 3.7495294732518856, + 3.749355375166445, + 3.7491814806214063, + 3.749007789903097, + 3.748834303314682, + 3.7486610175679753, + 3.7484879350991447, + 3.748315056377412, + 3.748142381596755, + 3.7479699109587, + 3.7477976446722474, + 3.747625582953817, + 3.74745372602717, + 3.7472820741233415, + 3.747110627480578, + 3.7469393863442697, + 3.7467683509668746, + 3.7465975216078697, + 3.746426898533662, + 3.746256482017542, + 3.7460862710554017, + 3.745916266089548, + 3.745746467984679, + 3.745576876982134, + 3.7454074933274057, + 3.745238317270106, + 3.745069349063914, + 3.744900588966524, + 3.744732037239605, + 3.744563694148747, + 3.74439555996342, + 3.74422763495692, + 3.744059919406331, + 3.7438924135924703, + 3.743725117799845, + 3.743558031046695, + 3.743391152163387, + 3.7432244832670474, + 3.743058024565298, + 3.7428917762657585, + 3.74272573857601, + 3.7425599117035886, + 3.7423942958559513, + 3.742228891240466, + 3.742063698064388, + 3.7418987165348336, + 3.7417339468587736, + 3.741569389243, + 3.741405043894112, + 3.7412409110185, + 3.741076990665057, + 3.7409132815330337, + 3.740749785070971, + 3.740586501442422, + 3.740423430809088, + 3.740260573330805, + 3.7400979291655423, + 3.739935498469392, + 3.7397732813965607, + 3.739611278099355, + 3.739449488728192, + 3.739287913431566, + 3.73912655235606, + 3.738965405646329, + 3.7388044734450903, + 3.738643755893126, + 3.7384832521396305, + 3.738322962843908, + 3.7381628882993105, + 3.738003028609602, + 3.7378433838755383, + 3.737683954194879, + 3.7375247396623816, + 3.737365740369799, + 3.737206956405892, + 3.737048387856413, + 3.736890034804118, + 3.7367318973287658, + 3.736573975507111, + 3.73641626941291, + 3.736258779116916, + 3.7361015045693406, + 3.735944445817772, + 3.735787603003412, + 3.7356309761796567, + 3.7354745653967, + 3.735318370701528, + 3.7351623921379256, + 3.735006629746465, + 3.734851083564513, + 3.734695753626224, + 3.7345406399625376, + 3.7343857426011793, + 3.7342310615666534, + 3.734076596880241, + 3.7339223485599966, + 3.7337683164763575, + 3.7336145003205017, + 3.733460900405313, + 3.733307516714856, + 3.7331543492284744, + 3.733001397920736, + 3.7328486627613886, + 3.732696143715306, + 3.732543840742437, + 3.732391753797759, + 3.7322398828312178, + 3.732088227787684, + 3.731936788606895, + 3.731785565223408, + 3.7316345575665384, + 3.731483765565371, + 3.731333189967136, + 3.731182830080514, + 3.731032685844091, + 3.730882757193137, + 3.730733044059636, + 3.7305835463722863, + 3.730434264056512, + 3.730285197034479, + 3.730136345225095, + 3.7299877085440274, + 3.729839286903704, + 3.7296910802133247, + 3.7295430883788665, + 3.729395311303086, + 3.7292477488855327, + 3.729100400501787, + 3.728953266207192, + 3.728806346030007, + 3.728659639828628, + 3.7285131474562743, + 3.728366868760941, + 3.728220803828876, + 3.728074952429927, + 3.7279293138465848, + 3.7277838895378226, + 3.727638676240453, + 3.7274936766132543, + 3.727348890810023, + 3.727204318642532, + 3.727059955997512, + 3.7269158056658296, + 3.726771868376103, + 3.726628143920378, + 3.726484628777243, + 3.726341324699455, + 3.7261982328022496, + 3.726055352857337, + 3.725912683026161, + 3.725770222781422, + 3.725627972667779, + 3.7254859324363103, + 3.725344101832736, + 3.725202480597384, + 3.725061068465126, + 3.724919865165334, + 3.724778870684526, + 3.724638084937551, + 3.724497507321541, + 3.7243571375433415, + 3.724216975304014, + 3.7240770202987674, + 3.723937272216887, + 3.7237977307416754, + 3.723658395657975, + 3.723519266953056, + 3.7233803439776496, + 3.7232416263902377, + 3.7231031138429422, + 3.722964805981445, + 3.722826702444896, + 3.722688802865836, + 3.7225511069050294, + 3.722413615094328, + 3.7222763263085663, + 3.722139240152416, + 3.7220023562234426, + 3.7218656741120153, + 3.7217291934011927, + 3.7215929136666226, + 3.721456834476432, + 3.721320955391103, + 3.721185275963373, + 3.721049795738105, + 3.7209145142521662, + 3.720779431034304, + 3.7206445456050177, + 3.7205098574764257, + 3.720375366152126, + 3.720241072948628, + 3.72010697675356, + 3.7199730761441367, + 3.719839370587969, + 3.719705859543406, + 3.7195725424593697, + 3.719439418775192, + 3.719306487920451, + 3.719173749314799, + 3.719041202367785, + 3.718908846478678, + 3.7187766810362786, + 3.718644705418736, + 3.7185129189933495, + 3.718381321116371, + 3.718249914285641, + 3.7181186954103898, + 3.7179876635208977, + 3.717856817926177, + 3.7177261579230954, + 3.717595682796146, + 3.7174653918172087, + 3.717335284245311, + 3.717205359326379, + 3.717075616292986, + 3.7169460543640898, + 3.716816672744766, + 3.716687470625941, + 3.71655844718411, + 3.7164296023894687, + 3.7163009390579145, + 3.716172452496053, + 3.716044141818742, + 3.715916006124897, + 3.7157880444971454, + 3.715660256001516, + 3.715532639687096, + 3.7154051945856863, + 3.715277919711449, + 3.7151508140605425, + 3.715023876610762, + 3.714897106321152, + 3.714770502131621, + 3.7146440629625537, + 3.714517790364975, + 3.714391684828545, + 3.714265741779851, + 3.714139960055861, + 3.714014338471877, + 3.713888875821063, + 3.713763570874007, + 3.713638422378221, + 3.713513429057675, + 3.713388589612293, + 3.713263902717445, + 3.7131393670234343, + 3.7130149811549646, + 3.712890743710599, + 3.712766653262211, + 3.712642712886112, + 3.712518919887531, + 3.7123952708544823, + 3.71227176433179, + 3.712148398834517, + 3.712025172847344, + 3.7119020848239312, + 3.71177913318624, + 3.711656316323881, + 3.711533632593417, + 3.7114110803176623, + 3.71128865778497, + 3.7111663632485, + 3.71104419492547, + 3.710922150996395, + 3.710800229604314, + 3.71067842885399, + 3.710556746811098, + 3.7104351815014143, + 3.71031373090995, + 3.710192392980111, + 3.710071165612806, + 3.709950046665556, + 3.70982903395159, + 3.7097081252388944, + 3.7095873182492825, + 3.7094666106574152, + 3.7093460000898233, + 3.7092254841238863, + 3.709105062153776, + 3.708984738845664, + 3.708864503764576, + 3.708744354327167, + 3.7086242878956046, + 3.706635437493313, + 3.7067555039248754, + 3.706875653362285, + 3.706995888443372, + 3.707116211751485, + 3.7072366337215943, + 3.707357149687532, + 3.707477760255124, + 3.707598467846991, + 3.707719274836603, + 3.7078401835492985, + 3.707961196263264, + 3.708082315210514, + 3.7082035425778193, + 3.7083248805076585, + 3.7084463310991223, + 3.7085678964088062, + 3.7086895784516978, + 3.7088113792020225, + 3.7089333005941034, + 3.709055344523178, + 3.709177512846209, + 3.7092998073826786, + 3.709422229915371, + 3.7095447821911254, + 3.709667465921589, + 3.709790282783948, + 3.70991323442164, + 3.710036322445053, + 3.710159548432225, + 3.7102829139294986, + 3.710406420452191, + 3.7105300694852392, + 3.71065386248382, + 3.710777802859919, + 3.710901893308307, + 3.711026130752673, + 3.7111505166211423, + 3.7112750523151536, + 3.711399739210001, + 3.711524578655384, + 3.7116495719759297, + 3.7117747204717153, + 3.711900025418772, + 3.712025488069585, + 3.7121511096535698, + 3.712276891377559, + 3.7124028344262534, + 3.712528939962683, + 3.7126552125602617, + 3.712781651729329, + 3.71290825591886, + 3.7130350262084706, + 3.713161963658251, + 3.7132890693091576, + 3.713416344183395, + 3.7135437892848047, + 3.713671405599224, + 3.713799194094854, + 3.7139271557226055, + 3.714055291416451, + 3.714183602093761, + 3.714312088655623, + 3.714440751987177, + 3.714569596781818, + 3.7146986202236496, + 3.714827822342474, + 3.7149572039617977, + 3.7150867658906943, + 3.715216508924088, + 3.715346433843019, + 3.715476541414917, + 3.7156068323938545, + 3.715737307520804, + 3.7158679675238857, + 3.715998813118606, + 3.7161298450080977, + 3.7162610638833495, + 3.716392470714079, + 3.716524068591058, + 3.716655855016445, + 3.716787830633987, + 3.7169199960763866, + 3.7170523519654934, + 3.717184898912507, + 3.71731763751816, + 3.7174505683729, + 3.7175836920570777, + 3.7177170091411145, + 3.7178505201856775, + 3.717984225741845, + 3.7181181263512686, + 3.7182522225463366, + 3.7183865157498346, + 3.7185210070741337, + 3.718655695202726, + 3.718790580632012, + 3.718925663849874, + 3.7190609453358134, + 3.7191964255610817, + 3.719332104988812, + 3.71946798407414, + 3.719604063264331, + 3.719740342998901, + 3.719876823709724, + 3.720013505821151, + 3.720150389750124, + 3.720287475906275, + 3.720424764692036, + 3.720562256502738, + 3.720699952463544, + 3.720837852042605, + 3.720975955579153, + 3.721114263440651, + 3.721252775987946, + 3.721391493575358, + 3.721530416550764, + 3.721669545255683, + 3.721808880339384, + 3.721948421814596, + 3.722088169896476, + 3.722228124901723, + 3.72236828714105, + 3.7225086569192496, + 3.7226492345352593, + 3.7227900202822344, + 3.7229310147630423, + 3.7230722180628346, + 3.723213630195092, + 3.723355251430444, + 3.7234970820340183, + 3.723639122265488, + 3.7237813723791304, + 3.7239238326238695, + 3.724066502455045, + 3.724209382399958, + 3.724352474297164, + 3.7244957783749513, + 3.7246392935180865, + 3.7247830179738113, + 3.724926955263538, + 3.725071105595221, + 3.7252154682402407, + 3.725360040407731, + 3.7255048262109622, + 3.7256498258381616, + 3.725795039135531, + 3.725940463444293, + 3.7260861020276352, + 3.726231953426584, + 3.7263780183586497, + 3.726524297053983, + 3.726670789426336, + 3.7268174956277154, + 3.726964415804901, + 3.727111550099496, + 3.727258898483241, + 3.727406460900795, + 3.727554237976575, + 3.727702229811033, + 3.727850436501413, + 3.727998858141736, + 3.728147494822804, + 3.7282963466321872, + 3.72844541365422, + 3.7285946959699943, + 3.728744193657344, + 3.7288939067908458, + 3.729043835441799, + 3.7291939796782225, + 3.729344339564844, + 3.7294949151630794, + 3.729645707164247, + 3.729796714821117, + 3.729947938204604, + 3.730099377385392, + 3.730251032428926, + 3.730402903395467, + 3.7305549903401456, + 3.7307072933130145, + 3.730859812359097, + 3.731012547518444, + 3.731165498826183, + 3.731318666312564, + 3.7314720500030214, + 3.73162564991821, + 3.731779466074066, + 3.731933498157705, + 3.7320877464779496, + 3.732242211164362, + 3.732396892198888, + 3.732551789560246, + 3.732706903223933, + 3.732862233162221, + 3.7330177793441734, + 3.733173541735634, + 3.733329520299236, + 3.733485714994409, + 3.733642125777365, + 3.73379875260112, + 3.73395559541548, + 3.734112654167049, + 3.7342699287146246, + 3.7344274190106184, + 3.73458512510482, + 3.734743046926474, + 3.7349011844018265, + 3.735059537454122, + 3.7352181060036, + 3.7353768899675073, + 3.73553588926009, + 3.735695103792587, + 3.7358545334732463, + 3.73601417820731, + 3.736174037897019, + 3.736334112441616, + 3.736494401737339, + 3.7366549054908345, + 3.736815623042799, + 3.7369765552440377, + 3.737137701953768, + 3.7372990630292744, + 3.7374606383259, + 3.737622427697064, + 3.737784430994269, + 3.737946648067101, + 3.738109078763251, + 3.7382717229285136, + 3.738434580406796, + 3.73859765104013, + 3.738760934668679, + 3.738924431130742, + 3.7390881402627656, + 3.739252060616209, + 3.73941619349182, + 3.739580538840708, + 3.739745096456482, + 3.739909866132542, + 3.740074847662096, + 3.740240040838174, + 3.74040544545366, + 3.740571061301297, + 3.740736888173718, + 3.740902925863467, + 3.741069174163006, + 3.741235632864756, + 3.741402301761096, + 3.741569180644403, + 3.741736267397553, + 3.7419035631901783, + 3.742071069004039, + 3.7422387845546288, + 3.742406709561128, + 3.742574843746455, + 3.7427431868373136, + 3.7429117385642328, + 3.743080498661623, + 3.7432494668678142, + 3.7434186429251137, + 3.743588026579842, + 3.743757617582387, + 3.743927415687256, + 3.7440974206531097, + 3.7442676316152506, + 3.7444380481313706, + 3.7446086712055777, + 3.744779500564583, + 3.7449505359419777, + 3.7451217770782863, + 3.74529322372105, + 3.7454648756248785, + 3.7456367325515254, + 3.745808794269956, + 3.745981060556408, + 3.746153531194464, + 3.74632620597512, + 3.746499084696853, + 3.746672167165684, + 3.7468454529123902, + 3.747018939500805, + 3.747192630219115, + 3.7473665247641534, + 3.747540622849594, + 3.7477149242060976, + 3.747889428581432, + 3.748064135740618, + 3.7482390454660504, + 3.748414157557638, + 3.748589471832931, + 3.748764988127261, + 3.748940706414417, + 3.7491166270170018, + 3.7492927489922367, + 3.749469072296925, + 3.749645596902144, + 3.749822322793381, + 3.749999249970662, + 3.750176378448696, + 3.750353708257, + 3.7505312394400447, + 3.750708972057379, + 3.7508869061837697, + 3.7510650413715982, + 3.751243376995875, + 3.751421915693801, + 3.7516006572052207, + 3.75177960134028, + 3.751958747979617, + 3.752138098191036, + 3.752317652996829, + 3.7524974081089, + 3.752677364418736, + 3.7528575227887657, + 3.7530378840526226, + 3.7532184468932934, + 3.753399210947869, + 3.753580184050352, + 3.753761365688691, + 3.753942755494549, + 3.7541243532435473, + 3.754306160822384, + 3.7544881787888857, + 3.754670401706057, + 3.754852830959128, + 3.7550354679356728, + 3.755218314025603, + 3.7554013695686033, + 3.7555846357576, + 3.7557681166971295, + 3.755951813470475, + 3.75613572716508, + 3.7563198588725353, + 3.7565042146854353, + 3.75668879565377, + 3.756873591616369, + 3.7570586050374226, + 3.75724383838806, + 3.757429294146332, + 3.7576149785552375, + 3.7578008934152303, + 3.7579870337698615, + 3.758173403065869, + 3.758360004761548, + 3.7585468423267336, + 3.758733932505294, + 3.758921274315228, + 3.759108848059343, + 3.7592966603899014, + 3.759484717974881, + 3.759673027497927, + 3.759861496672973, + 3.7600501866724145, + 3.760239252581772, + 3.7604286715262982, + 3.760618423470885, + 3.760808491220712, + 3.7609989502911914, + 3.761189724235829, + 3.761380688978836, + 3.761571869128131, + 3.761763287785376, + 3.761954966549319, + 3.7621468260705906, + 3.7623389692256, + 3.7625315230544776, + 3.762724468827333, + 3.762917792355524, + 3.763111483689363, + 3.763305588055572, + 3.7635000522256608, + 3.7636948301144866, + 3.76388994511701, + 3.7640854188486466, + 3.7642812713133447, + 3.764477512555855, + 3.7646741689485297, + 3.764871263430657, + 3.7650688081759167, + 3.7652668153145528, + 3.765465297027525, + 3.765664261425014, + 3.765863725835496, + 3.766063706052617, + 3.766264213973974, + 3.766465262360633, + 3.7666668649013433, + 3.766869033190666, + 3.767071786679701, + 3.767275143993863, + 3.7674791221386794, + 3.7676837396270217, + 3.7678890165162873, + 3.7680949887443087, + 3.7683016610592817, + 3.7685090519800566, + 3.768717193152513, + 3.768926116571276, + 3.769135854798551, + 3.7693464488078288, + 3.769557921880757, + 3.769770307615945, + 3.7699836462584817, + 3.770197978604648, + 3.7704133464225817, + 3.770629793639495, + 3.770847363647511, + 3.771066104023272, + 3.771286061796129, + 3.7715072975159183, + 3.771729865975971, + 3.771953818474696, + 3.772179231540751, + 3.772406173171389, + 3.772634709722333, + 3.7728649306832858, + 3.773096922431832, + 3.7733307681670487, + 3.7735665905936937, + 3.773804499263611, + 3.774044591296027, + 3.7742870358647913, + 3.774531968712413, + 3.774779468418977, + 3.7750298324091496, + 3.775283213956683, + 3.775539756905133, + 3.775799685656476, + 3.776063235025197, + 3.776330673231294, + 3.7766023513300913, + 3.7768786278798134, + 3.777159923953408, + 3.7774467251944026, + 3.777739600539437, + 3.778039230866437, + 3.7783462992843617, + 3.778661889438512, + 3.778986878952709, + 3.7793224994415047, + 3.779670456701031, + 3.780032803731889, + 3.780412200485164, + 3.780812110428573, + 3.7812371809256726, + 3.781694921905787, + 3.78219856537562, + 3.782768893159078, + 3.78343715100528, + 3.7843131489046065, + 3.785762075609013 + ] + }, + { + "mode": "markers", + "name": "Target", + "type": "scatter", + "x": [ + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 18, + 20, + 22, + 24, + 26, + 28, + 30, + 32, + 34, + 36, + 38, + 40, + 42, + 44, + 46, + 48, + 50, + 52, + 54, + 56, + 58, + 60, + 62, + 64, + 66, + 68, + 70, + 72, + 74, + 76, + 78, + 80, + 82, + 84, + 86, + 88, + 90, + 92, + 94, + 96, + 98, + 100, + 102, + 104, + 106, + 108, + 110, + 112, + 114, + 116, + 118, + 120, + 122, + 124, + 126, + 128, + 130, + 132, + 134, + 136, + 138, + 140, + 142, + 144, + 146, + 148, + 150, + 152, + 154, + 156, + 158, + 160, + 162, + 164, + 166, + 168, + 170, + 172, + 174, + 176, + 178, + 180, + 182, + 184, + 186, + 188, + 190, + 192, + 194, + 196, + 198, + 200, + 202, + 204, + 206, + 208, + 210, + 212, + 214, + 216, + 218, + 220, + 222, + 224, + 226, + 228, + 230, + 232, + 234, + 236, + 238, + 240, + 242, + 244, + 246, + 248, + 250, + 252, + 254, + 256, + 258, + 260, + 262, + 264, + 266, + 268, + 270, + 272, + 274, + 276, + 278, + 280, + 282, + 284, + 286, + 288, + 290, + 292, + 294, + 296, + 298, + 300, + 302, + 304, + 306, + 308, + 310, + 312, + 314, + 316, + 318, + 320, + 322, + 324, + 326, + 328, + 330, + 332, + 334, + 336, + 338, + 340, + 342, + 344, + 346, + 348, + 350, + 352, + 354, + 356, + 358, + 360, + 362, + 364, + 366, + 368, + 370, + 372, + 374, + 376, + 378, + 380, + 382, + 384, + 386, + 388, + 390, + 392, + 394, + 396, + 398, + 400, + 402, + 404, + 406, + 408, + 410, + 412, + 414, + 416, + 418, + 420, + 422, + 424, + 426, + 428, + 430, + 432, + 434, + 436, + 438, + 440, + 442, + 444, + 446, + 448, + 450, + 452, + 454, + 456, + 458, + 460, + 462, + 464, + 466, + 468, + 470, + 472, + 474, + 476, + 478, + 480, + 482, + 484, + 486, + 488, + 490, + 492, + 494, + 496, + 498, + 500, + 502, + 504, + 506, + 508, + 510, + 512, + 514, + 516, + 518, + 520, + 522, + 524, + 526, + 528, + 530, + 532, + 534, + 536, + 538, + 540, + 542, + 544, + 546, + 548, + 550, + 552, + 554, + 556, + 558, + 560, + 562, + 564, + 566, + 568, + 570, + 572, + 574, + 576, + 578, + 580, + 582, + 584, + 586, + 588, + 590, + 592, + 594, + 596, + 598, + 600, + 602, + 604, + 606, + 608, + 610, + 612, + 614, + 616, + 618, + 620, + 622, + 624, + 626, + 628, + 630, + 632, + 634, + 636, + 638, + 640, + 642, + 644, + 646, + 648, + 650, + 652, + 654, + 656, + 658, + 660, + 662, + 664, + 666, + 668, + 670, + 672, + 674, + 676, + 678, + 680, + 682, + 684, + 686, + 688, + 690, + 692, + 694, + 696, + 698, + 700, + 702, + 704, + 706, + 708, + 710, + 712, + 714, + 716, + 718, + 720, + 722, + 724, + 726, + 728, + 730, + 732, + 734, + 736, + 738, + 740, + 742, + 744, + 746, + 748, + 750, + 752, + 754, + 756, + 758, + 760, + 762, + 764, + 766, + 768, + 770, + 772, + 774, + 776, + 778, + 780, + 782, + 784, + 786, + 788, + 790, + 792, + 794, + 796, + 798, + 800, + 802, + 804, + 806, + 808, + 810, + 812, + 814, + 816, + 818, + 820, + 822, + 824, + 826, + 828, + 830, + 832, + 834, + 836, + 838, + 840, + 842, + 844, + 846, + 848, + 850, + 852, + 854, + 856, + 858, + 860, + 862, + 864, + 866, + 868, + 870, + 872, + 874, + 876, + 878, + 880, + 882, + 884, + 886, + 888, + 890, + 892, + 894, + 896, + 898 + ], + "y": [ + 3.785298913727673, + 3.78663588490789, + 3.7858396208633938, + 3.78495004287668, + 3.783774797743091, + 3.7815680150601256, + 3.7828716168644343, + 3.781794417856999, + 3.782249702115228, + 3.780445583983627, + 3.7816996125523943, + 3.778529676794219, + 3.7797601387380473, + 3.779925071933846, + 3.778196395712977, + 3.77927558277712, + 3.778255127193483, + 3.778606644858824, + 3.776384167101001, + 3.777220004972044, + 3.778710031328139, + 3.777859650205325, + 3.776490227011931, + 3.77658396026891, + 3.777690132905648, + 3.7767056098697704, + 3.775253159677761, + 3.77451208941353, + 3.776476157266451, + 3.7758237124723024, + 3.774764183396343, + 3.775929269501378, + 3.774679767099537, + 3.776083136228037, + 3.7719918725746706, + 3.7751762818110346, + 3.775447773456484, + 3.774040725796796, + 3.7722762723275176, + 3.773017659857714, + 3.7725811271344583, + 3.7732023379265303, + 3.772556707266954, + 3.771070768147396, + 3.771781265171908, + 3.77089788104808, + 3.772586507336316, + 3.7714608181046616, + 3.769867970062967, + 3.7697488093687928, + 3.770687557393728, + 3.7703631116664114, + 3.7700635063258834, + 3.7702847987959895, + 3.768788777611854, + 3.7703635435046623, + 3.7675780526577705, + 3.767229811398163, + 3.767709207642001, + 3.7699724694278545, + 3.767090833418488, + 3.769237122366605, + 3.7672917001350505, + 3.768334422969043, + 3.768025149812075, + 3.766848973620052, + 3.767202701890223, + 3.764986863607765, + 3.766512569663105, + 3.766860491186979, + 3.767270311358766, + 3.7657840496635098, + 3.766091791696267, + 3.7646567080924265, + 3.764865532997577, + 3.764573312519497, + 3.764286737155829, + 3.764051198135931, + 3.764441471884701, + 3.7644102923531073, + 3.763528699053769, + 3.766989753161907, + 3.764534793096274, + 3.764216805454938, + 3.763192747680314, + 3.7633454924196066, + 3.763968380095133, + 3.765530130872472, + 3.761898093020857, + 3.763751644108724, + 3.7635138726228727, + 3.7622071339117142, + 3.762361575531746, + 3.7608848151368144, + 3.7637572504051775, + 3.7609852925764136, + 3.762031718983472, + 3.7620633734315465, + 3.7611494198972415, + 3.7624371129318663, + 3.760084991147157, + 3.759162243942795, + 3.7611083350075223, + 3.7596314451959496, + 3.7601429326783102, + 3.7601324511521166, + 3.7596370658698817, + 3.759891955740249, + 3.758410343088575, + 3.75721359897665, + 3.760490503740898, + 3.7577360580106376, + 3.7570252897180425, + 3.756475979031917, + 3.7584378074267057, + 3.7587854940099414, + 3.7583191157118394, + 3.756067129150825, + 3.7591114341869503, + 3.7570747301769183, + 3.7567147309821514, + 3.756641768576472, + 3.757766550938638, + 3.7549898287122527, + 3.756812041523763, + 3.756141204698392, + 3.756319969745936, + 3.7560007775530946, + 3.757744213065112, + 3.755619945076075, + 3.755397548960461, + 3.7542723689649833, + 3.753900824380753, + 3.7548469242519142, + 3.754269018245586, + 3.754146784845078, + 3.7538827888440895, + 3.753731821406795, + 3.7550306982653994, + 3.7548763654383386, + 3.7516133958537825, + 3.752331843676592, + 3.75387275987044, + 3.75280186469977, + 3.7524198102787314, + 3.753460046946888, + 3.7504590398419415, + 3.751898239911158, + 3.748884476386352, + 3.752892001376539, + 3.750126727506156, + 3.752910464252652, + 3.7503998705689745, + 3.751094403165528, + 3.75247852825412, + 3.7506087492079567, + 3.7497414963043383, + 3.750116432104816, + 3.749591789667802, + 3.748556930478478, + 3.7504462396502207, + 3.750335900394575, + 3.75133276065195, + 3.7495500009952383, + 3.748847309846962, + 3.7503281875432153, + 3.748334685099616, + 3.747759706706365, + 3.7488731985725, + 3.7473133721366536, + 3.747547349965167, + 3.7482695803508377, + 3.7484866438000486, + 3.7474971954487017, + 3.747007587084561, + 3.7480238995750375, + 3.7463391637905, + 3.747685768051406, + 3.745704789226829, + 3.7456285667607, + 3.746418402079395, + 3.7466170412841295, + 3.744517175335988, + 3.745292985355174, + 3.744650106472645, + 3.74582259747007, + 3.744619848540184, + 3.744864022740864, + 3.744513158629032, + 3.7443197599391462, + 3.744480512908242, + 3.743817397835809, + 3.743499997225136, + 3.743286119300033, + 3.7448007455521544, + 3.744183838776684, + 3.7460204194099687, + 3.7428938756900143, + 3.743949312396992, + 3.741813763899032, + 3.743517995938216, + 3.7425081385254817, + 3.743021477383031, + 3.742953746036971, + 3.743998093728281, + 3.7422685383294447, + 3.7424394961506646, + 3.741810535944326, + 3.7426447742752913, + 3.741816575266791, + 3.74070483463661, + 3.7417526977521183, + 3.7412503437759193, + 3.7418284200764305, + 3.7393253245651152, + 3.7422120482266936, + 3.7403164396212345, + 3.7402522479903304, + 3.740582865524553, + 3.741314791539783, + 3.740181686053499, + 3.739683220527845, + 3.738526319397093, + 3.7394835966373834, + 3.7374172875331046, + 3.7384622525226026, + 3.737854829171072, + 3.7367987073142905, + 3.737753828935244, + 3.735672876385299, + 3.737871607012314, + 3.7378643580014703, + 3.7376304397159985, + 3.736190802158782, + 3.7381604437101847, + 3.737321534897568, + 3.736835463702042, + 3.736693720263678, + 3.737453713479005, + 3.7380565785281945, + 3.7368259704351936, + 3.737660368180894, + 3.735433728408863, + 3.7367984424870344, + 3.7334330894174537, + 3.737871321600742, + 3.734802344902049, + 3.735795165610141, + 3.7347049289818712, + 3.7333577718610447, + 3.734048539184295, + 3.7355938184681583, + 3.734823078377838, + 3.734531480225874, + 3.734398143774933, + 3.7347933050427007, + 3.733536851160486, + 3.734090341287161, + 3.7326789778355, + 3.732071282367538, + 3.732554910693762, + 3.734197035211829, + 3.732730505655807, + 3.73185538441944, + 3.733240938800565, + 3.7316471663953825, + 3.732350890831582, + 3.732589455437932, + 3.732714212115132, + 3.7314907610990673, + 3.730710396404091, + 3.7322214146251977, + 3.7305026879629746, + 3.730430474236508, + 3.732258088215589, + 3.7301723380426615, + 3.730348555753033, + 3.730167063580274, + 3.729538000196436, + 3.731643583014294, + 3.732348291447017, + 3.729160633045855, + 3.73117603338921, + 3.72891749236626, + 3.7297368731860354, + 3.730044229873722, + 3.728218302306479, + 3.728330635111544, + 3.7294288803829847, + 3.7291865645847784, + 3.728488268331739, + 3.727380363658825, + 3.728954669013872, + 3.728494590276541, + 3.728546533030974, + 3.726465888097555, + 3.726816979764723, + 3.726866432031416, + 3.7267110185992833, + 3.726486165497061, + 3.726396187346389, + 3.728472450415575, + 3.725416445767098, + 3.726087307748061, + 3.7273476407010935, + 3.7268323243594614, + 3.724931348710889, + 3.7250591712483314, + 3.7252981386024104, + 3.7245510036901224, + 3.724969297671629, + 3.7246223339775946, + 3.726139527942422, + 3.725283371706504, + 3.7263198002766225, + 3.7262451695249177, + 3.725953468536683, + 3.7245111048591006, + 3.724301586673215, + 3.725078734562816, + 3.72514890962546, + 3.7245600009304702, + 3.7266475858960937, + 3.7246441245848017, + 3.7247326003973464, + 3.725543092050231, + 3.723948938775675, + 3.722800331973541, + 3.7232591433978466, + 3.7248235280674367, + 3.722906347076443, + 3.7220807048684055, + 3.7234675180727272, + 3.72267681742563, + 3.7219430360131303, + 3.7223973550644582, + 3.720726314031057, + 3.7218265478737056, + 3.721600150560099, + 3.7227946506145497, + 3.721044327005312, + 3.721701391982592, + 3.71983773921872, + 3.719799013052111, + 3.72036113977738, + 3.7215171831370535, + 3.7209433651080337, + 3.720159258147751, + 3.720850364225461, + 3.7198981998236023, + 3.719692282145367, + 3.720133971393125, + 3.719030307832911, + 3.721306317938315, + 3.7205454606195993, + 3.719361096493024, + 3.718525613557568, + 3.7191020978887614, + 3.718636445775065, + 3.7185907005691994, + 3.719538659849548, + 3.71856008305218, + 3.718685173463007, + 3.718104772212635, + 3.718344553367959, + 3.718765769311283, + 3.71705135686155, + 3.718214371426436, + 3.719833904051614, + 3.7169595106014337, + 3.717703607315508, + 3.718950334938844, + 3.717668059442031, + 3.7167374807342393, + 3.716968579054971, + 3.7158917456614744, + 3.7176372289223822, + 3.716074891794177, + 3.714736793530909, + 3.717279616247654, + 3.7166666419996304, + 3.7150195204254888, + 3.7147092303611657, + 3.7163511217972967, + 3.714741656310368, + 3.71702997592534, + 3.716040118045386, + 3.7144594295328823, + 3.714666716762933, + 3.714376446709569, + 3.715260001843563, + 3.7160298251116224, + 3.715140871266049, + 3.713999999104811, + 3.7139074117557462, + 3.712540219609767, + 3.711917674973463, + 3.714770546888019, + 3.712845452628081, + 3.713690162112857, + 3.714656454032423, + 3.7144130166252847, + 3.714904906830763, + 3.715849510642133, + 3.712627452844948, + 3.7141361910183734, + 3.713041359243416, + 3.7136300546003103, + 3.7140325774789353, + 3.711973517582124, + 3.713083814936144, + 3.71099646912026, + 3.7147944552430654, + 3.7138663575368818, + 3.712955000069678, + 3.710366937217274, + 3.7114046301159704, + 3.7124660630493143, + 3.7124884799975817, + 3.7081372404087176, + 3.7106319641698913, + 3.71044362518327, + 3.712124426725339, + 3.712123955750993, + 3.710769878582444, + 3.7086263120643688, + 3.709528529284836, + 3.7109578228313302, + 3.711124948342458, + 3.7085411535387176, + 3.7087818942594946, + 3.709960978624787, + 3.710409877799314, + 3.7085237442907832, + 3.708040446560682, + 3.708581911260688, + 3.708814375406676, + 3.708489757921498, + 3.7090551193637222, + 3.7089659185349055, + 3.70945414112778, + 3.70827385244182, + 3.7094956058389967, + 3.7093294819204585, + 3.7080086104123846, + 3.7095112609122856, + 3.7056091340733217, + 3.708211992540957, + 3.709893681962309, + 3.7064109446381943 + ] + }, + { + "line": { + "width": 4 + }, + "mode": "lines", + "name": "Model", + "type": "scatter", + "x": [ + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 18, + 20, + 22, + 24, + 26, + 28, + 30, + 32, + 34, + 36, + 38, + 40, + 42, + 44, + 46, + 48, + 50, + 52, + 54, + 56, + 58, + 60, + 62, + 64, + 66, + 68, + 70, + 72, + 74, + 76, + 78, + 80, + 82, + 84, + 86, + 88, + 90, + 92, + 94, + 96, + 98, + 100, + 102, + 104, + 106, + 108, + 110, + 112, + 114, + 116, + 118, + 120, + 122, + 124, + 126, + 128, + 130, + 132, + 134, + 136, + 138, + 140, + 142, + 144, + 146, + 148, + 150, + 152, + 154, + 156, + 158, + 160, + 162, + 164, + 166, + 168, + 170, + 172, + 174, + 176, + 178, + 180, + 182, + 184, + 186, + 188, + 190, + 192, + 194, + 196, + 198, + 200, + 202, + 204, + 206, + 208, + 210, + 212, + 214, + 216, + 218, + 220, + 222, + 224, + 226, + 228, + 230, + 232, + 234, + 236, + 238, + 240, + 242, + 244, + 246, + 248, + 250, + 252, + 254, + 256, + 258, + 260, + 262, + 264, + 266, + 268, + 270, + 272, + 274, + 276, + 278, + 280, + 282, + 284, + 286, + 288, + 290, + 292, + 294, + 296, + 298, + 300, + 302, + 304, + 306, + 308, + 310, + 312, + 314, + 316, + 318, + 320, + 322, + 324, + 326, + 328, + 330, + 332, + 334, + 336, + 338, + 340, + 342, + 344, + 346, + 348, + 350, + 352, + 354, + 356, + 358, + 360, + 362, + 364, + 366, + 368, + 370, + 372, + 374, + 376, + 378, + 380, + 382, + 384, + 386, + 388, + 390, + 392, + 394, + 396, + 398, + 400, + 402, + 404, + 406, + 408, + 410, + 412, + 414, + 416, + 418, + 420, + 422, + 424, + 426, + 428, + 430, + 432, + 434, + 436, + 438, + 440, + 442, + 444, + 446, + 448, + 450, + 452, + 454, + 456, + 458, + 460, + 462, + 464, + 466, + 468, + 470, + 472, + 474, + 476, + 478, + 480, + 482, + 484, + 486, + 488, + 490, + 492, + 494, + 496, + 498, + 500, + 502, + 504, + 506, + 508, + 510, + 512, + 514, + 516, + 518, + 520, + 522, + 524, + 526, + 528, + 530, + 532, + 534, + 536, + 538, + 540, + 542, + 544, + 546, + 548, + 550, + 552, + 554, + 556, + 558, + 560, + 562, + 564, + 566, + 568, + 570, + 572, + 574, + 576, + 578, + 580, + 582, + 584, + 586, + 588, + 590, + 592, + 594, + 596, + 598, + 600, + 602, + 604, + 606, + 608, + 610, + 612, + 614, + 616, + 618, + 620, + 622, + 624, + 626, + 628, + 630, + 632, + 634, + 636, + 638, + 640, + 642, + 644, + 646, + 648, + 650, + 652, + 654, + 656, + 658, + 660, + 662, + 664, + 666, + 668, + 670, + 672, + 674, + 676, + 678, + 680, + 682, + 684, + 686, + 688, + 690, + 692, + 694, + 696, + 698, + 700, + 702, + 704, + 706, + 708, + 710, + 712, + 714, + 716, + 718, + 720, + 722, + 724, + 726, + 728, + 730, + 732, + 734, + 736, + 738, + 740, + 742, + 744, + 746, + 748, + 750, + 752, + 754, + 756, + 758, + 760, + 762, + 764, + 766, + 768, + 770, + 772, + 774, + 776, + 778, + 780, + 782, + 784, + 786, + 788, + 790, + 792, + 794, + 796, + 798, + 800, + 802, + 804, + 806, + 808, + 810, + 812, + 814, + 816, + 818, + 820, + 822, + 824, + 826, + 828, + 830, + 832, + 834, + 836, + 838, + 840, + 842, + 844, + 846, + 848, + 850, + 852, + 854, + 856, + 858, + 860, + 862, + 864, + 866, + 868, + 870, + 872, + 874, + 876, + 878, + 880, + 882, + 884, + 886, + 888, + 890, + 892, + 894, + 896, + 898 + ], + "y": [ + 3.7867565008101582, + 3.785307574105752, + 3.784431576206426, + 3.783763318360224, + 3.783192990576766, + 3.782689347106933, + 3.7822316061268184, + 3.781806535629719, + 3.7814066256863095, + 3.7810272289330342, + 3.780664881902177, + 3.7803169246426505, + 3.7799813041538544, + 3.7796563146396576, + 3.779340724485507, + 3.779033656067583, + 3.7787340257405826, + 3.778441150395549, + 3.778154349154554, + 3.777873053080959, + 3.777596776531237, + 3.77732509843244, + 3.777057660226342, + 3.7767941108576215, + 3.7765341821062783, + 3.776277639157829, + 3.7760242576102954, + 3.775773893620123, + 3.775526393913559, + 3.775281461065937, + 3.775039016497173, + 3.774798924464757, + 3.774561015794839, + 3.7743251933681945, + 3.774091347632978, + 3.773859355884431, + 3.7736291349234783, + 3.7734005983725343, + 3.7731736567418968, + 3.7729482436758417, + 3.7727242911771177, + 3.772501722717064, + 3.7722804869972744, + 3.772060529224418, + 3.771841788848657, + 3.771624218840641, + 3.771407771623727, + 3.7711924038057942, + 3.770978071459627, + 3.7707647328170903, + 3.7705523470819022, + 3.7703408740089746, + 3.7701302799996967, + 3.7699205417724215, + 3.769711618353659, + 3.7695034771812024, + 3.769296086260427, + 3.7690894139454545, + 3.768883441717433, + 3.768678164828167, + 3.768473547339825, + 3.768269569195009, + 3.7680662118808463, + 3.767863458391812, + 3.767661290102489, + 3.7674596875617783, + 3.76725863917512, + 3.767058131253763, + 3.766858151036642, + 3.76665868662616, + 3.766459722228671, + 3.7662612405156985, + 3.7660632333770625, + 3.765865688631803, + 3.765668594149675, + 3.7654719377570007, + 3.7652756965144905, + 3.765079844049792, + 3.764884370318155, + 3.764689255315632, + 3.7644944774268065, + 3.764300013256718, + 3.764105908890509, + 3.76391221755667, + 3.7637188940284783, + 3.7635259482556234, + 3.7633333944267457, + 3.763141251271736, + 3.7629493917504657, + 3.762757712986522, + 3.7625662943292766, + 3.7623751141799815, + 3.7621841494369743, + 3.761993375492337, + 3.761802916421858, + 3.761612848672031, + 3.761423096727445, + 3.7612336777829176, + 3.76104461187356, + 3.760855921874118, + 3.7606674526990727, + 3.7604791431760263, + 3.760291085591047, + 3.760103273260489, + 3.7599156995163736, + 3.75972835770644, + 3.759541267527879, + 3.759354429962694, + 3.7591678282670142, + 3.7589814589710073, + 3.758795318616376, + 3.7586094037563833, + 3.758423719347478, + 3.758238263589206, + 3.758053030238568, + 3.7578680168175143, + 3.757683220854916, + 3.757498639886581, + 3.757314284073681, + 3.7571301523662255, + 3.7569462386716217, + 3.7567625418982753, + 3.756579060958746, + 3.756395794769749, + 3.7562127392267497, + 3.7560298931368186, + 3.7558472561602736, + 3.7556648269072026, + 3.755482603990031, + 3.7553005860235302, + 3.755118778444693, + 3.754937180695695, + 3.754755790889837, + 3.754574609251498, + 3.7543936361490142, + 3.754212872094439, + 3.754032309253768, + 3.753851947989911, + 3.753671789619882, + 3.7534918333100458, + 3.753312078197975, + 3.753132523392182, + 3.752953173180763, + 3.7527740265414256, + 3.7525950824063665, + 3.7524163408949462, + 3.752237802197021, + 3.752059466572744, + 3.751881331384915, + 3.7517033972585248, + 3.7515256646411905, + 3.751348133458146, + 3.7511708036498415, + 3.750993675171807, + 3.7508167479945262, + 3.7506400221032896, + 3.75046349749807, + 3.7502871741933825, + 3.750111052218147, + 3.7499351316155622, + 3.7497594133284062, + 3.7495838970340767, + 3.749408582758784, + 3.749233470667196, + 3.749058560941764, + 3.748883853782578, + 3.748709349407243, + 3.74853504805074, + 3.7483609499652992, + 3.748187055420261, + 3.7480133647019502, + 3.747839878113536, + 3.7476665923668295, + 3.747493509897999, + 3.747320631176266, + 3.74714795639561, + 3.746975485757554, + 3.7468032194711016, + 3.746631157752671, + 3.746459300826024, + 3.746287648922196, + 3.746116202279432, + 3.745944961143123, + 3.7457739257657288, + 3.745603096406723, + 3.745432473332517, + 3.745262056816396, + 3.745091845854255, + 3.744921840888402, + 3.744752042783533, + 3.744582451780987, + 3.744413068126259, + 3.74424389206896, + 3.744074923862769, + 3.7439061637653785, + 3.7437376120384593, + 3.743569268947601, + 3.743401134762274, + 3.7432332097557746, + 3.7430654942051858, + 3.742897988391325, + 3.7427306925986983, + 3.74256360584555, + 3.742396726962242, + 3.7422300580659016, + 3.742063599364152, + 3.7418973510646127, + 3.741731313374864, + 3.741565486502443, + 3.7413998706548055, + 3.74123446603932, + 3.741069272863242, + 3.740904291333688, + 3.740739521657628, + 3.740574964041854, + 3.740410618692966, + 3.7402464858173543, + 3.7400825654639114, + 3.739918856331888, + 3.739755359869825, + 3.739592076241277, + 3.739429005607942, + 3.7392661481296594, + 3.739103503964397, + 3.738941073268246, + 3.738778856195415, + 3.7386168528982098, + 3.738455063527046, + 3.73829348823042, + 3.738132127154914, + 3.737970980445183, + 3.737810048243945, + 3.73764933069198, + 3.7374888269384847, + 3.737328537642762, + 3.7371684630981648, + 3.737008603408456, + 3.736848958674393, + 3.7366895289937334, + 3.736530314461236, + 3.736371315168653, + 3.736212531204746, + 3.736053962655267, + 3.735895609602972, + 3.73573747212762, + 3.7355795503059657, + 3.735421844211764, + 3.7352643539157704, + 3.735107079368195, + 3.734950020616626, + 3.734793177802266, + 3.734636550978511, + 3.7344801401955543, + 3.734323945500382, + 3.73416796693678, + 3.7340122045453192, + 3.7338566583633663, + 3.733701328425078, + 3.733546214761392, + 3.7333913174000335, + 3.733236636365507, + 3.7330821716790954, + 3.732927923358851, + 3.732773891275212, + 3.732620075119356, + 3.732466475204167, + 3.73231309151371, + 3.7321599240273287, + 3.73200697271959, + 3.731854237560243, + 3.73170171851416, + 3.7315494155412914, + 3.7313973285966138, + 3.731245457630072, + 3.731093802586538, + 3.7309423634057497, + 3.730791140022262, + 3.7306401323653926, + 3.730489340364225, + 3.73033876476599, + 3.730188404879368, + 3.730038260642945, + 3.729888331991991, + 3.72973861885849, + 3.729589121171141, + 3.729439838855366, + 3.729290771833333, + 3.7291419200239497, + 3.7289932833428816, + 3.7288448617025582, + 3.728696655012179, + 3.7285486631777207, + 3.728400886101941, + 3.728253323684387, + 3.728105975300642, + 3.7279588410060462, + 3.727811920828861, + 3.727665214627482, + 3.727518722255129, + 3.727372443559795, + 3.72722637862773, + 3.727080527228781, + 3.726934888645439, + 3.726789464336677, + 3.7266442510393074, + 3.726499251412109, + 3.7263544656088774, + 3.7262098934413865, + 3.7260655307963666, + 3.725921380464684, + 3.725777443174957, + 3.725633718719232, + 3.725490203576097, + 3.7253468994983097, + 3.725203807601104, + 3.725060927656191, + 3.7249182578250153, + 3.724775797580276, + 3.7246335474666337, + 3.724491507235165, + 3.72434967663159, + 3.724208055396238, + 3.724066643263981, + 3.723925439964188, + 3.72378444548338, + 3.723643659736405, + 3.7235030821203954, + 3.723362712342196, + 3.723222550102869, + 3.7230825950976216, + 3.7229428470157417, + 3.7228033055405296, + 3.7226639704568294, + 3.72252484175191, + 3.722385918776504, + 3.722247201189092, + 3.722108688641797, + 3.721970380780298, + 3.72183227724375, + 3.72169437766469, + 3.721556681703884, + 3.721419189893182, + 3.721281901107421, + 3.72114481495127, + 3.7210079310222968, + 3.7208712489108695, + 3.720734768200047, + 3.720598488465477, + 3.720462409275286, + 3.7203265301899577, + 3.720190850762227, + 3.7200553705369592, + 3.719920089051021, + 3.719785005833158, + 3.719650120403872, + 3.719515432275279, + 3.719380940950981, + 3.7192466477474824, + 3.7191125515524144, + 3.718978650942991, + 3.7188449453868233, + 3.71871143434226, + 3.718578117258223, + 3.718444993574046, + 3.718312062719306, + 3.718179324113654, + 3.7180467771666392, + 3.717914421277533, + 3.7177822558351328, + 3.7176502802175904, + 3.717518493792204, + 3.717386895915225, + 3.7172554890844953, + 3.717124270209243, + 3.716993238319752, + 3.716862392725031, + 3.7167317327219496, + 3.716601257595, + 3.716470966616063, + 3.716340859044166, + 3.7162109341252334, + 3.71608119109184, + 3.715951629162943, + 3.71582224754362, + 3.7156930454247954, + 3.715564021982965, + 3.715435177188323, + 3.7153065138567687, + 3.715178027294906, + 3.715049716617597, + 3.7149215809237512, + 3.714793619296, + 3.71466583080037, + 3.7145382144859505, + 3.714410769384541, + 3.7142834945103034, + 3.7141563888593967, + 3.714029451409616, + 3.7139026811200058, + 3.713776076930474, + 3.713649637761407, + 3.7135233651638297, + 3.713397259627399, + 3.7132713165787057, + 3.713145534854715, + 3.71301991327073, + 3.7128944506199177, + 3.712769145672861, + 3.712643997177075, + 3.7125190038565297, + 3.7123941644111462, + 3.712269477516299, + 3.712144941822289, + 3.712020555953819, + 3.711896318509454, + 3.711772228061065, + 3.711648287684966, + 3.711524494686385, + 3.711400845653337, + 3.711277339130645, + 3.7111539736333703, + 3.7110307476461983, + 3.7109076596227855, + 3.710784707985094, + 3.7106618911227343, + 3.710539207392271, + 3.710416655116517, + 3.710294232583824, + 3.7101719380473543, + 3.710049769724325, + 3.709927725795249, + 3.709805804403168, + 3.709684003652843, + 3.709562321609952, + 3.709440756300269, + 3.709319305708804, + 3.709197967778965, + 3.709076740411659, + 3.70895562146441, + 3.708834608750444, + 3.7087137000377486, + 3.7085928930481367, + 3.7084721854562694, + 3.7083515748886775, + 3.708231058922741, + 3.70811063695263, + 3.707990313644518, + 3.70787007856343, + 3.707749929126021, + 3.707629862694459 + ] + } + ], + "layout": { + "autosize": false, + "height": 576, + "legend": { + "font": { + "size": 12 + }, + "x": 1, + "xanchor": "right", + "y": 1, + "yanchor": "top" + }, + "margin": { + "b": 10, + "l": 10, + "pad": 4, + "r": 10, + "t": 75 + }, + "showlegend": true, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Optimised Comparison", + "x": 0.5 + }, + "width": 1024, + "xaxis": { + "tickfont": { + "size": 12 + }, + "title": { + "font": { + "size": 12 + }, + "text": "Time [s]" + } + }, + "yaxis": { + "tickfont": { + "size": 12 + }, + "title": { + "font": { + "size": 12 + }, + "text": "Voltage [V]" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pybop.quick_plot(x, cost, title=\"Optimised Comparison\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Convergence and Parameter Trajectories\n", + "\n", + "To assess the optimisation process, we can plot the convergence of the cost function and the trajectories of the parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "N5XYkevi04qD" + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "line": { + "width": 4 + }, + "mode": "lines", + "name": "Covariance Matrix Adaptation Evolution
Strategy (CMA-ES)", + "type": "scatter", + "x": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ], + "y": [ + 0.0009615508132859744, + 0.0015723852982953749, + 0.0005471630682708762, + 0.0006715769325804201, + 0.0005561162425120631, + 0.0005637506160818752, + 0.0005503919431883333, + 0.000506900950094497, + 0.0005120294176036823, + 0.0004964095581093746, + 0.0005120090124317643, + 0.000503783723798041, + 0.0005210989314312901, + 0.0004969927788251594, + 0.00048626305570563446, + 0.0004607665307926028, + 0.0004499459550267827, + 0.0004759745468898432, + 0.0004503888034855672, + 0.000456350718989926, + 0.00044636847331087394, + 0.00045018250920695273, + 0.0004455407828316443, + 0.0004459631882223933, + 0.0004451103038167852, + 0.000445131572642388, + 0.00044499744694760526, + 0.0004451087876115578, + 0.0004450277253513619, + 0.0004450247972121914 + ] + } + ], + "layout": { + "autosize": false, + "height": 576, + "legend": { + "font": { + "size": 12 + }, + "x": 1, + "xanchor": "right", + "y": 1, + "yanchor": "top" + }, + "margin": { + "b": 10, + "l": 10, + "pad": 4, + "r": 10, + "t": 75 + }, + "showlegend": true, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Convergence", + "x": 0.5 + }, + "width": 1024, + "xaxis": { + "tickfont": { + "size": 12 + }, + "title": { + "font": { + "size": 12 + }, + "text": "Iteration" + } + }, + "yaxis": { + "tickfont": { + "size": 12 + }, + "title": { + "font": { + "size": 12 + }, + "text": "Cost" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "name": "Negative electrode active material volume fraction", + "type": "scatter", + "x": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179 + ], + "xaxis": "x", + "y": [ + 0.6902766303732811, + 0.6837223360152214, + 0.7209158996517214, + 0.7946265560567509, + 0.7133016589003354, + 0.6865590316988087, + 0.7129826981384983, + 0.7150903439964802, + 0.7675706744067792, + 0.7209923384115915, + 0.7421211190287808, + 0.7326088307425704, + 0.6924557775110093, + 0.7491532988549072, + 0.7582453135551237, + 0.7223428772699656, + 0.6843123147148159, + 0.7535507412134932, + 0.7658910001669058, + 0.7597959926722416, + 0.7715752863595305, + 0.7678858463125848, + 0.7148222287289572, + 0.7373979081336284, + 0.7370036885158603, + 0.7190285439237782, + 0.7409507249528056, + 0.7923809699211477, + 0.7362539387650572, + 0.8328921662768863, + 0.7701284581559648, + 0.7272116461388305, + 0.7477610890077967, + 0.7276425258128625, + 0.7249616632417152, + 0.7578718480313613, + 0.7375142298358964, + 0.7447909313333756, + 0.716195308684423, + 0.7478096231467714, + 0.7403695687168349, + 0.7004723144868634, + 0.7604927132272885, + 0.6977031921624629, + 0.7106060969234703, + 0.6684143927350901, + 0.6746568668383477, + 0.6912413339348147, + 0.6925568954503704, + 0.7428606395972843, + 0.6369919902409236, + 0.6809797723635713, + 0.6986129422506805, + 0.6397604549980783, + 0.7274453620527205, + 0.7057557918553489, + 0.6923305183101992, + 0.735292595229998, + 0.7383630521509149, + 0.6582635062453439, + 0.6103927896915677, + 0.7117049986805006, + 0.7164127071962608, + 0.6955280845754389, + 0.6314431825720496, + 0.70334806076912, + 0.6834844779944443, + 0.7130580146538251, + 0.701018394793316, + 0.8012231280471576, + 0.6834072829848803, + 0.6766395405703918, + 0.6695492882203142, + 0.6852616315608138, + 0.6822291966853495, + 0.696886827769854, + 0.6456124675929328, + 0.6764109059754393, + 0.705979946727988, + 0.6624499685201576, + 0.6884692384324372, + 0.6610171105487663, + 0.6662089216739889, + 0.6820717350395511, + 0.6591928604485974, + 0.6350827008163039, + 0.6549341537680038, + 0.6402320275923087, + 0.6776133646758087, + 0.6625383911290141, + 0.6318921498153618, + 0.6108338833105418, + 0.5691975132410496, + 0.6170896577222232, + 0.6325064548933875, + 0.6319668181923814, + 0.6476118390020807, + 0.5237057161649432, + 0.5366059524694143, + 0.5542920877770234, + 0.5948920253649208, + 0.5467108510726004, + 0.4801988755861099, + 0.6018256173120544, + 0.5599275474805228, + 0.6581436276007904, + 0.5393456597923282, + 0.5918043474620778, + 0.6032467166000338, + 0.5113997966836226, + 0.5662937304226787, + 0.5411449876989373, + 0.7522623543937985, + 0.47300261061494786, + 0.45173918120372614, + 0.4976722673854519, + 0.4689907301754455, + 0.5541377906315773, + 0.4504546793071138, + 0.6022479482477466, + 0.6156885450117099, + 0.45436602493242023, + 0.4500175485628539, + 0.4855240245833936, + 0.5445051208208629, + 0.5250409399751258, + 0.4621614206017263, + 0.46546829216026814, + 0.5949385857621495, + 0.5005384614970788, + 0.6154160330627595, + 0.521081729005421, + 0.451936512401699, + 0.49668507444031024, + 0.4863293435184069, + 0.4586400472810632, + 0.488730002626555, + 0.5106188186124558, + 0.46692091173084943, + 0.5425970307687905, + 0.5186579654548735, + 0.481693978563431, + 0.4790198658684338, + 0.5356194413697889, + 0.506304300084812, + 0.4843029457267676, + 0.4672084494022005, + 0.4928318477941483, + 0.4593650196315271, + 0.47375490876461296, + 0.5061031801859008, + 0.484692181266044, + 0.5294833304110232, + 0.4914890471570528, + 0.5178294908920423, + 0.4743467688320612, + 0.4917381710327104, + 0.5141890519043512, + 0.4852820322780376, + 0.490489442878623, + 0.497269002193416, + 0.4821418911990455, + 0.5057046700328383, + 0.4950662092354254, + 0.4870440044324078, + 0.5042449635703588, + 0.48769943913510927, + 0.48091299066329, + 0.496164916765345, + 0.4928123517245285, + 0.4892732498887095, + 0.4910414045232242, + 0.4964239894847035, + 0.4910249143640793, + 0.4932404536756434, + 0.49563059987983366, + 0.49210442386341224, + 0.49800518576208314, + 0.4924001104566205, + 0.49211348729586846 + ], + "yaxis": "y" + }, + { + "name": "Positive electrode active material volume fraction", + "type": "scatter", + "x": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179 + ], + "xaxis": "x2", + "y": [ + 0.553658592769684, + 0.5291664563172557, + 0.5418690511200387, + 0.5860520282559276, + 0.6039766944496866, + 0.5021148610043364, + 0.6188246238506271, + 0.5580820996994289, + 0.6174766011235178, + 0.5851734438904747, + 0.6320112310999677, + 0.6541908852987183, + 0.5889916664063238, + 0.6124624465981827, + 0.5937705743090749, + 0.6089595104062573, + 0.652921450278538, + 0.5915880765037422, + 0.5453365369791535, + 0.5444319032769357, + 0.5994940480326273, + 0.5979179838343834, + 0.5803826965514426, + 0.6084695492637174, + 0.5839839739800865, + 0.6304010806135251, + 0.5789270812244718, + 0.5964619636998483, + 0.5938001583813863, + 0.5960359136526083, + 0.5852278993297413, + 0.5980429026801456, + 0.5979321079573758, + 0.5788797742984202, + 0.5895037351207152, + 0.5976448214149047, + 0.5892442402338158, + 0.6090745236798364, + 0.5811665589799486, + 0.6008936367948814, + 0.6069347099181053, + 0.5951812303976365, + 0.5943555151978129, + 0.5985386164723707, + 0.6106828629430981, + 0.597974821738626, + 0.6034310183973846, + 0.5929162578994348, + 0.5966156367313359, + 0.6036665525964039, + 0.5943268374486825, + 0.5993025846002807, + 0.5962020189229235, + 0.6070690890649185, + 0.5969252121260817, + 0.5902648401082122, + 0.5966709604544903, + 0.5966023686142383, + 0.5958823001643863, + 0.6002255687809663, + 0.5976056489404203, + 0.5985956707767083, + 0.5976752921444639, + 0.5978518110265753, + 0.6058882579986162, + 0.593200026390547, + 0.5989972441885394, + 0.5973001542896139, + 0.5946485830107348, + 0.5932368392910224, + 0.6019474315910912, + 0.5990294881204316, + 0.597297706223024, + 0.6006764307252052, + 0.6005445194705809, + 0.5993441673442158, + 0.5958975483108374, + 0.6005334385612898, + 0.5985982160171898, + 0.5985518179846437, + 0.5982762571434445, + 0.600451874972249, + 0.5992302807160195, + 0.5997679451111007, + 0.6005228496041005, + 0.6003165551452361, + 0.5989482941908217, + 0.6020444509440077, + 0.6004345518626775, + 0.5984825994851658, + 0.6009965167233451, + 0.6032959929553446, + 0.6048781012702418, + 0.6034304429093383, + 0.6019414162300202, + 0.6001611054221517, + 0.6013179609009099, + 0.608429273080786, + 0.6078712193882138, + 0.6044533842659701, + 0.6025230210326784, + 0.6035675122622304, + 0.6107375500414033, + 0.6050307745932996, + 0.6106275959941742, + 0.6016122434558566, + 0.6114899239008053, + 0.6050311334718923, + 0.6014981809819214, + 0.6080575715144376, + 0.607845690300184, + 0.6076013773917742, + 0.5903909082924454, + 0.61224203261209, + 0.6190662186342195, + 0.6086595445022761, + 0.6139812256851659, + 0.6076153224776284, + 0.6132175800403299, + 0.6063485887296345, + 0.6035001796676076, + 0.615823227552071, + 0.61830560564294, + 0.612782020473002, + 0.6082177078613348, + 0.6082403475703779, + 0.6155777949507325, + 0.6148273397699636, + 0.6055420935919663, + 0.606780266498375, + 0.6038592530591839, + 0.6102488024599763, + 0.6194353534444352, + 0.6112560932027926, + 0.6126232039405176, + 0.620029675318578, + 0.6125758472932906, + 0.609945153577358, + 0.6162337666231698, + 0.6075900952361227, + 0.6099972639092032, + 0.6126044058279139, + 0.6138504731948401, + 0.6077264543421858, + 0.6104370263507916, + 0.6136292202348169, + 0.6154412432862323, + 0.6124632214224123, + 0.6171390364374959, + 0.613953767810735, + 0.6120349651962869, + 0.612920152156003, + 0.6091711894203783, + 0.6125980121137751, + 0.6097991462801648, + 0.6135378585531511, + 0.6124437628675353, + 0.6102034527530064, + 0.6132349787883588, + 0.6126477085558841, + 0.6118968081698247, + 0.6138846320334953, + 0.6113144216959934, + 0.6122449289399643, + 0.6128173981806031, + 0.6115704456377821, + 0.6127776478127419, + 0.6133110346072097, + 0.6119269612238567, + 0.612369323580598, + 0.6128762337540471, + 0.6125370178078247, + 0.6120660337227175, + 0.6123914179742178, + 0.612498898860597, + 0.6121285702776945, + 0.6123350913973512, + 0.6118724445958914, + 0.6125337841159786, + 0.6123821293449487 + ], + "yaxis": "y2" + } + ], + "layout": { + "height": 576, + "legend": { + "orientation": "h", + "x": 1, + "xanchor": "right", + "y": 1.02, + "yanchor": "bottom" + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Parameter Convergence" + }, + "width": 1024, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 0.45 + ], + "title": { + "text": "Function Call" + } + }, + "xaxis2": { + "anchor": "y2", + "domain": [ + 0.55, + 1 + ], + "title": { + "text": "Function Call" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Negative electrode active material volume fraction" + } + }, + "yaxis2": { + "anchor": "x2", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Positive electrode active material volume fraction" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pybop.plot_convergence(optim)\n", + "pybop.plot_parameters(optim);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cost Landscape\n", + "\n", + "Finally, we can visualise the cost landscape and the path taken by the optimiser:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "type": "contour", + "x": [ + 0.45, + 0.4821428571428571, + 0.5142857142857143, + 0.5464285714285715, + 0.5785714285714286, + 0.6107142857142858, + 0.6428571428571429, + 0.675, + 0.7071428571428572, + 0.7392857142857143, + 0.7714285714285715, + 0.8035714285714286, + 0.8357142857142859, + 0.8678571428571429, + 0.9 + ], + "y": [ + 0.5, + 0.5214285714285715, + 0.5428571428571428, + 0.5642857142857143, + 0.5857142857142857, + 0.6071428571428572, + 0.6285714285714286, + 0.65, + 0.6714285714285715, + 0.6928571428571428, + 0.7142857142857143, + 0.7357142857142858, + 0.7571428571428571, + 0.7785714285714287, + 0.8 + ], + "z": [ + [ + 0.13978694745045778, + 0.1316944365096389, + 0.12510284778858377, + 0.11950483272399456, + 0.1146400559137536, + 0.110349718945173, + 0.10652508509743448, + 0.10308705619787746, + 0.0999753897436059, + 0.09714246489095854, + 0.09455025536748628, + 0.09216776103818122, + 0.08996936456565387, + 0.08793365375933777, + 0.0860425565990292 + ], + [ + 0.08852523752484394, + 0.0821135241601885, + 0.07693259322919402, + 0.07256347913996253, + 0.06879167504268976, + 0.06548559715729094, + 0.06255566513606253, + 0.05993659953017005, + 0.0575785011239202, + 0.055442310459461346, + 0.05349713893430299, + 0.05171767958610572, + 0.05008287370698259, + 0.04857547555651788, + 0.04718088212784152 + ], + [ + 0.05079203580116165, + 0.045971446912746024, + 0.0421251222165762, + 0.038918639849196315, + 0.036180690667904886, + 0.03380583065565003, + 0.03172220105133776, + 0.02987745010753513, + 0.028232032125482594, + 0.026755011266559724, + 0.025421773785943052, + 0.024212421085075552, + 0.023110640558899317, + 0.022102908741071917, + 0.02117790052575984 + ], + [ + 0.0247109898086982, + 0.021398538445601543, + 0.01881672545430401, + 0.016711816538021243, + 0.01495308456971972, + 0.013459932735958694, + 0.01217767653472818, + 0.011066347980811676, + 0.01009588867482554, + 0.009243005785507736, + 0.008489287202794113, + 0.007819947641995503, + 0.007222959315041251, + 0.006688429916897677, + 0.006208143264422528 + ], + [ + 0.008670760154565454, + 0.006789509888060595, + 0.005407300703079819, + 0.004347035077125513, + 0.0035169614400567557, + 0.0028601192020667487, + 0.0023377769599036173, + 0.0019218604679443784, + 0.0015914086374210767, + 0.0013303542772597488, + 0.0011261544813756593, + 0.0009688743819370084, + 0.0008505502042737552, + 0.00076473335537691, + 0.000706163282316692 + ], + [ + 0.0012842487889950709, + 0.0007627505309217633, + 0.0005198154701005001, + 0.00045159969971133706, + 0.000503292378544598, + 0.0006404820351900392, + 0.0008396181376399506, + 0.001083927205983922, + 0.0013610927735407449, + 0.001661912118827988, + 0.001979417174986843, + 0.0023082578777456715, + 0.0026443711632016913, + 0.002984559404748057, + 0.003326352268489602 + ], + [ + 0.001354749564110868, + 0.0021264576815619675, + 0.002966845773125451, + 0.003841741211510412, + 0.004731669275233259, + 0.005623621274478844, + 0.006508536839764041, + 0.007380391594495515, + 0.00823509246108389, + 0.009069771056936252, + 0.00988313853426349, + 0.010674225839891804, + 0.011442278654321052, + 0.012187383575130576, + 0.012909730464191698 + ], + [ + 0.007847719718560629, + 0.009850691282138785, + 0.011722279102829926, + 0.013494752203558004, + 0.01518237994090198, + 0.016792558652489343, + 0.018330041845671816, + 0.01979904022130425, + 0.0212030163950541, + 0.022546051264677153, + 0.02383147992373779, + 0.02506209021550184, + 0.026241152842817153, + 0.02737155505729377, + 0.028456018593884982 + ], + [ + 0.019867144300190393, + 0.023043698688683972, + 0.02589777526182538, + 0.02852531573883176, + 0.03097284427281554, + 0.03326729118857365, + 0.035426395336499994, + 0.0374638068374847, + 0.03939157922505033, + 0.04121867344451148, + 0.042953607485001155, + 0.04460303484598697, + 0.04617360388450446, + 0.04767102208064301, + 0.04910052530919271 + ], + [ + 0.03663565882450597, + 0.040931834220360994, + 0.04472298950226511, + 0.04816602457816835, + 0.05133852441736211, + 0.0542850891368787, + 0.05703640981662537, + 0.059616641550997475, + 0.06204357093589624, + 0.06433222267021547, + 0.06649576354592646, + 0.06854453681263714, + 0.07048841307362162, + 0.07233591435571037, + 0.07409421900309038 + ], + [ + 0.05747780243432963, + 0.06284302831267616, + 0.06752888620629718, + 0.07175037989168795, + 0.07561437387648018, + 0.07918328710748379, + 0.08250086972707507, + 0.08559878985076375, + 0.08850213704434964, + 0.0912316773737072, + 0.09380393587099264, + 0.09623386105095684, + 0.0985341841658734, + 0.100715574394073, + 0.10278780136160584 + ], + [ + 0.0818058307509146, + 0.08819285557261257, + 0.09373361826006528, + 0.09869890258263096, + 0.10322376869274524, + 0.10738753583362667, + 0.11124561566195926, + 0.11483819778400818, + 0.11819659305937764, + 0.12134702534061911, + 0.124310045500102, + 0.1271042619466134, + 0.12974482537484677, + 0.13224531100334308, + 0.1346174400161844 + ], + [ + 0.10910766014116452, + 0.11647215049625416, + 0.12283054395397716, + 0.12850712557391802, + 0.13366338592815358, + 0.1383965461147322, + 0.1427715316843806, + 0.14683695743170633, + 0.15063054493043268, + 0.1541834276179364, + 0.15752008981540158, + 0.16066249805446742, + 0.16362853447691966, + 0.16643413351957564, + 0.16909303021128316 + ], + [ + 0.13893670463395016, + 0.14723698505460453, + 0.15437802885447577, + 0.16073541487394324, + 0.1664966641771162, + 0.1717740739594178, + 0.1766436934589138, + 0.1811617068617278, + 0.18537178207063465, + 0.18930981396484808, + 0.19300425434999757, + 0.1964796888183473, + 0.1997572077198358, + 0.20285480794891703, + 0.20578814406934 + ], + [ + 0.17090301393107454, + 0.1800999831591162, + 0.18799074332700105, + 0.19499991941839684, + 0.2013408653030025, + 0.20713975558471584, + 0.21248315090297443, + 0.2174346619472587, + 0.22204365536479517, + 0.2263505853972685, + 0.2303875350819614, + 0.23418211838081, + 0.23775797819604405, + 0.2411352603632087, + 0.24433145813402135 + ] + ] + } + ], + "layout": { + "height": 600, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Cost Landscape", + "x": 0.5, + "y": 0.9 + }, + "width": 600, + "xaxis": { + "range": [ + 0.45, + 0.9 + ], + "title": { + "text": "Negative electrode active material volume fraction" + } + }, + "yaxis": { + "range": [ + 0.5, + 0.8 + ], + "title": { + "text": "Positive electrode active material volume fraction" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "type": "contour", + "x": [ + 0.6, + 0.6214285714285714, + 0.6428571428571428, + 0.6642857142857143, + 0.6857142857142857, + 0.7071428571428572, + 0.7285714285714285, + 0.75, + 0.7714285714285715, + 0.7928571428571429, + 0.8142857142857143, + 0.8357142857142857, + 0.8571428571428572, + 0.8785714285714286, + 0.9 + ], + "y": [ + 0.5, + 0.5214285714285715, + 0.5428571428571428, + 0.5642857142857143, + 0.5857142857142857, + 0.6071428571428572, + 0.6285714285714286, + 0.65, + 0.6714285714285715, + 0.6928571428571428, + 0.7142857142857143, + 0.7357142857142858, + 0.7571428571428571, + 0.7785714285714287, + 0.8 + ], + "z": [ + [ + 0.11172344527162112, + 0.1090273376321791, + 0.10652508509589624, + 0.10419408874014388, + 0.10201616129270458, + 0.09997538974345874, + 0.0980583127237808, + 0.09625330611761596, + 0.09455025536736772, + 0.09294030170893476, + 0.0914156414007645, + 0.08996936456946641, + 0.08859532429916595, + 0.08728803133426434, + 0.08604255660723086 + ], + [ + 0.06654210214060881, + 0.06447083215873647, + 0.06255566513415398, + 0.060778427632699854, + 0.05912368155784033, + 0.05757850112360508, + 0.05613172143355099, + 0.05477406300669922, + 0.05349713893187891, + 0.052293835942669634, + 0.05115758004476429, + 0.05008287370622761, + 0.04906473678169218, + 0.048098731515296554, + 0.047180882133797085 + ], + [ + 0.034562036437443815, + 0.033081829184074096, + 0.03172220104974913, + 0.030468519542490385, + 0.029308517261376538, + 0.028232032124615388, + 0.02723027044411582, + 0.026295689844752765, + 0.025421773785827672, + 0.02460284458884867, + 0.023833927318642423, + 0.023110640558171455, + 0.022429107800207293, + 0.021785885858347852, + 0.021177900525459967 + ], + [ + 0.013931971353598058, + 0.0130113081098536, + 0.01217767653507118, + 0.01141981660998185, + 0.01072847734129951, + 0.010095888674091053, + 0.009515457243052318, + 0.008981543128281796, + 0.008489287200936523, + 0.008034476908847194, + 0.007613440001312406, + 0.00722295931504198, + 0.006860203641895759, + 0.006522671728328986, + 0.0062081432643535835 + ], + [ + 0.003062464721841924, + 0.002672627070453528, + 0.002337776959250979, + 0.0020500853785391845, + 0.0018030923082034585, + 0.0015914086375853535, + 0.0014104968286338445, + 0.001256507719799913, + 0.001126154481535708, + 0.001016614311215113, + 0.0009254505448591252, + 0.0008505502046392619, + 0.0007900734113460122, + 0.000742412171475067, + 0.000706163282195796 + ], + [ + 0.0005868783064975249, + 0.0007009167416830995, + 0.0008396181375832465, + 0.0009983063554026127, + 0.0011731735541251245, + 0.001361092773159901, + 0.0015594794623233195, + 0.001766185432212131, + 0.0019794171750563555, + 0.002197650691010229, + 0.0024196634051718126, + 0.0026443711632218466, + 0.0028708758090159564, + 0.0030984168724645764, + 0.0033263522689697443 + ], + [ + 0.005326728305971229, + 0.005919717237150784, + 0.006508536840116659, + 0.007091510877100457, + 0.007667354522679684, + 0.008235092461164488, + 0.00879399749613659, + 0.009343341132720846, + 0.00988313853370086, + 0.010413111030962392, + 0.010932794919182596, + 0.011442278653698644, + 0.01194155775214984, + 0.012430679243651767, + 0.012909730464248629 + ], + [ + 0.0162641548944936, + 0.017312904618881787, + 0.018330041847363483, + 0.01931674760923014, + 0.020274139710780983, + 0.02120301639698203, + 0.022104961635759316, + 0.022980717179162433, + 0.023831479924956697, + 0.024657761425969732, + 0.02546069267981209, + 0.02624115284253891, + 0.026999989605642268, + 0.027738017566496104, + 0.028456018591439737 + ], + [ + 0.0325183521357601, + 0.034001254033748526, + 0.035426395338798114, + 0.036797242590316304, + 0.0381181121122906, + 0.03939157922639274, + 0.04062029406308083, + 0.04180679059024775, + 0.04295360748153243, + 0.04406228795767749, + 0.04513502522510276, + 0.04617360388483047, + 0.047179682826295366, + 0.04815480785808946, + 0.049100525310125445 + ], + [ + 0.05332585738515393, + 0.05522274594621168, + 0.057036409816240016, + 0.0587744452120502, + 0.06044189815670986, + 0.06204357093579059, + 0.06358386540448488, + 0.06506697481981115, + 0.06649576354485234, + 0.06787371342757666, + 0.06920371445240892, + 0.07048841306999326, + 0.07173036794497871, + 0.07293157080434036, + 0.07409421901214051 + ], + [ + 0.07802393087531045, + 0.08031535886993346, + 0.0825008697269698, + 0.08458892190572512, + 0.08658715486638616, + 0.08850213704415429, + 0.09033981638823338, + 0.09210576620500675, + 0.09380393587097072, + 0.0954388873469018, + 0.09701443149132014, + 0.09853418416161744, + 0.10000102393944713, + 0.10141800254548948, + 0.10278780136602608 + ], + [ + 0.10603582714691216, + 0.10870535002702122, + 0.11124561565888975, + 0.1136680549575206, + 0.11598229486752724, + 0.1181965930609502, + 0.1203183742895102, + 0.12235452770179513, + 0.12431004550134014, + 0.12619051872166157, + 0.12800080344948306, + 0.12974482537753823, + 0.13142662504173186, + 0.1330497441538223, + 0.13461744001513187 + ], + [ + 0.13686146944011654, + 0.13989197073764142, + 0.14277153168283058, + 0.1455137358914841, + 0.14813004254956766, + 0.1506305449269113, + 0.15302441175503717, + 0.15531849858550367, + 0.15752008981485213, + 0.15963551035226198, + 0.161669929294005, + 0.1636285344744089, + 0.16551587694699527, + 0.16733610621302425, + 0.16909303021385497 + ], + [ + 0.17006350526287245, + 0.17343947933584877, + 0.17664369345959413, + 0.17969190007899954, + 0.18259737678668775, + 0.1853717820711694, + 0.18802565877522293, + 0.19056696995693356, + 0.1930042543432875, + 0.1953441674911539, + 0.19759324315599197, + 0.19975720772944192, + 0.20184125796750313, + 0.2038501251099998, + 0.2057881440676056 + ], + [ + 0.20526109334644896, + 0.20896797466779776, + 0.2124831509042228, + 0.21582445306246012, + 0.2190069019841817, + 0.2220436553634029, + 0.2249465704711051, + 0.22772488675380947, + 0.2303875350857134, + 0.2329426425574851, + 0.2353973183917888, + 0.23775797819417305, + 0.24003043378168343, + 0.24221998401306552, + 0.24433145814595972 + ] + ] + }, + { + "marker": { + "color": "red", + "line": { + "color": "midnightblue", + "width": 1 + }, + "showscale": false, + "size": 12, + "symbol": "x" + }, + "mode": "markers", + "showlegend": false, + "type": "scatter", + "x": [ + 0.7077093219314815 + ], + "y": [ + 0.5644261837128138 + ] + }, + { + "marker": { + "color": [ + 0, + 0.005555555555555556, + 0.011111111111111112, + 0.016666666666666666, + 0.022222222222222223, + 0.027777777777777776, + 0.03333333333333333, + 0.03888888888888889, + 0.044444444444444446, + 0.05, + 0.05555555555555555, + 0.06111111111111111, + 0.06666666666666667, + 0.07222222222222222, + 0.07777777777777778, + 0.08333333333333333, + 0.08888888888888889, + 0.09444444444444444, + 0.1, + 0.10555555555555556, + 0.1111111111111111, + 0.11666666666666668, + 0.12222222222222222, + 0.12777777777777777, + 0.13333333333333333, + 0.1388888888888889, + 0.14444444444444443, + 0.15, + 0.15555555555555556, + 0.16111111111111112, + 0.16666666666666666, + 0.17222222222222222, + 0.17777777777777778, + 0.18333333333333332, + 0.18888888888888888, + 0.19444444444444445, + 0.2, + 0.20555555555555555, + 0.2111111111111111, + 0.21666666666666667, + 0.2222222222222222, + 0.22777777777777777, + 0.23333333333333336, + 0.2388888888888889, + 0.24444444444444444, + 0.25, + 0.25555555555555554, + 0.2611111111111111, + 0.26666666666666666, + 0.2722222222222222, + 0.2777777777777778, + 0.2833333333333333, + 0.28888888888888886, + 0.29444444444444445, + 0.3, + 0.3055555555555556, + 0.3111111111111111, + 0.31666666666666665, + 0.32222222222222224, + 0.3277777777777778, + 0.3333333333333333, + 0.3388888888888889, + 0.34444444444444444, + 0.35, + 0.35555555555555557, + 0.3611111111111111, + 0.36666666666666664, + 0.37222222222222223, + 0.37777777777777777, + 0.38333333333333336, + 0.3888888888888889, + 0.3944444444444444, + 0.4, + 0.4055555555555555, + 0.4111111111111111, + 0.4166666666666667, + 0.4222222222222222, + 0.42777777777777776, + 0.43333333333333335, + 0.4388888888888889, + 0.4444444444444444, + 0.45, + 0.45555555555555555, + 0.46111111111111114, + 0.4666666666666667, + 0.4722222222222222, + 0.4777777777777778, + 0.48333333333333334, + 0.4888888888888889, + 0.49444444444444446, + 0.5, + 0.5055555555555555, + 0.5111111111111111, + 0.5166666666666667, + 0.5222222222222223, + 0.5277777777777778, + 0.5333333333333333, + 0.5388888888888889, + 0.5444444444444444, + 0.55, + 0.5555555555555556, + 0.5611111111111111, + 0.5666666666666667, + 0.5722222222222222, + 0.5777777777777777, + 0.5833333333333334, + 0.5888888888888889, + 0.5944444444444444, + 0.6, + 0.6055555555555555, + 0.6111111111111112, + 0.6166666666666667, + 0.6222222222222222, + 0.6277777777777778, + 0.6333333333333333, + 0.6388888888888888, + 0.6444444444444445, + 0.65, + 0.6555555555555556, + 0.6611111111111111, + 0.6666666666666666, + 0.6722222222222223, + 0.6777777777777778, + 0.6833333333333333, + 0.6888888888888889, + 0.6944444444444444, + 0.7, + 0.7055555555555556, + 0.7111111111111111, + 0.7166666666666667, + 0.7222222222222222, + 0.7277777777777777, + 0.7333333333333333, + 0.7388888888888889, + 0.7444444444444445, + 0.75, + 0.7555555555555555, + 0.7611111111111111, + 0.7666666666666667, + 0.7722222222222223, + 0.7777777777777778, + 0.7833333333333333, + 0.7888888888888889, + 0.7944444444444444, + 0.8, + 0.8055555555555556, + 0.8111111111111111, + 0.8166666666666667, + 0.8222222222222222, + 0.8277777777777777, + 0.8333333333333334, + 0.8388888888888889, + 0.8444444444444444, + 0.85, + 0.8555555555555555, + 0.8611111111111112, + 0.8666666666666667, + 0.8722222222222222, + 0.8777777777777778, + 0.8833333333333333, + 0.8888888888888888, + 0.8944444444444445, + 0.9, + 0.9055555555555556, + 0.9111111111111112, + 0.9166666666666666, + 0.9222222222222224, + 0.9277777777777778, + 0.9333333333333332, + 0.9388888888888888, + 0.9444444444444444, + 0.95, + 0.9555555555555556, + 0.9611111111111112, + 0.9666666666666668, + 0.9722222222222222, + 0.9777777777777776, + 0.9833333333333332, + 0.9888888888888888, + 0.9944444444444444 + ], + "colorscale": [ + [ + 0, + "rgb(255,255,229)" + ], + [ + 0.125, + "rgb(255,247,188)" + ], + [ + 0.25, + "rgb(254,227,145)" + ], + [ + 0.375, + "rgb(254,196,79)" + ], + [ + 0.5, + "rgb(254,153,41)" + ], + [ + 0.625, + "rgb(236,112,20)" + ], + [ + 0.75, + "rgb(204,76,2)" + ], + [ + 0.875, + "rgb(153,52,4)" + ], + [ + 1, + "rgb(102,37,6)" + ] + ], + "showscale": false + }, + "mode": "markers", + "showlegend": false, + "type": "scatter", + "x": [ + 0.6902766303732811, + 0.6837223360152214, + 0.7209158996517214, + 0.7946265560567509, + 0.7133016589003354, + 0.6865590316988087, + 0.7129826981384983, + 0.7150903439964802, + 0.7675706744067792, + 0.7209923384115915, + 0.7421211190287808, + 0.7326088307425704, + 0.6924557775110093, + 0.7491532988549072, + 0.7582453135551237, + 0.7223428772699656, + 0.6843123147148159, + 0.7535507412134932, + 0.7658910001669058, + 0.7597959926722416, + 0.7715752863595305, + 0.7678858463125848, + 0.7148222287289572, + 0.7373979081336284, + 0.7370036885158603, + 0.7190285439237782, + 0.7409507249528056, + 0.7923809699211477, + 0.7362539387650572, + 0.8328921662768863, + 0.7701284581559648, + 0.7272116461388305, + 0.7477610890077967, + 0.7276425258128625, + 0.7249616632417152, + 0.7578718480313613, + 0.7375142298358964, + 0.7447909313333756, + 0.716195308684423, + 0.7478096231467714, + 0.7403695687168349, + 0.7004723144868634, + 0.7604927132272885, + 0.6977031921624629, + 0.7106060969234703, + 0.6684143927350901, + 0.6746568668383477, + 0.6912413339348147, + 0.6925568954503704, + 0.7428606395972843, + 0.6369919902409236, + 0.6809797723635713, + 0.6986129422506805, + 0.6397604549980783, + 0.7274453620527205, + 0.7057557918553489, + 0.6923305183101992, + 0.735292595229998, + 0.7383630521509149, + 0.6582635062453439, + 0.6103927896915677, + 0.7117049986805006, + 0.7164127071962608, + 0.6955280845754389, + 0.6314431825720496, + 0.70334806076912, + 0.6834844779944443, + 0.7130580146538251, + 0.701018394793316, + 0.8012231280471576, + 0.6834072829848803, + 0.6766395405703918, + 0.6695492882203142, + 0.6852616315608138, + 0.6822291966853495, + 0.696886827769854, + 0.6456124675929328, + 0.6764109059754393, + 0.705979946727988, + 0.6624499685201576, + 0.6884692384324372, + 0.6610171105487663, + 0.6662089216739889, + 0.6820717350395511, + 0.6591928604485974, + 0.6350827008163039, + 0.6549341537680038, + 0.6402320275923087, + 0.6776133646758087, + 0.6625383911290141, + 0.6318921498153618, + 0.6108338833105418, + 0.5691975132410496, + 0.6170896577222232, + 0.6325064548933875, + 0.6319668181923814, + 0.6476118390020807, + 0.5237057161649432, + 0.5366059524694143, + 0.5542920877770234, + 0.5948920253649208, + 0.5467108510726004, + 0.4801988755861099, + 0.6018256173120544, + 0.5599275474805228, + 0.6581436276007904, + 0.5393456597923282, + 0.5918043474620778, + 0.6032467166000338, + 0.5113997966836226, + 0.5662937304226787, + 0.5411449876989373, + 0.7522623543937985, + 0.47300261061494786, + 0.45173918120372614, + 0.4976722673854519, + 0.4689907301754455, + 0.5541377906315773, + 0.4504546793071138, + 0.6022479482477466, + 0.6156885450117099, + 0.45436602493242023, + 0.4500175485628539, + 0.4855240245833936, + 0.5445051208208629, + 0.5250409399751258, + 0.4621614206017263, + 0.46546829216026814, + 0.5949385857621495, + 0.5005384614970788, + 0.6154160330627595, + 0.521081729005421, + 0.451936512401699, + 0.49668507444031024, + 0.4863293435184069, + 0.4586400472810632, + 0.488730002626555, + 0.5106188186124558, + 0.46692091173084943, + 0.5425970307687905, + 0.5186579654548735, + 0.481693978563431, + 0.4790198658684338, + 0.5356194413697889, + 0.506304300084812, + 0.4843029457267676, + 0.4672084494022005, + 0.4928318477941483, + 0.4593650196315271, + 0.47375490876461296, + 0.5061031801859008, + 0.484692181266044, + 0.5294833304110232, + 0.4914890471570528, + 0.5178294908920423, + 0.4743467688320612, + 0.4917381710327104, + 0.5141890519043512, + 0.4852820322780376, + 0.490489442878623, + 0.497269002193416, + 0.4821418911990455, + 0.5057046700328383, + 0.4950662092354254, + 0.4870440044324078, + 0.5042449635703588, + 0.48769943913510927, + 0.48091299066329, + 0.496164916765345, + 0.4928123517245285, + 0.4892732498887095, + 0.4910414045232242, + 0.4964239894847035, + 0.4910249143640793, + 0.4932404536756434, + 0.49563059987983366, + 0.49210442386341224, + 0.49800518576208314, + 0.4924001104566205, + 0.49211348729586846 + ], + "y": [ + 0.553658592769684, + 0.5291664563172557, + 0.5418690511200387, + 0.5860520282559276, + 0.6039766944496866, + 0.5021148610043364, + 0.6188246238506271, + 0.5580820996994289, + 0.6174766011235178, + 0.5851734438904747, + 0.6320112310999677, + 0.6541908852987183, + 0.5889916664063238, + 0.6124624465981827, + 0.5937705743090749, + 0.6089595104062573, + 0.652921450278538, + 0.5915880765037422, + 0.5453365369791535, + 0.5444319032769357, + 0.5994940480326273, + 0.5979179838343834, + 0.5803826965514426, + 0.6084695492637174, + 0.5839839739800865, + 0.6304010806135251, + 0.5789270812244718, + 0.5964619636998483, + 0.5938001583813863, + 0.5960359136526083, + 0.5852278993297413, + 0.5980429026801456, + 0.5979321079573758, + 0.5788797742984202, + 0.5895037351207152, + 0.5976448214149047, + 0.5892442402338158, + 0.6090745236798364, + 0.5811665589799486, + 0.6008936367948814, + 0.6069347099181053, + 0.5951812303976365, + 0.5943555151978129, + 0.5985386164723707, + 0.6106828629430981, + 0.597974821738626, + 0.6034310183973846, + 0.5929162578994348, + 0.5966156367313359, + 0.6036665525964039, + 0.5943268374486825, + 0.5993025846002807, + 0.5962020189229235, + 0.6070690890649185, + 0.5969252121260817, + 0.5902648401082122, + 0.5966709604544903, + 0.5966023686142383, + 0.5958823001643863, + 0.6002255687809663, + 0.5976056489404203, + 0.5985956707767083, + 0.5976752921444639, + 0.5978518110265753, + 0.6058882579986162, + 0.593200026390547, + 0.5989972441885394, + 0.5973001542896139, + 0.5946485830107348, + 0.5932368392910224, + 0.6019474315910912, + 0.5990294881204316, + 0.597297706223024, + 0.6006764307252052, + 0.6005445194705809, + 0.5993441673442158, + 0.5958975483108374, + 0.6005334385612898, + 0.5985982160171898, + 0.5985518179846437, + 0.5982762571434445, + 0.600451874972249, + 0.5992302807160195, + 0.5997679451111007, + 0.6005228496041005, + 0.6003165551452361, + 0.5989482941908217, + 0.6020444509440077, + 0.6004345518626775, + 0.5984825994851658, + 0.6009965167233451, + 0.6032959929553446, + 0.6048781012702418, + 0.6034304429093383, + 0.6019414162300202, + 0.6001611054221517, + 0.6013179609009099, + 0.608429273080786, + 0.6078712193882138, + 0.6044533842659701, + 0.6025230210326784, + 0.6035675122622304, + 0.6107375500414033, + 0.6050307745932996, + 0.6106275959941742, + 0.6016122434558566, + 0.6114899239008053, + 0.6050311334718923, + 0.6014981809819214, + 0.6080575715144376, + 0.607845690300184, + 0.6076013773917742, + 0.5903909082924454, + 0.61224203261209, + 0.6190662186342195, + 0.6086595445022761, + 0.6139812256851659, + 0.6076153224776284, + 0.6132175800403299, + 0.6063485887296345, + 0.6035001796676076, + 0.615823227552071, + 0.61830560564294, + 0.612782020473002, + 0.6082177078613348, + 0.6082403475703779, + 0.6155777949507325, + 0.6148273397699636, + 0.6055420935919663, + 0.606780266498375, + 0.6038592530591839, + 0.6102488024599763, + 0.6194353534444352, + 0.6112560932027926, + 0.6126232039405176, + 0.620029675318578, + 0.6125758472932906, + 0.609945153577358, + 0.6162337666231698, + 0.6075900952361227, + 0.6099972639092032, + 0.6126044058279139, + 0.6138504731948401, + 0.6077264543421858, + 0.6104370263507916, + 0.6136292202348169, + 0.6154412432862323, + 0.6124632214224123, + 0.6171390364374959, + 0.613953767810735, + 0.6120349651962869, + 0.612920152156003, + 0.6091711894203783, + 0.6125980121137751, + 0.6097991462801648, + 0.6135378585531511, + 0.6124437628675353, + 0.6102034527530064, + 0.6132349787883588, + 0.6126477085558841, + 0.6118968081698247, + 0.6138846320334953, + 0.6113144216959934, + 0.6122449289399643, + 0.6128173981806031, + 0.6115704456377821, + 0.6127776478127419, + 0.6133110346072097, + 0.6119269612238567, + 0.612369323580598, + 0.6128762337540471, + 0.6125370178078247, + 0.6120660337227175, + 0.6123914179742178, + 0.612498898860597, + 0.6121285702776945, + 0.6123350913973512, + 0.6118724445958914, + 0.6125337841159786, + 0.6123821293449487 + ] + } + ], + "layout": { + "height": 600, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Cost Landscape", + "x": 0.5, + "y": 0.9 + }, + "width": 600, + "xaxis": { + "range": [ + 0.6, + 0.9 + ], + "title": { + "text": "Negative electrode active material volume fraction" + } + }, + "yaxis": { + "range": [ + 0.5, + 0.8 + ], + "title": { + "text": "Positive electrode active material volume fraction" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot the cost landscape\n", + "pybop.plot_cost2d(cost, steps=15)\n", + "# Plot the cost landscape with optimisation path and updated bounds\n", + "bounds = np.array([[0.6, 0.9], [0.5, 0.8]])\n", + "pybop.plot_cost2d(cost, optim=optim, bounds=bounds, steps=15);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Conclusion\n", + "\n", + "This notebook illustrates how to perform parameter estimation using CMA-ES in PyBOP, providing insights into the optimisation process through various visualisations." + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "06f2374f91c8455bb63252092512f2ed": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "423bffea3a1c42b49a9ad71218e5811b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "56ff19291e464d63b23e63b8e2ac9ea3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "SliderStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "SliderStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "description_width": "", + "handle_color": null + } + }, + "646a8670cb204a31bb56bc2380898093": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7d46516469314b88be3500e2afcafcf6": { + "model_module": "@jupyter-widgets/output", + "model_module_version": "1.0.0", + "model_name": "OutputModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_646a8670cb204a31bb56bc2380898093", + "msg_id": "", + "outputs": [], + "tabbable": null, + "tooltip": null + } + }, + "8d003c14da5f4fa68284b28c15cee6e6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "widget-interact" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_aef2fa7adcc14ad0854b73d5910ae3b4", + "IPY_MODEL_7d46516469314b88be3500e2afcafcf6" + ], + "layout": "IPY_MODEL_423bffea3a1c42b49a9ad71218e5811b", + "tabbable": null, + "tooltip": null + } + }, + "aef2fa7adcc14ad0854b73d5910ae3b4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatSliderModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatSliderModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "FloatSliderView", + "behavior": "drag-tap", + "continuous_update": true, + "description": "t", + "description_allow_html": false, + "disabled": false, + "layout": "IPY_MODEL_06f2374f91c8455bb63252092512f2ed", + "max": 1.1333333333333333, + "min": 0, + "orientation": "horizontal", + "readout": true, + "readout_format": ".2f", + "step": 0.011333333333333332, + "style": "IPY_MODEL_56ff19291e464d63b23e63b8e2ac9ea3", + "tabbable": null, + "tooltip": null, + "value": 0 + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/pybop/models/base_model.py b/pybop/models/base_model.py index 5dde68c4..f3a6d48a 100644 --- a/pybop/models/base_model.py +++ b/pybop/models/base_model.py @@ -343,9 +343,13 @@ def simulate(self, inputs, t_eval) -> np.ndarray[np.float64]: inputs=inputs, allow_infeasible_solutions=self.allow_infeasible_solutions, ): - sol = self.solver.solve( - self.built_model, inputs=inputs, t_eval=t_eval - ) + try: + sol = self.solver.solve( + self.built_model, inputs=inputs, t_eval=t_eval + ) + except Exception as e: + print(f"Error: {e}") + return [np.inf] else: return [np.inf] @@ -392,23 +396,27 @@ def simulateS1(self, inputs, t_eval): inputs=inputs, allow_infeasible_solutions=self.allow_infeasible_solutions, ): - sol = self._solver.solve( - self.built_model, - inputs=inputs, - t_eval=t_eval, - calculate_sensitivities=True, - ) + try: + sol = self._solver.solve( + self.built_model, + inputs=inputs, + t_eval=t_eval, + calculate_sensitivities=True, + ) - simulation = [sol[signal].data for signal in self.signal] + simulation = [sol[signal].data for signal in self.signal] - sensitivities = [ - np.array( - [[sol[signal].sensitivities[key]] for signal in self.signal] - ).reshape(len(sol[self.signal[0]].data), self.n_outputs) - for key in self.fit_keys - ] + sensitivities = [ + np.array( + [[sol[signal].sensitivities[key]] for signal in self.signal] + ).reshape(len(sol[self.signal[0]].data), self.n_outputs) + for key in self.fit_keys + ] - return np.vstack(simulation).T, np.dstack(sensitivities) + return np.vstack(simulation).T, np.dstack(sensitivities) + except Exception as e: + print(f"Error: {e}") + return [np.inf], [np.inf] else: return [np.inf], [np.inf] diff --git a/pybop/models/empirical/__init__.py b/pybop/models/empirical/__init__.py index 6a28b0a9..46f8a373 100644 --- a/pybop/models/empirical/__init__.py +++ b/pybop/models/empirical/__init__.py @@ -1,4 +1,5 @@ # # Import lithium ion based models # -from .ecm import ECircuitModel, Thevenin +from .base_ecm import ECircuitModel +from .ecm import Thevenin diff --git a/pybop/models/lithium_ion/__init__.py b/pybop/models/lithium_ion/__init__.py index 4e4f32e9..80e2d2cc 100644 --- a/pybop/models/lithium_ion/__init__.py +++ b/pybop/models/lithium_ion/__init__.py @@ -1,4 +1,5 @@ # # Import lithium ion based models # -from .echem import EChemBaseModel, SPM, SPMe, DFN, MPM, MSMR +from .base_echem import EChemBaseModel +from .echem import SPM, SPMe, DFN, MPM, MSMR diff --git a/pybop/models/lithium_ion/base_echem.py b/pybop/models/lithium_ion/base_echem.py index b3cc4838..4507a824 100644 --- a/pybop/models/lithium_ion/base_echem.py +++ b/pybop/models/lithium_ion/base_echem.py @@ -37,6 +37,7 @@ def __init__( spatial_methods or self.pybamm_model.default_spatial_methods ) self.solver = solver or self.pybamm_model.default_solver + self.solver.max_step_decrease_count = 1 # Internal attributes for the built model are initialized but not set self._model_with_set_params = None diff --git a/pyproject.toml b/pyproject.toml index 8f3a0375..1cb583e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,7 +46,10 @@ dev = [ "pytest-xdist", "ruff", ] -all = ["pybop[plot]"] +scifem = [ + "scikit-fem>=8.1.0" # scikit-fem is a dependency for the multi-dimensional pybamm models +] +all = ["pybop[plot]", "pybop[scifem]"] [tool.setuptools.packages.find] include = ["pybop", "pybop.*"] From ae172450fde1cc5d50cbbb278b6033cee3e6b91e Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Thu, 4 Apr 2024 14:41:57 +0100 Subject: [PATCH 4/7] Updt PR template for examples, nox session typo --- .github/PULL_REQUEST_TEMPLATE.md | 3 ++- CHANGELOG.md | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index bb84b43e..ea315465 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -13,6 +13,7 @@ Before you mark your PR as ready for review, please ensure that you've considere ## Type of change - [ ] New Feature: A non-breaking change that adds new functionality. - [ ] Optimization: A code change that improves performance. +- [ ] Examples: A change to existing or additional examples. - [ ] Bug Fix: A non-breaking change that addresses an issue. - [ ] Documentation: Updates to documentation or new documentation for new features. - [ ] Refactoring: Non-functional changes that improve the codebase. @@ -24,7 +25,7 @@ Before you mark your PR as ready for review, please ensure that you've considere - [ ] No style issues: `$ pre-commit run` (or `$ nox -s pre-commit`) (see [CONTRIBUTING.md](https://github.com/pybop-team/PyBOP/blob/develop/CONTRIBUTING.md#installing-and-using-pre-commit) for how to set this up to run automatically when committing locally, in just two lines of code) - [ ] All unit tests pass: `$ nox -s tests` -- [ ] The documentation builds: `$ nox -s docs` +- [ ] The documentation builds: `$ nox -s doctest` You can run integration tests, unit tests, and doctests together at once, using `$ nox -s quick`. diff --git a/CHANGELOG.md b/CHANGELOG.md index b85cb236..4e03483a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ## Bug Fixes +- [#270](https://github.com/pybop-team/PyBOP/pull/270) - Updates PR template. - [#91](https://github.com/pybop-team/PyBOP/issues/91) - Adds a check on the number of parameters for CMAES and makes XNES the default optimiser. # [v24.3](https://github.com/pybop-team/PyBOP/tree/v24.3) - 2024-03-25 From 87cbf1c8542e674c99aaef56d1bee2887c36e07a Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Thu, 4 Apr 2024 14:53:36 +0100 Subject: [PATCH 5/7] Updt notebooks --- .../equivalent_circuit_identification.ipynb | 201 ++++++++++++++---- examples/notebooks/spm_Adam.ipynb | 177 ++++++++++++--- examples/notebooks/spm_CMAES.ipynb | 170 ++++++++++++--- examples/notebooks/spm_electrode_design.ipynb | 91 +++++++- .../spm_scipy_DifferentialEvolution.ipynb | 170 ++++++++++++--- 5 files changed, 661 insertions(+), 148 deletions(-) diff --git a/examples/notebooks/equivalent_circuit_identification.ipynb b/examples/notebooks/equivalent_circuit_identification.ipynb index d905569c..a86472a3 100644 --- a/examples/notebooks/equivalent_circuit_identification.ipynb +++ b/examples/notebooks/equivalent_circuit_identification.ipynb @@ -18,34 +18,72 @@ "cell_type": "code", "execution_count": 1, "id": "dd0e1a20-1ba3-4ff5-8f6a-f9c6f25c2a4a", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:40.349577Z", + "iopub.status.busy": "2024-04-04T13:51:40.349390Z", + "iopub.status.idle": "2024-04-04T13:51:41.954408Z", + "shell.execute_reply": "2024-04-04T13:51:41.953985Z" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: pip in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (24.0)\n", - "Requirement already satisfied: ipywidgets in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (8.1.2)\n", - "Requirement already satisfied: comm>=0.1.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (0.2.1)\n", - "Requirement already satisfied: ipython>=6.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (8.20.0)\n", - "Requirement already satisfied: traitlets>=4.3.1 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (5.14.1)\n", - "Requirement already satisfied: widgetsnbextension~=4.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (4.0.10)\n", - "Requirement already satisfied: jupyterlab-widgets~=3.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (3.0.10)\n", - "Requirement already satisfied: decorator in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n", - "Requirement already satisfied: jedi>=0.16 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\n", - "Requirement already satisfied: matplotlib-inline in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\n", - "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.43)\n", - "Requirement already satisfied: pygments>=2.4.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.17.2)\n", - "Requirement already satisfied: stack-data in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\n", - "Requirement already satisfied: pexpect>4.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\n", - "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\n", - "Requirement already satisfied: ptyprocess>=0.5 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\n", - "Requirement already satisfied: wcwidth in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from prompt-toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13)\n", - "Requirement already satisfied: executing>=1.2.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.0.1)\n", - "Requirement already satisfied: asttokens>=2.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.1)\n", - "Requirement already satisfied: pure-eval in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\n", - "Requirement already satisfied: six>=1.12.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\n", - "Note: you may need to restart the kernel to use updated packages.\n", + "Requirement already satisfied: pip in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (24.0)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: ipywidgets in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (8.1.2)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: comm>=0.1.3 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (0.2.2)\r\n", + "Requirement already satisfied: ipython>=6.1.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (8.23.0)\r\n", + "Requirement already satisfied: traitlets>=4.3.1 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (5.14.2)\r\n", + "Requirement already satisfied: widgetsnbextension~=4.0.10 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (4.0.10)\r\n", + "Requirement already satisfied: jupyterlab-widgets~=3.0.10 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (3.0.10)\r\n", + "Requirement already satisfied: decorator in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\r\n", + "Requirement already satisfied: jedi>=0.16 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\r\n", + "Requirement already satisfied: matplotlib-inline in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\r\n", + "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.43)\r\n", + "Requirement already satisfied: pygments>=2.4.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.17.2)\r\n", + "Requirement already satisfied: stack-data in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\r\n", + "Requirement already satisfied: typing-extensions in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.10.0)\r\n", + "Requirement already satisfied: pexpect>4.3 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\r\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\r\n", + "Requirement already satisfied: ptyprocess>=0.5 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\r\n", + "Requirement already satisfied: wcwidth in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from prompt-toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13)\r\n", + "Requirement already satisfied: executing>=1.2.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.0.1)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: asttokens>=2.1.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.1)\r\n", + "Requirement already satisfied: pure-eval in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\r\n", + "Requirement already satisfied: six>=1.12.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "Note: you may need to restart the kernel to use updated packages.\n" ] } @@ -69,7 +107,14 @@ "cell_type": "code", "execution_count": 2, "id": "d6afb8f9-3872-4a7e-a76d-0b50855fe089", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:41.956091Z", + "iopub.status.busy": "2024-04-04T13:51:41.955965Z", + "iopub.status.idle": "2024-04-04T13:51:42.466310Z", + "shell.execute_reply": "2024-04-04T13:51:42.466019Z" + } + }, "outputs": [], "source": [ "import numpy as np\n", @@ -91,7 +136,14 @@ "cell_type": "code", "execution_count": 3, "id": "734d6d86-61e3-4125-bcea-e83b3235814b", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.467660Z", + "iopub.status.busy": "2024-04-04T13:51:42.467482Z", + "iopub.status.idle": "2024-04-04T13:51:42.469014Z", + "shell.execute_reply": "2024-04-04T13:51:42.468835Z" + } + }, "outputs": [], "source": [ "# params = pybop.ParameterSet(\n", @@ -113,7 +165,14 @@ "cell_type": "code", "execution_count": 4, "id": "8d4a0635-51da-4998-8b48-deda13a49e39", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.470052Z", + "iopub.status.busy": "2024-04-04T13:51:42.469973Z", + "iopub.status.idle": "2024-04-04T13:51:42.492398Z", + "shell.execute_reply": "2024-04-04T13:51:42.492204Z" + } + }, "outputs": [], "source": [ "params = pybop.ParameterSet(\n", @@ -158,7 +217,14 @@ "cell_type": "code", "execution_count": 5, "id": "e84b6dd0-8f9e-4b68-b7cb-f3bcb9988802", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.493491Z", + "iopub.status.busy": "2024-04-04T13:51:42.493410Z", + "iopub.status.idle": "2024-04-04T13:51:42.496758Z", + "shell.execute_reply": "2024-04-04T13:51:42.496545Z" + } + }, "outputs": [], "source": [ "model = pybop.empirical.Thevenin(\n", @@ -178,7 +244,14 @@ "cell_type": "code", "execution_count": 6, "id": "e75da7e3-8815-4159-a5ad-600a235b028c", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.497767Z", + "iopub.status.busy": "2024-04-04T13:51:42.497620Z", + "iopub.status.idle": "2024-04-04T13:51:42.499712Z", + "shell.execute_reply": "2024-04-04T13:51:42.499531Z" + } + }, "outputs": [], "source": [ "parameters = [\n", @@ -222,7 +295,14 @@ "cell_type": "code", "execution_count": 7, "id": "c346b106-99a9-46bc-8b5d-d330ed911660", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.500641Z", + "iopub.status.busy": "2024-04-04T13:51:42.500554Z", + "iopub.status.idle": "2024-04-04T13:51:42.522666Z", + "shell.execute_reply": "2024-04-04T13:51:42.522476Z" + } + }, "outputs": [], "source": [ "sigma = 0.001\n", @@ -252,7 +332,14 @@ "cell_type": "code", "execution_count": 8, "id": "62369a4d-96e5-49d2-8951-4468b3fc5831", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.523714Z", + "iopub.status.busy": "2024-04-04T13:51:42.523628Z", + "iopub.status.idle": "2024-04-04T13:51:42.532201Z", + "shell.execute_reply": "2024-04-04T13:51:42.532025Z" + } + }, "outputs": [], "source": [ "problem = pybop.FittingProblem(model, parameters, dataset)\n", @@ -271,12 +358,19 @@ "cell_type": "code", "execution_count": 9, "id": "f69b34f5-0b46-4646-acbe-991046997b98", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.533145Z", + "iopub.status.busy": "2024-04-04T13:51:42.533065Z", + "iopub.status.idle": "2024-04-04T13:51:42.553968Z", + "shell.execute_reply": "2024-04-04T13:51:42.553755Z" + } + }, "outputs": [ { "data": { "text/plain": [ - "0.024944621550803514" + "0.02494462155080317" ] }, "execution_count": 9, @@ -300,7 +394,14 @@ "cell_type": "code", "execution_count": 10, "id": "6244882e-11ad-4bfe-a512-f1c687a06a08", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.555024Z", + "iopub.status.busy": "2024-04-04T13:51:42.554817Z", + "iopub.status.idle": "2024-04-04T13:51:44.711363Z", + "shell.execute_reply": "2024-04-04T13:51:44.711096Z" + } + }, "outputs": [ { "name": "stdout", @@ -308,8 +409,8 @@ "text": [ "Initial parameters: [2.29696565e-04 3.53341865e-05 1.63145688e-05 1.07259649e+04\n", " 9.73352990e+03]\n", - "Estimated parameters: [8.44919651e-04 4.36094658e-04 1.99997447e-04 1.07259693e+04\n", - " 9.73353443e+03]\n" + "Estimated parameters: [1.00367939e-03 3.80907049e-04 1.00242146e-04 1.07259636e+04\n", + " 9.73353073e+03]\n" ] } ], @@ -333,14 +434,21 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 11, "id": "2cec5659-31fa-4164-82f0-4467a4894729", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:44.712530Z", + "iopub.status.busy": "2024-04-04T13:51:44.712355Z", + "iopub.status.idle": "2024-04-04T13:51:45.087892Z", + "shell.execute_reply": "2024-04-04T13:51:45.087526Z" + } + }, "outputs": [ { "data": { "image/svg+xml": [ - "02004006008003.63.623.643.663.68ReferenceModelOptimised ComparisonTime / sVoltage / V" + "02004006008003.63.623.643.663.68ReferenceModelOptimised ComparisonTime / sVoltage / V" ] }, "metadata": {}, @@ -363,14 +471,21 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 12, "id": "f66e0b0f-4861-42dd-bb7f-8734fcca3328", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:45.089261Z", + "iopub.status.busy": "2024-04-04T13:51:45.088987Z", + "iopub.status.idle": "2024-04-04T13:51:47.198757Z", + "shell.execute_reply": "2024-04-04T13:51:47.198479Z" + } + }, "outputs": [ { "data": { "image/svg+xml": [ - "510152025300.00050.0010.00150.0020.00250.003ConvergenceIterationCost" + "51015202500.0020.0040.0060.0080.010.0120.0140.016ConvergenceIterationCost" ] }, "metadata": {}, @@ -379,7 +494,7 @@ { "data": { "image/svg+xml": [ - "010020000.00050.0010.00150.002010020000.00050.001010020000.0010.002010020010.72596k10.725965k10.72597k01002009,733.539,733.535R0 [Ohm]R1 [Ohm]R2 [Ohm]C1 [F]C1 [F]Parameter ConvergenceFunction CallFunction CallFunction CallFunction CallFunction CallR0 [Ohm]R1 [Ohm]R2 [Ohm]C1 [F]C1 [F]" + "0501001502000.00050.0010.001505010015020000.00050.0010501001502000200μ400μ600μ800μ05010015020010.725962k10.725963k10.725964k10.725965k0501001502009,733.5299,733.539,733.5319,733.5329,733.533R0 [Ohm]R1 [Ohm]R2 [Ohm]C1 [F]C1 [F]Parameter ConvergenceFunction CallFunction CallFunction CallFunction CallFunction CallR0 [Ohm]R1 [Ohm]R2 [Ohm]C1 [F]C1 [F]" ] }, "metadata": {}, @@ -418,7 +533,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.7" + "version": "3.11.8" } }, "nbformat": 4, diff --git a/examples/notebooks/spm_Adam.ipynb b/examples/notebooks/spm_Adam.ipynb index 8a56e9e2..7083c002 100644 --- a/examples/notebooks/spm_Adam.ipynb +++ b/examples/notebooks/spm_Adam.ipynb @@ -24,6 +24,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2024-04-04T13:51:40.337833Z", + "iopub.status.busy": "2024-04-04T13:51:40.337689Z", + "iopub.status.idle": "2024-04-04T13:51:41.935008Z", + "shell.execute_reply": "2024-04-04T13:51:41.934618Z" + }, "id": "X87NUGPW04py", "outputId": "0d785b07-7cff-4aeb-e60a-4ff5a669afbf" }, @@ -32,28 +38,59 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: pip in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (24.0)\n", - "Requirement already satisfied: ipywidgets in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (8.1.2)\n", - "Requirement already satisfied: comm>=0.1.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (0.2.1)\n", - "Requirement already satisfied: ipython>=6.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (8.20.0)\n", - "Requirement already satisfied: traitlets>=4.3.1 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (5.14.1)\n", - "Requirement already satisfied: widgetsnbextension~=4.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (4.0.10)\n", - "Requirement already satisfied: jupyterlab-widgets~=3.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (3.0.10)\n", - "Requirement already satisfied: decorator in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n", - "Requirement already satisfied: jedi>=0.16 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\n", - "Requirement already satisfied: matplotlib-inline in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\n", - "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.43)\n", - "Requirement already satisfied: pygments>=2.4.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.17.2)\n", - "Requirement already satisfied: stack-data in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\n", - "Requirement already satisfied: pexpect>4.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\n", - "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\n", - "Requirement already satisfied: ptyprocess>=0.5 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\n", - "Requirement already satisfied: wcwidth in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from prompt-toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13)\n", - "Requirement already satisfied: executing>=1.2.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.0.1)\n", - "Requirement already satisfied: asttokens>=2.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.1)\n", - "Requirement already satisfied: pure-eval in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\n", - "Requirement already satisfied: six>=1.12.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\n", - "Note: you may need to restart the kernel to use updated packages.\n", + "Requirement already satisfied: pip in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (24.0)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: ipywidgets in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (8.1.2)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: comm>=0.1.3 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (0.2.2)\r\n", + "Requirement already satisfied: ipython>=6.1.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (8.23.0)\r\n", + "Requirement already satisfied: traitlets>=4.3.1 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (5.14.2)\r\n", + "Requirement already satisfied: widgetsnbextension~=4.0.10 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (4.0.10)\r\n", + "Requirement already satisfied: jupyterlab-widgets~=3.0.10 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (3.0.10)\r\n", + "Requirement already satisfied: decorator in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\r\n", + "Requirement already satisfied: jedi>=0.16 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\r\n", + "Requirement already satisfied: matplotlib-inline in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\r\n", + "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.43)\r\n", + "Requirement already satisfied: pygments>=2.4.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.17.2)\r\n", + "Requirement already satisfied: stack-data in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\r\n", + "Requirement already satisfied: typing-extensions in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.10.0)\r\n", + "Requirement already satisfied: pexpect>4.3 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\r\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\r\n", + "Requirement already satisfied: ptyprocess>=0.5 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\r\n", + "Requirement already satisfied: wcwidth in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from prompt-toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: executing>=1.2.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.0.1)\r\n", + "Requirement already satisfied: asttokens>=2.1.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.1)\r\n", + "Requirement already satisfied: pure-eval in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\r\n", + "Requirement already satisfied: six>=1.12.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "Note: you may need to restart the kernel to use updated packages.\n" ] } @@ -78,6 +115,12 @@ "cell_type": "code", "execution_count": 2, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:41.936561Z", + "iopub.status.busy": "2024-04-04T13:51:41.936439Z", + "iopub.status.idle": "2024-04-04T13:51:42.508083Z", + "shell.execute_reply": "2024-04-04T13:51:42.507654Z" + }, "id": "SQdt4brD04p1" }, "outputs": [], @@ -105,7 +148,14 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.509591Z", + "iopub.status.busy": "2024-04-04T13:51:42.509437Z", + "iopub.status.idle": "2024-04-04T13:51:42.534794Z", + "shell.execute_reply": "2024-04-04T13:51:42.534452Z" + } + }, "outputs": [], "source": [ "parameter_set = pybop.ParameterSet.pybamm(\"Chen2020\")\n", @@ -125,6 +175,12 @@ "cell_type": "code", "execution_count": 4, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.536154Z", + "iopub.status.busy": "2024-04-04T13:51:42.536069Z", + "iopub.status.idle": "2024-04-04T13:51:42.610305Z", + "shell.execute_reply": "2024-04-04T13:51:42.609892Z" + }, "id": "sBasxv8U04p3" }, "outputs": [], @@ -145,7 +201,14 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.611946Z", + "iopub.status.busy": "2024-04-04T13:51:42.611728Z", + "iopub.status.idle": "2024-04-04T13:51:42.621525Z", + "shell.execute_reply": "2024-04-04T13:51:42.621156Z" + } + }, "outputs": [], "source": [ "sigma = 0.001\n", @@ -183,6 +246,12 @@ "cell_type": "code", "execution_count": 6, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.622671Z", + "iopub.status.busy": "2024-04-04T13:51:42.622478Z", + "iopub.status.idle": "2024-04-04T13:51:42.628864Z", + "shell.execute_reply": "2024-04-04T13:51:42.628519Z" + }, "id": "zuvGHWID04p_" }, "outputs": [], @@ -211,6 +280,12 @@ "cell_type": "code", "execution_count": 7, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.629987Z", + "iopub.status.busy": "2024-04-04T13:51:42.629809Z", + "iopub.status.idle": "2024-04-04T13:51:42.631895Z", + "shell.execute_reply": "2024-04-04T13:51:42.631621Z" + }, "id": "WPCybXIJ04qA" }, "outputs": [], @@ -244,6 +319,12 @@ "cell_type": "code", "execution_count": 8, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.632931Z", + "iopub.status.busy": "2024-04-04T13:51:42.632782Z", + "iopub.status.idle": "2024-04-04T13:51:42.705454Z", + "shell.execute_reply": "2024-04-04T13:51:42.705066Z" + }, "id": "etMzRtx404qA" }, "outputs": [ @@ -259,6 +340,7 @@ "problem = pybop.FittingProblem(model, parameters, dataset)\n", "cost = pybop.SumSquaredError(problem)\n", "optim = pybop.Optimisation(cost, optimiser=pybop.Adam)\n", + "optim.set_max_unchanged_iterations(40)\n", "optim.set_max_iterations(150)" ] }, @@ -277,6 +359,12 @@ "cell_type": "code", "execution_count": 9, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.706564Z", + "iopub.status.busy": "2024-04-04T13:51:42.706469Z", + "iopub.status.idle": "2024-04-04T13:51:50.537424Z", + "shell.execute_reply": "2024-04-04T13:51:50.537032Z" + }, "id": "-9OVt0EQ04qB" }, "outputs": [], @@ -302,6 +390,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2024-04-04T13:51:50.538815Z", + "iopub.status.busy": "2024-04-04T13:51:50.538619Z", + "iopub.status.idle": "2024-04-04T13:51:50.541683Z", + "shell.execute_reply": "2024-04-04T13:51:50.541465Z" + }, "id": "Hgz8SV4i04qC", "outputId": "e1e42ae7-5075-4c47-dd68-1b22ecc170f6" }, @@ -309,7 +403,7 @@ { "data": { "text/plain": [ - "array([0.71969102, 0.67039216])" + "array([0.76496615, 0.66254367])" ] }, "execution_count": 10, @@ -351,6 +445,12 @@ "base_uri": "https://localhost:8080/", "height": 467 }, + "execution": { + "iopub.execute_input": "2024-04-04T13:51:50.542618Z", + "iopub.status.busy": "2024-04-04T13:51:50.542472Z", + "iopub.status.idle": "2024-04-04T13:51:50.986055Z", + "shell.execute_reply": "2024-04-04T13:51:50.985844Z" + }, "id": "tJUJ80Ve04qD", "outputId": "855fbaa2-1e09-4935-eb1a-8caf7f99eb75" }, @@ -358,7 +458,7 @@ { "data": { "image/svg+xml": [ - "02004006008003.83.853.93.9544.05ReferenceModelOptimised ComparisonTime / sVoltage / V" + "02004006008003.83.853.93.9544.05ReferenceModelOptimised ComparisonTime / sVoltage / V" ] }, "metadata": {}, @@ -382,13 +482,19 @@ "cell_type": "code", "execution_count": 12, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:50.987237Z", + "iopub.status.busy": "2024-04-04T13:51:50.986963Z", + "iopub.status.idle": "2024-04-04T13:51:52.766386Z", + "shell.execute_reply": "2024-04-04T13:51:52.766178Z" + }, "id": "N5XYkevi04qD" }, "outputs": [ { "data": { "image/svg+xml": [ - "510152025303500.511.522.533.54ConvergenceIterationCost" + "2040608010012014000.511.522.533.54ConvergenceIterationCost" ] }, "metadata": {}, @@ -397,7 +503,7 @@ { "data": { "image/svg+xml": [ - "01020300.60.650.70.750.80.850.90.95101020300.450.50.550.60.650.70.750.80.850.9Negative electrode active material volume fractionPositive electrode active material volume fractionParameter ConvergenceFunction CallFunction CallNegative electrode active material volume fractionPositive electrode active material volume fraction" + "0501000.60.650.70.750.80.850501000.50.550.60.650.7Negative electrode active material volume fractionPositive electrode active material volume fractionParameter ConvergenceFunction CallFunction CallNegative electrode active material volume fractionPositive electrode active material volume fraction" ] }, "metadata": {}, @@ -421,12 +527,19 @@ { "cell_type": "code", "execution_count": 13, - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:52.767346Z", + "iopub.status.busy": "2024-04-04T13:51:52.767261Z", + "iopub.status.idle": "2024-04-04T13:51:57.666000Z", + "shell.execute_reply": "2024-04-04T13:51:57.665745Z" + } + }, "outputs": [ { "data": { "image/svg+xml": [ - "0.50.550.60.650.70.750.80.40.450.50.550.60.650.70246810Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" + "0.50.550.60.650.70.750.80.40.450.50.550.60.650.70246810Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" ] }, "metadata": {}, @@ -435,7 +548,7 @@ { "data": { "image/svg+xml": [ - "0.60.650.70.750.80.850.90.50.550.60.650.70.750.80.40.81.21.622.4Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" + "0.60.650.70.750.80.850.90.50.550.60.650.70.750.80.40.81.21.622.4Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" ] }, "metadata": {}, @@ -479,7 +592,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.7" + "version": "3.11.8" }, "widgets": { "application/vnd.jupyter.widget-state+json": { diff --git a/examples/notebooks/spm_CMAES.ipynb b/examples/notebooks/spm_CMAES.ipynb index 2093c875..62d06f20 100644 --- a/examples/notebooks/spm_CMAES.ipynb +++ b/examples/notebooks/spm_CMAES.ipynb @@ -22,6 +22,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2024-04-04T13:51:40.339462Z", + "iopub.status.busy": "2024-04-04T13:51:40.339256Z", + "iopub.status.idle": "2024-04-04T13:51:41.908783Z", + "shell.execute_reply": "2024-04-04T13:51:41.908509Z" + }, "id": "X87NUGPW04py", "outputId": "0d785b07-7cff-4aeb-e60a-4ff5a669afbf" }, @@ -30,28 +36,53 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: pip in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (24.0)\n", - "Requirement already satisfied: ipywidgets in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (8.1.2)\n", - "Requirement already satisfied: comm>=0.1.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (0.2.1)\n", - "Requirement already satisfied: ipython>=6.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (8.20.0)\n", - "Requirement already satisfied: traitlets>=4.3.1 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (5.14.1)\n", - "Requirement already satisfied: widgetsnbextension~=4.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (4.0.10)\n", - "Requirement already satisfied: jupyterlab-widgets~=3.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (3.0.10)\n", - "Requirement already satisfied: decorator in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n", - "Requirement already satisfied: jedi>=0.16 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\n", - "Requirement already satisfied: matplotlib-inline in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\n", - "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.43)\n", - "Requirement already satisfied: pygments>=2.4.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.17.2)\n", - "Requirement already satisfied: stack-data in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\n", - "Requirement already satisfied: pexpect>4.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\n", - "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\n", - "Requirement already satisfied: ptyprocess>=0.5 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\n", - "Requirement already satisfied: wcwidth in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from prompt-toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13)\n", - "Requirement already satisfied: executing>=1.2.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.0.1)\n", - "Requirement already satisfied: asttokens>=2.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.1)\n", - "Requirement already satisfied: pure-eval in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\n", - "Requirement already satisfied: six>=1.12.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\n", - "Note: you may need to restart the kernel to use updated packages.\n", + "Requirement already satisfied: pip in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (24.0)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: ipywidgets in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (8.1.2)\r\n", + "Requirement already satisfied: comm>=0.1.3 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (0.2.2)\r\n", + "Requirement already satisfied: ipython>=6.1.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (8.23.0)\r\n", + "Requirement already satisfied: traitlets>=4.3.1 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (5.14.2)\r\n", + "Requirement already satisfied: widgetsnbextension~=4.0.10 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (4.0.10)\r\n", + "Requirement already satisfied: jupyterlab-widgets~=3.0.10 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (3.0.10)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: decorator in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\r\n", + "Requirement already satisfied: jedi>=0.16 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\r\n", + "Requirement already satisfied: matplotlib-inline in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\r\n", + "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.43)\r\n", + "Requirement already satisfied: pygments>=2.4.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.17.2)\r\n", + "Requirement already satisfied: stack-data in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\r\n", + "Requirement already satisfied: typing-extensions in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.10.0)\r\n", + "Requirement already satisfied: pexpect>4.3 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\r\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\r\n", + "Requirement already satisfied: ptyprocess>=0.5 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\r\n", + "Requirement already satisfied: wcwidth in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from prompt-toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13)\r\n", + "Requirement already satisfied: executing>=1.2.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.0.1)\r\n", + "Requirement already satisfied: asttokens>=2.1.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.1)\r\n", + "Requirement already satisfied: pure-eval in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\r\n", + "Requirement already satisfied: six>=1.12.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "Note: you may need to restart the kernel to use updated packages.\n" ] } @@ -76,6 +107,12 @@ "cell_type": "code", "execution_count": 2, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:41.909990Z", + "iopub.status.busy": "2024-04-04T13:51:41.909897Z", + "iopub.status.idle": "2024-04-04T13:51:42.447353Z", + "shell.execute_reply": "2024-04-04T13:51:42.447043Z" + }, "id": "SQdt4brD04p1" }, "outputs": [], @@ -103,7 +140,14 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.448892Z", + "iopub.status.busy": "2024-04-04T13:51:42.448699Z", + "iopub.status.idle": "2024-04-04T13:51:42.474257Z", + "shell.execute_reply": "2024-04-04T13:51:42.473993Z" + } + }, "outputs": [], "source": [ "parameter_set = pybop.ParameterSet.pybamm(\"Chen2020\")\n", @@ -123,6 +167,12 @@ "cell_type": "code", "execution_count": 4, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.475438Z", + "iopub.status.busy": "2024-04-04T13:51:42.475279Z", + "iopub.status.idle": "2024-04-04T13:51:42.552632Z", + "shell.execute_reply": "2024-04-04T13:51:42.552395Z" + }, "id": "sBasxv8U04p3" }, "outputs": [], @@ -143,7 +193,14 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.553838Z", + "iopub.status.busy": "2024-04-04T13:51:42.553748Z", + "iopub.status.idle": "2024-04-04T13:51:42.563170Z", + "shell.execute_reply": "2024-04-04T13:51:42.562978Z" + } + }, "outputs": [], "source": [ "sigma = 0.001\n", @@ -181,6 +238,12 @@ "cell_type": "code", "execution_count": 6, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.564145Z", + "iopub.status.busy": "2024-04-04T13:51:42.564060Z", + "iopub.status.idle": "2024-04-04T13:51:42.570260Z", + "shell.execute_reply": "2024-04-04T13:51:42.569982Z" + }, "id": "zuvGHWID04p_" }, "outputs": [], @@ -209,6 +272,12 @@ "cell_type": "code", "execution_count": 7, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.571304Z", + "iopub.status.busy": "2024-04-04T13:51:42.571113Z", + "iopub.status.idle": "2024-04-04T13:51:42.572959Z", + "shell.execute_reply": "2024-04-04T13:51:42.572704Z" + }, "id": "WPCybXIJ04qA" }, "outputs": [], @@ -242,6 +311,12 @@ "cell_type": "code", "execution_count": 8, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.573797Z", + "iopub.status.busy": "2024-04-04T13:51:42.573654Z", + "iopub.status.idle": "2024-04-04T13:51:42.646075Z", + "shell.execute_reply": "2024-04-04T13:51:42.645848Z" + }, "id": "etMzRtx404qA" }, "outputs": [], @@ -267,6 +342,12 @@ "cell_type": "code", "execution_count": 9, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.647463Z", + "iopub.status.busy": "2024-04-04T13:51:42.647331Z", + "iopub.status.idle": "2024-04-04T13:51:45.017616Z", + "shell.execute_reply": "2024-04-04T13:51:45.017371Z" + }, "id": "-9OVt0EQ04qB" }, "outputs": [], @@ -292,6 +373,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2024-04-04T13:51:45.018948Z", + "iopub.status.busy": "2024-04-04T13:51:45.018787Z", + "iopub.status.idle": "2024-04-04T13:51:45.021872Z", + "shell.execute_reply": "2024-04-04T13:51:45.021685Z" + }, "id": "Hgz8SV4i04qC", "outputId": "e1e42ae7-5075-4c47-dd68-1b22ecc170f6" }, @@ -299,7 +386,7 @@ { "data": { "text/plain": [ - "array([0.75174245, 0.66487169])" + "array([0.7516964 , 0.66486237])" ] }, "execution_count": 10, @@ -341,6 +428,12 @@ "base_uri": "https://localhost:8080/", "height": 467 }, + "execution": { + "iopub.execute_input": "2024-04-04T13:51:45.022723Z", + "iopub.status.busy": "2024-04-04T13:51:45.022595Z", + "iopub.status.idle": "2024-04-04T13:51:45.393524Z", + "shell.execute_reply": "2024-04-04T13:51:45.393241Z" + }, "id": "tJUJ80Ve04qD", "outputId": "855fbaa2-1e09-4935-eb1a-8caf7f99eb75" }, @@ -348,7 +441,7 @@ { "data": { "image/svg+xml": [ - "02004006008003.83.853.93.9544.05ReferenceModelOptimised ComparisonTime / sVoltage / V" + "02004006008003.83.853.93.9544.05ReferenceModelOptimised ComparisonTime / sVoltage / V" ] }, "metadata": {}, @@ -372,13 +465,19 @@ "cell_type": "code", "execution_count": 12, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:45.394756Z", + "iopub.status.busy": "2024-04-04T13:51:45.394606Z", + "iopub.status.idle": "2024-04-04T13:51:47.585001Z", + "shell.execute_reply": "2024-04-04T13:51:47.584721Z" + }, "id": "N5XYkevi04qD" }, "outputs": [ { "data": { "image/svg+xml": [ - "1020304000.050.10.15ConvergenceIterationCost" + "5101520253000.050.10.15ConvergenceIterationCost" ] }, "metadata": {}, @@ -387,7 +486,7 @@ { "data": { "image/svg+xml": [ - "0501001502002500.650.70.750.80.850501001502002500.50.550.60.650.70.75Negative electrode active material volume fractionPositive electrode active material volume fractionParameter ConvergenceFunction CallFunction CallNegative electrode active material volume fractionPositive electrode active material volume fraction" + "0501001500.650.70.750.80.850501001500.50.550.60.650.70.75Negative electrode active material volume fractionPositive electrode active material volume fractionParameter ConvergenceFunction CallFunction CallNegative electrode active material volume fractionPositive electrode active material volume fraction" ] }, "metadata": {}, @@ -411,12 +510,19 @@ { "cell_type": "code", "execution_count": 13, - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:47.586047Z", + "iopub.status.busy": "2024-04-04T13:51:47.585958Z", + "iopub.status.idle": "2024-04-04T13:51:52.505298Z", + "shell.execute_reply": "2024-04-04T13:51:52.505048Z" + } + }, "outputs": [ { "data": { "image/svg+xml": [ - "0.60.650.70.750.80.850.90.50.550.60.650.70.750.80.40.81.21.622.4Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" + "0.60.650.70.750.80.850.90.50.550.60.650.70.750.80.40.81.21.622.4Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" ] }, "metadata": {}, @@ -425,7 +531,7 @@ { "data": { "image/svg+xml": [ - "0.60.650.70.750.80.850.90.50.550.60.650.70.750.80.40.81.21.622.4Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" + "0.60.650.70.750.80.850.90.50.550.60.650.70.750.80.40.81.21.622.4Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" ] }, "metadata": {}, @@ -469,7 +575,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.7" + "version": "3.11.8" }, "widgets": { "application/vnd.jupyter.widget-state+json": { diff --git a/examples/notebooks/spm_electrode_design.ipynb b/examples/notebooks/spm_electrode_design.ipynb index 538c9f97..5da8e290 100644 --- a/examples/notebooks/spm_electrode_design.ipynb +++ b/examples/notebooks/spm_electrode_design.ipynb @@ -24,6 +24,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2024-04-04T13:51:40.338793Z", + "iopub.status.busy": "2024-04-04T13:51:40.338629Z", + "iopub.status.idle": "2024-04-04T13:51:42.067053Z", + "shell.execute_reply": "2024-04-04T13:51:42.066723Z" + }, "id": "X87NUGPW04py", "outputId": "0d785b07-7cff-4aeb-e60a-4ff5a669afbf" }, @@ -32,7 +38,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Note: you may need to restart the kernel to use updated packages.\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "Note: you may need to restart the kernel to use updated packages.\n" ] } @@ -55,6 +67,12 @@ "cell_type": "code", "execution_count": 2, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.069250Z", + "iopub.status.busy": "2024-04-04T13:51:42.068624Z", + "iopub.status.idle": "2024-04-04T13:51:42.535644Z", + "shell.execute_reply": "2024-04-04T13:51:42.535340Z" + }, "id": "SQdt4brD04p1" }, "outputs": [], @@ -84,6 +102,12 @@ "cell_type": "code", "execution_count": 3, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.537101Z", + "iopub.status.busy": "2024-04-04T13:51:42.536873Z", + "iopub.status.idle": "2024-04-04T13:51:42.566751Z", + "shell.execute_reply": "2024-04-04T13:51:42.566487Z" + }, "id": "zuvGHWID04p_" }, "outputs": [], @@ -105,6 +129,12 @@ "cell_type": "code", "execution_count": 4, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.568181Z", + "iopub.status.busy": "2024-04-04T13:51:42.567996Z", + "iopub.status.idle": "2024-04-04T13:51:42.569834Z", + "shell.execute_reply": "2024-04-04T13:51:42.569595Z" + }, "id": "WPCybXIJ04qA" }, "outputs": [], @@ -133,7 +163,14 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.570906Z", + "iopub.status.busy": "2024-04-04T13:51:42.570764Z", + "iopub.status.idle": "2024-04-04T13:51:42.572404Z", + "shell.execute_reply": "2024-04-04T13:51:42.572174Z" + } + }, "outputs": [], "source": [ "experiment = pybop.Experiment(\n", @@ -155,6 +192,12 @@ "cell_type": "code", "execution_count": 6, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.573451Z", + "iopub.status.busy": "2024-04-04T13:51:42.573284Z", + "iopub.status.idle": "2024-04-04T13:51:43.206174Z", + "shell.execute_reply": "2024-04-04T13:51:43.205908Z" + }, "id": "etMzRtx404qA" }, "outputs": [], @@ -179,6 +222,12 @@ "cell_type": "code", "execution_count": 7, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:43.207517Z", + "iopub.status.busy": "2024-04-04T13:51:43.207429Z", + "iopub.status.idle": "2024-04-04T13:51:43.209115Z", + "shell.execute_reply": "2024-04-04T13:51:43.208943Z" + }, "id": "N3FtAhrT04qB" }, "outputs": [], @@ -200,6 +249,12 @@ "cell_type": "code", "execution_count": 8, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:43.210075Z", + "iopub.status.busy": "2024-04-04T13:51:43.209940Z", + "iopub.status.idle": "2024-04-04T13:51:51.224895Z", + "shell.execute_reply": "2024-04-04T13:51:51.224628Z" + }, "id": "-9OVt0EQ04qB" }, "outputs": [ @@ -208,9 +263,15 @@ "output_type": "stream", "text": [ "Halt: Maximum number of iterations (5) reached.\n", - "Estimated parameters: [6.92072167e-05 2.26386226e-06]\n", - "Initial gravimetric energy density: 386.81 Wh.kg-1\n", - "Optimised gravimetric energy density: 404.95 Wh.kg-1\n" + "Estimated parameters: [7.32367830e-05 2.08343111e-06]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Initial gravimetric energy density: 386.62 Wh.kg-1\n", + "Optimised gravimetric energy density: 399.06 Wh.kg-1\n" ] } ], @@ -247,13 +308,19 @@ "cell_type": "code", "execution_count": 9, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:51.225916Z", + "iopub.status.busy": "2024-04-04T13:51:51.225825Z", + "iopub.status.idle": "2024-04-04T13:51:52.011496Z", + "shell.execute_reply": "2024-04-04T13:51:52.011155Z" + }, "id": "ZVfozY0A04qC" }, "outputs": [ { "data": { "image/svg+xml": [ - "01000200030002.42.62.833.23.43.63.84ReferenceOptimisedOptimised ComparisonTime / sVoltage / V" + "01000200030002.42.62.833.23.43.63.84ReferenceOptimisedOptimised ComparisonTime / sVoltage / V" ] }, "metadata": {}, @@ -262,7 +329,7 @@ { "data": { "image/svg+xml": [ - "010002000300044.555.56ReferenceOptimisedOptimised ComparisonTime / sCurrent / A" + "010002000300044.555.56ReferenceOptimisedOptimised ComparisonTime / sCurrent / A" ] }, "metadata": {}, @@ -294,6 +361,12 @@ "base_uri": "https://localhost:8080/", "height": 467 }, + "execution": { + "iopub.execute_input": "2024-04-04T13:51:52.012933Z", + "iopub.status.busy": "2024-04-04T13:51:52.012638Z", + "iopub.status.idle": "2024-04-04T13:51:54.828333Z", + "shell.execute_reply": "2024-04-04T13:51:54.828054Z" + }, "id": "tJUJ80Ve04qD", "outputId": "855fbaa2-1e09-4935-eb1a-8caf7f99eb75" }, @@ -301,7 +374,7 @@ { "data": { "image/svg+xml": [ - "70μ80μ90μ100μ2μ3μ4μ5μ6μ7μ8μ9μ−400−380−360−340−320Cost LandscapePositive electrode thickness [m]Positive particle radius [m]" + "70μ80μ90μ100μ2μ3μ4μ5μ6μ7μ8μ9μ−400−380−360−340−320Cost LandscapePositive electrode thickness [m]Positive particle radius [m]" ] }, "metadata": {}, @@ -333,7 +406,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.7" + "version": "3.11.8" }, "widgets": { "application/vnd.jupyter.widget-state+json": { diff --git a/examples/notebooks/spm_scipy_DifferentialEvolution.ipynb b/examples/notebooks/spm_scipy_DifferentialEvolution.ipynb index 9a2afad7..6629dadf 100644 --- a/examples/notebooks/spm_scipy_DifferentialEvolution.ipynb +++ b/examples/notebooks/spm_scipy_DifferentialEvolution.ipynb @@ -22,6 +22,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2024-04-04T13:51:40.339517Z", + "iopub.status.busy": "2024-04-04T13:51:40.339436Z", + "iopub.status.idle": "2024-04-04T13:51:41.918074Z", + "shell.execute_reply": "2024-04-04T13:51:41.917742Z" + }, "id": "X87NUGPW04py", "outputId": "0d785b07-7cff-4aeb-e60a-4ff5a669afbf" }, @@ -30,28 +36,53 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: pip in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (24.0)\n", - "Requirement already satisfied: ipywidgets in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (8.1.2)\n", - "Requirement already satisfied: comm>=0.1.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (0.2.1)\n", - "Requirement already satisfied: ipython>=6.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (8.20.0)\n", - "Requirement already satisfied: traitlets>=4.3.1 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (5.14.1)\n", - "Requirement already satisfied: widgetsnbextension~=4.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (4.0.10)\n", - "Requirement already satisfied: jupyterlab-widgets~=3.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (3.0.10)\n", - "Requirement already satisfied: decorator in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n", - "Requirement already satisfied: jedi>=0.16 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\n", - "Requirement already satisfied: matplotlib-inline in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\n", - "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.43)\n", - "Requirement already satisfied: pygments>=2.4.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.17.2)\n", - "Requirement already satisfied: stack-data in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\n", - "Requirement already satisfied: pexpect>4.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\n", - "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\n", - "Requirement already satisfied: ptyprocess>=0.5 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\n", - "Requirement already satisfied: wcwidth in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from prompt-toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13)\n", - "Requirement already satisfied: executing>=1.2.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.0.1)\n", - "Requirement already satisfied: asttokens>=2.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.1)\n", - "Requirement already satisfied: pure-eval in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\n", - "Requirement already satisfied: six>=1.12.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\n", - "Note: you may need to restart the kernel to use updated packages.\n", + "Requirement already satisfied: pip in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (24.0)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: ipywidgets in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (8.1.2)\r\n", + "Requirement already satisfied: comm>=0.1.3 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (0.2.2)\r\n", + "Requirement already satisfied: ipython>=6.1.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (8.23.0)\r\n", + "Requirement already satisfied: traitlets>=4.3.1 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (5.14.2)\r\n", + "Requirement already satisfied: widgetsnbextension~=4.0.10 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (4.0.10)\r\n", + "Requirement already satisfied: jupyterlab-widgets~=3.0.10 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipywidgets) (3.0.10)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: decorator in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\r\n", + "Requirement already satisfied: jedi>=0.16 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\r\n", + "Requirement already satisfied: matplotlib-inline in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\r\n", + "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.43)\r\n", + "Requirement already satisfied: pygments>=2.4.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.17.2)\r\n", + "Requirement already satisfied: stack-data in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\r\n", + "Requirement already satisfied: typing-extensions in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.10.0)\r\n", + "Requirement already satisfied: pexpect>4.3 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\r\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\r\n", + "Requirement already satisfied: ptyprocess>=0.5 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\r\n", + "Requirement already satisfied: wcwidth in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from prompt-toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13)\r\n", + "Requirement already satisfied: executing>=1.2.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.0.1)\r\n", + "Requirement already satisfied: asttokens>=2.1.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.1)\r\n", + "Requirement already satisfied: pure-eval in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\r\n", + "Requirement already satisfied: six>=1.12.0 in /home/engs2510/.pyenv/versions/pybop/lib/python3.11/site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "Note: you may need to restart the kernel to use updated packages.\n" ] } @@ -76,6 +107,12 @@ "cell_type": "code", "execution_count": 2, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:41.919492Z", + "iopub.status.busy": "2024-04-04T13:51:41.919370Z", + "iopub.status.idle": "2024-04-04T13:51:42.434667Z", + "shell.execute_reply": "2024-04-04T13:51:42.434365Z" + }, "id": "SQdt4brD04p1" }, "outputs": [], @@ -103,7 +140,14 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.436141Z", + "iopub.status.busy": "2024-04-04T13:51:42.435976Z", + "iopub.status.idle": "2024-04-04T13:51:42.461124Z", + "shell.execute_reply": "2024-04-04T13:51:42.460842Z" + } + }, "outputs": [], "source": [ "parameter_set = pybop.ParameterSet.pybamm(\"Chen2020\")\n", @@ -123,6 +167,12 @@ "cell_type": "code", "execution_count": 4, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.462363Z", + "iopub.status.busy": "2024-04-04T13:51:42.462272Z", + "iopub.status.idle": "2024-04-04T13:51:42.538997Z", + "shell.execute_reply": "2024-04-04T13:51:42.538715Z" + }, "id": "sBasxv8U04p3" }, "outputs": [], @@ -143,7 +193,14 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.540261Z", + "iopub.status.busy": "2024-04-04T13:51:42.540156Z", + "iopub.status.idle": "2024-04-04T13:51:42.549561Z", + "shell.execute_reply": "2024-04-04T13:51:42.549361Z" + } + }, "outputs": [], "source": [ "sigma = 0.001\n", @@ -181,6 +238,12 @@ "cell_type": "code", "execution_count": 6, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.550604Z", + "iopub.status.busy": "2024-04-04T13:51:42.550451Z", + "iopub.status.idle": "2024-04-04T13:51:42.556891Z", + "shell.execute_reply": "2024-04-04T13:51:42.556693Z" + }, "id": "zuvGHWID04p_" }, "outputs": [], @@ -209,6 +272,12 @@ "cell_type": "code", "execution_count": 7, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.557861Z", + "iopub.status.busy": "2024-04-04T13:51:42.557696Z", + "iopub.status.idle": "2024-04-04T13:51:42.559410Z", + "shell.execute_reply": "2024-04-04T13:51:42.559229Z" + }, "id": "WPCybXIJ04qA" }, "outputs": [], @@ -242,6 +311,12 @@ "cell_type": "code", "execution_count": 8, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.560345Z", + "iopub.status.busy": "2024-04-04T13:51:42.560209Z", + "iopub.status.idle": "2024-04-04T13:51:42.632449Z", + "shell.execute_reply": "2024-04-04T13:51:42.632100Z" + }, "id": "etMzRtx404qA" }, "outputs": [], @@ -267,6 +342,12 @@ "cell_type": "code", "execution_count": 9, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:42.633664Z", + "iopub.status.busy": "2024-04-04T13:51:42.633542Z", + "iopub.status.idle": "2024-04-04T13:51:51.236137Z", + "shell.execute_reply": "2024-04-04T13:51:51.235837Z" + }, "id": "-9OVt0EQ04qB" }, "outputs": [ @@ -300,6 +381,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2024-04-04T13:51:51.237578Z", + "iopub.status.busy": "2024-04-04T13:51:51.237493Z", + "iopub.status.idle": "2024-04-04T13:51:51.240692Z", + "shell.execute_reply": "2024-04-04T13:51:51.240420Z" + }, "id": "Hgz8SV4i04qC", "outputId": "e1e42ae7-5075-4c47-dd68-1b22ecc170f6" }, @@ -307,7 +394,7 @@ { "data": { "text/plain": [ - "array([0.75175662, 0.66487043])" + "array([0.75175283, 0.66487119])" ] }, "execution_count": 10, @@ -349,6 +436,12 @@ "base_uri": "https://localhost:8080/", "height": 467 }, + "execution": { + "iopub.execute_input": "2024-04-04T13:51:51.241652Z", + "iopub.status.busy": "2024-04-04T13:51:51.241508Z", + "iopub.status.idle": "2024-04-04T13:51:51.619133Z", + "shell.execute_reply": "2024-04-04T13:51:51.618816Z" + }, "id": "tJUJ80Ve04qD", "outputId": "855fbaa2-1e09-4935-eb1a-8caf7f99eb75" }, @@ -356,7 +449,7 @@ { "data": { "image/svg+xml": [ - "02004006008003.83.853.93.9544.05ReferenceModelOptimised ComparisonTime / sVoltage / V" + "02004006008003.83.853.93.9544.05ReferenceModelOptimised ComparisonTime / sVoltage / V" ] }, "metadata": {}, @@ -380,13 +473,19 @@ "cell_type": "code", "execution_count": 12, "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:51.620195Z", + "iopub.status.busy": "2024-04-04T13:51:51.620032Z", + "iopub.status.idle": "2024-04-04T13:51:51.955263Z", + "shell.execute_reply": "2024-04-04T13:51:51.955017Z" + }, "id": "N5XYkevi04qD" }, "outputs": [ { "data": { "image/svg+xml": [ - "24681012140.00050.0010.00150.0020.0025ConvergenceIterationCost" + "5101520250.00050.0010.00150.0020.0025ConvergenceIterationCost" ] }, "metadata": {}, @@ -395,7 +494,7 @@ { "data": { "image/svg+xml": [ - "05100.660.680.70.720.740.760.7805100.660.6650.670.6750.68Negative electrode active material volume fractionPositive electrode active material volume fractionParameter ConvergenceFunction CallFunction CallNegative electrode active material volume fractionPositive electrode active material volume fraction" + "051015200.660.680.70.720.740.760.78051015200.660.6650.670.6750.68Negative electrode active material volume fractionPositive electrode active material volume fractionParameter ConvergenceFunction CallFunction CallNegative electrode active material volume fractionPositive electrode active material volume fraction" ] }, "metadata": {}, @@ -419,12 +518,19 @@ { "cell_type": "code", "execution_count": 13, - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2024-04-04T13:51:51.956611Z", + "iopub.status.busy": "2024-04-04T13:51:51.956427Z", + "iopub.status.idle": "2024-04-04T13:51:56.911542Z", + "shell.execute_reply": "2024-04-04T13:51:56.911313Z" + } + }, "outputs": [ { "data": { "image/svg+xml": [ - "0.50.550.60.650.70.750.80.40.450.50.550.60.650.70246810Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" + "0.50.550.60.650.70.750.80.40.450.50.550.60.650.70246810Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" ] }, "metadata": {}, @@ -433,7 +539,7 @@ { "data": { "image/svg+xml": [ - "0.60.650.70.750.80.850.90.50.550.60.650.70.750.80.40.81.21.622.4Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" + "0.60.650.70.750.80.850.90.50.550.60.650.70.750.80.40.81.21.622.4Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" ] }, "metadata": {}, @@ -477,7 +583,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.7" + "version": "3.11.8" }, "widgets": { "application/vnd.jupyter.widget-state+json": { From c44f8293983cd3dce801015231500037d79b133e Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Fri, 5 Apr 2024 09:47:43 +0100 Subject: [PATCH 6/7] Add tests for pybamm solution failure --- tests/unit/test_models.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/unit/test_models.py b/tests/unit/test_models.py index b03442e2..fb9c9149 100644 --- a/tests/unit/test_models.py +++ b/tests/unit/test_models.py @@ -225,3 +225,31 @@ def test_basemodel(self): with pytest.raises(NotImplementedError): base.approximate_capacity(x) + + @pytest.mark.unit + def test_non_converged_solution(self): + model = pybop.lithium_ion.DFN() + parameters = [ + pybop.Parameter( + "Negative electrode active material volume fraction", + prior=pybop.Gaussian(0.2, 0.01), + ), + pybop.Parameter( + "Positive electrode active material volume fraction", + prior=pybop.Gaussian(0.2, 0.01), + ), + ] + dataset = pybop.Dataset( + { + "Time [s]": np.linspace(0, 100, 100), + "Current function [A]": np.zeros(100), + "Voltage [V]": np.zeros(100), + } + ) + + problem = pybop.FittingProblem(model, parameters=parameters, dataset=dataset) + res = problem.evaluate([-0.2, -0.2]) + res_grad = problem.evaluateS1([-0.2, -0.2]) + + assert np.isinf(res).any() + assert np.isinf(res_grad).any() From 8c2e0a65f69caee6ac0f9377eba5ca3b8cfb83dc Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Fri, 5 Apr 2024 17:06:37 +0100 Subject: [PATCH 7/7] Updt changelog, add spatial plots to pouch_cell notebook --- CHANGELOG.md | 1 + examples/notebooks/pouch_cell_CMAES.ipynb | 10693 ---------------- .../notebooks/pouch_cell_identification.ipynb | 2710 ++++ 3 files changed, 2711 insertions(+), 10693 deletions(-) delete mode 100644 examples/notebooks/pouch_cell_CMAES.ipynb create mode 100644 examples/notebooks/pouch_cell_identification.ipynb diff --git a/CHANGELOG.md b/CHANGELOG.md index f7d7c44a..a55914e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Features +- [#250](https://github.com/pybop-team/PyBOP/pull/250) - Adds DFN, MPM, MSMR models and moves multiple construction variables to BaseEChem. Adds exception catch on simulate & simulateS1. - [#79](https://github.com/pybop-team/PyBOP/issues/79) - Adds BPX as a dependency and imports BPX support from PyBaMM. - [#267](https://github.com/pybop-team/PyBOP/pull/267) - Add classifiers to pyproject.toml, update project.urls. - [#195](https://github.com/pybop-team/PyBOP/issues/195) - Adds the Nelder-Mead optimiser from PINTS as another option. diff --git a/examples/notebooks/pouch_cell_CMAES.ipynb b/examples/notebooks/pouch_cell_CMAES.ipynb deleted file mode 100644 index 67b2b810..00000000 --- a/examples/notebooks/pouch_cell_CMAES.ipynb +++ /dev/null @@ -1,10693 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "expmkveO04pw" - }, - "source": [ - "## Parameter Estimation with CMA-ES in PyBOP\n", - "\n", - "In this notebook, we demonstrate an example of parameter estimation for a single-particle model using the Covariance Matrix Adaptation Evolution Strategy (CMA-ES). CMA-ES is an evolutionary algorithm for difficult non-linear, non-convex optimisation problems.\n", - "\n", - "### Setting up the Environment\n", - "\n", - "Before we begin, we need to ensure that we have all the necessary tools. We will install PyBOP from its development branch and upgrade some dependencies:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "X87NUGPW04py", - "outputId": "0d785b07-7cff-4aeb-e60a-4ff5a669afbf" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: pip in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (24.0)\n", - "Requirement already satisfied: ipywidgets in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (8.1.2)\n", - "Requirement already satisfied: comm>=0.1.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (0.2.1)\n", - "Requirement already satisfied: ipython>=6.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (8.22.1)\n", - "Requirement already satisfied: traitlets>=4.3.1 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (5.14.1)\n", - "Requirement already satisfied: widgetsnbextension~=4.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (4.0.10)\n", - "Requirement already satisfied: jupyterlab-widgets~=3.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (3.0.10)\n", - "Requirement already satisfied: decorator in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n", - "Requirement already satisfied: jedi>=0.16 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\n", - "Requirement already satisfied: matplotlib-inline in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\n", - "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.43)\n", - "Requirement already satisfied: pygments>=2.4.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.17.2)\n", - "Requirement already satisfied: stack-data in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\n", - "Requirement already satisfied: pexpect>4.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\n", - "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\n", - "Requirement already satisfied: ptyprocess>=0.5 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\n", - "Requirement already satisfied: wcwidth in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from prompt-toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13)\n", - "Requirement already satisfied: executing>=1.2.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.0.1)\n", - "Requirement already satisfied: asttokens>=2.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.1)\n", - "Requirement already satisfied: pure-eval in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\n", - "Requirement already satisfied: six>=1.12.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\n", - "Note: you may need to restart the kernel to use updated packages.\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --upgrade pip ipywidgets\n", - "%pip install pybop -q" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jAvD5fk104p0" - }, - "source": [ - "### Importing Libraries\n", - "\n", - "With the environment set up, we can now import PyBOP alongside other libraries we will need:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "id": "SQdt4brD04p1" - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "import pybop" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "5XU-dMtU04p2" - }, - "source": [ - "### Generate Synthetic Data\n", - "\n", - "To demonstrate parameter estimation, we first need some data. We will generate synthetic data using the PyBOP forward model, which requires defining a parameter set and the model itself.\n", - "\n", - "#### Defining Parameters and Model\n", - "\n", - "We start by creating an example parameter set and then instantiate the single-particle model (SPM):" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "parameter_set = pybop.ParameterSet.pybamm(\"Marquis2019\")\n", - "parameter_set.update(\n", - " {\n", - " \"Negative electrode active material volume fraction\": 0.495,\n", - " \"Positive electrode active material volume fraction\": 0.612,\n", - " }\n", - ")\n", - "model = pybop.lithium_ion.SPM(\n", - " parameter_set=parameter_set,\n", - " options={\"current collector\": \"potential pair\", \"dimensionality\": 2},\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Simulating Forward Model\n", - "\n", - "We can then simulate the model using the `predict` method, with a default constant current to generate voltage data." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "id": "sBasxv8U04p3" - }, - "outputs": [], - "source": [ - "t_eval = np.arange(0, 900, 2)\n", - "values = model.predict(t_eval=t_eval)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Adding Noise to Voltage Data\n", - "\n", - "To make the parameter estimation more realistic, we add Gaussian noise to the data." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "sigma = 0.001\n", - "corrupt_values = values[\"Voltage [V]\"].data + np.random.normal(0, sigma, len(t_eval))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "X8-tubYY04p_" - }, - "source": [ - "## Identify the Parameters" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "PQqhvSZN04p_" - }, - "source": [ - "We will now set up the parameter estimation process by defining the datasets for optimisation and selecting the model parameters we wish to estimate." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Creating Optimisation Dataset\n", - "\n", - "The dataset for optimisation is composed of time, current, and the noisy voltage data:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "id": "zuvGHWID04p_" - }, - "outputs": [], - "source": [ - "dataset = pybop.Dataset(\n", - " {\n", - " \"Time [s]\": t_eval,\n", - " \"Current function [A]\": values[\"Current [A]\"].data,\n", - " \"Voltage [V]\": corrupt_values,\n", - " }\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ffS3CF_704qA" - }, - "source": [ - "### Defining Parameters to Estimate\n", - "\n", - "We select the parameters for estimation and set up their prior distributions and bounds:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "id": "WPCybXIJ04qA" - }, - "outputs": [], - "source": [ - "parameters = [\n", - " pybop.Parameter(\n", - " \"Negative electrode active material volume fraction\",\n", - " prior=pybop.Gaussian(0.7, 0.05),\n", - " bounds=[0.45, 0.9],\n", - " ),\n", - " pybop.Parameter(\n", - " \"Positive electrode active material volume fraction\",\n", - " prior=pybop.Gaussian(0.58, 0.05),\n", - " bounds=[0.5, 0.8],\n", - " ),\n", - "]" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "n4OHa-aF04qA" - }, - "source": [ - "### Setting up the Optimisation Problem\n", - "\n", - "With the datasets and parameters defined, we can set up the optimisation problem, its cost function, and the optimiser." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "id": "etMzRtx404qA" - }, - "outputs": [], - "source": [ - "problem = pybop.FittingProblem(model, parameters, dataset)\n", - "cost = pybop.SumSquaredError(problem)\n", - "optim = pybop.Optimisation(cost, optimiser=pybop.CMAES)\n", - "optim.set_max_iterations(30)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "caprp-bV04qB" - }, - "source": [ - "### Running the Optimisation\n", - "\n", - "We proceed to run the CMA-ES optimisation algorithm to estimate the parameters:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "id": "-9OVt0EQ04qB" - }, - "outputs": [], - "source": [ - "x, final_cost = optim.run()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "-4pZsDmS04qC" - }, - "source": [ - "### Viewing the Estimated Parameters\n", - "\n", - "After the optimisation, we can examine the estimated parameter values:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "Hgz8SV4i04qC", - "outputId": "e1e42ae7-5075-4c47-dd68-1b22ecc170f6" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0.497269 , 0.61189681])" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x # This will output the estimated parameters" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "KxKURtH704qC" - }, - "source": [ - "## Plotting and Visualisation\n", - "\n", - "PyBOP provides various plotting utilities to visualise the results of the optimisation." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "-cWCOiqR04qC" - }, - "source": [ - "### Comparing System Response\n", - "\n", - "We can quickly plot the system's response using the estimated parameters compared to the target:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 467 - }, - "id": "tJUJ80Ve04qD", - "outputId": "855fbaa2-1e09-4935-eb1a-8caf7f99eb75" - }, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "fill": "toself", - "fillcolor": "rgba(255,229,204,0.8)", - "hoverinfo": "skip", - "line": { - "color": "rgba(255,255,255,0)" - }, - "showlegend": false, - "type": "scatter", - "x": [ - 0, - 2, - 4, - 6, - 8, - 10, - 12, - 14, - 16, - 18, - 20, - 22, - 24, - 26, - 28, - 30, - 32, - 34, - 36, - 38, - 40, - 42, - 44, - 46, - 48, - 50, - 52, - 54, - 56, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 80, - 82, - 84, - 86, - 88, - 90, - 92, - 94, - 96, - 98, - 100, - 102, - 104, - 106, - 108, - 110, - 112, - 114, - 116, - 118, - 120, - 122, - 124, - 126, - 128, - 130, - 132, - 134, - 136, - 138, - 140, - 142, - 144, - 146, - 148, - 150, - 152, - 154, - 156, - 158, - 160, - 162, - 164, - 166, - 168, - 170, - 172, - 174, - 176, - 178, - 180, - 182, - 184, - 186, - 188, - 190, - 192, - 194, - 196, - 198, - 200, - 202, - 204, - 206, - 208, - 210, - 212, - 214, - 216, - 218, - 220, - 222, - 224, - 226, - 228, - 230, - 232, - 234, - 236, - 238, - 240, - 242, - 244, - 246, - 248, - 250, - 252, - 254, - 256, - 258, - 260, - 262, - 264, - 266, - 268, - 270, - 272, - 274, - 276, - 278, - 280, - 282, - 284, - 286, - 288, - 290, - 292, - 294, - 296, - 298, - 300, - 302, - 304, - 306, - 308, - 310, - 312, - 314, - 316, - 318, - 320, - 322, - 324, - 326, - 328, - 330, - 332, - 334, - 336, - 338, - 340, - 342, - 344, - 346, - 348, - 350, - 352, - 354, - 356, - 358, - 360, - 362, - 364, - 366, - 368, - 370, - 372, - 374, - 376, - 378, - 380, - 382, - 384, - 386, - 388, - 390, - 392, - 394, - 396, - 398, - 400, - 402, - 404, - 406, - 408, - 410, - 412, - 414, - 416, - 418, - 420, - 422, - 424, - 426, - 428, - 430, - 432, - 434, - 436, - 438, - 440, - 442, - 444, - 446, - 448, - 450, - 452, - 454, - 456, - 458, - 460, - 462, - 464, - 466, - 468, - 470, - 472, - 474, - 476, - 478, - 480, - 482, - 484, - 486, - 488, - 490, - 492, - 494, - 496, - 498, - 500, - 502, - 504, - 506, - 508, - 510, - 512, - 514, - 516, - 518, - 520, - 522, - 524, - 526, - 528, - 530, - 532, - 534, - 536, - 538, - 540, - 542, - 544, - 546, - 548, - 550, - 552, - 554, - 556, - 558, - 560, - 562, - 564, - 566, - 568, - 570, - 572, - 574, - 576, - 578, - 580, - 582, - 584, - 586, - 588, - 590, - 592, - 594, - 596, - 598, - 600, - 602, - 604, - 606, - 608, - 610, - 612, - 614, - 616, - 618, - 620, - 622, - 624, - 626, - 628, - 630, - 632, - 634, - 636, - 638, - 640, - 642, - 644, - 646, - 648, - 650, - 652, - 654, - 656, - 658, - 660, - 662, - 664, - 666, - 668, - 670, - 672, - 674, - 676, - 678, - 680, - 682, - 684, - 686, - 688, - 690, - 692, - 694, - 696, - 698, - 700, - 702, - 704, - 706, - 708, - 710, - 712, - 714, - 716, - 718, - 720, - 722, - 724, - 726, - 728, - 730, - 732, - 734, - 736, - 738, - 740, - 742, - 744, - 746, - 748, - 750, - 752, - 754, - 756, - 758, - 760, - 762, - 764, - 766, - 768, - 770, - 772, - 774, - 776, - 778, - 780, - 782, - 784, - 786, - 788, - 790, - 792, - 794, - 796, - 798, - 800, - 802, - 804, - 806, - 808, - 810, - 812, - 814, - 816, - 818, - 820, - 822, - 824, - 826, - 828, - 830, - 832, - 834, - 836, - 838, - 840, - 842, - 844, - 846, - 848, - 850, - 852, - 854, - 856, - 858, - 860, - 862, - 864, - 866, - 868, - 870, - 872, - 874, - 876, - 878, - 880, - 882, - 884, - 886, - 888, - 890, - 892, - 894, - 896, - 898, - 898, - 896, - 894, - 892, - 890, - 888, - 886, - 884, - 882, - 880, - 878, - 876, - 874, - 872, - 870, - 868, - 866, - 864, - 862, - 860, - 858, - 856, - 854, - 852, - 850, - 848, - 846, - 844, - 842, - 840, - 838, - 836, - 834, - 832, - 830, - 828, - 826, - 824, - 822, - 820, - 818, - 816, - 814, - 812, - 810, - 808, - 806, - 804, - 802, - 800, - 798, - 796, - 794, - 792, - 790, - 788, - 786, - 784, - 782, - 780, - 778, - 776, - 774, - 772, - 770, - 768, - 766, - 764, - 762, - 760, - 758, - 756, - 754, - 752, - 750, - 748, - 746, - 744, - 742, - 740, - 738, - 736, - 734, - 732, - 730, - 728, - 726, - 724, - 722, - 720, - 718, - 716, - 714, - 712, - 710, - 708, - 706, - 704, - 702, - 700, - 698, - 696, - 694, - 692, - 690, - 688, - 686, - 684, - 682, - 680, - 678, - 676, - 674, - 672, - 670, - 668, - 666, - 664, - 662, - 660, - 658, - 656, - 654, - 652, - 650, - 648, - 646, - 644, - 642, - 640, - 638, - 636, - 634, - 632, - 630, - 628, - 626, - 624, - 622, - 620, - 618, - 616, - 614, - 612, - 610, - 608, - 606, - 604, - 602, - 600, - 598, - 596, - 594, - 592, - 590, - 588, - 586, - 584, - 582, - 580, - 578, - 576, - 574, - 572, - 570, - 568, - 566, - 564, - 562, - 560, - 558, - 556, - 554, - 552, - 550, - 548, - 546, - 544, - 542, - 540, - 538, - 536, - 534, - 532, - 530, - 528, - 526, - 524, - 522, - 520, - 518, - 516, - 514, - 512, - 510, - 508, - 506, - 504, - 502, - 500, - 498, - 496, - 494, - 492, - 490, - 488, - 486, - 484, - 482, - 480, - 478, - 476, - 474, - 472, - 470, - 468, - 466, - 464, - 462, - 460, - 458, - 456, - 454, - 452, - 450, - 448, - 446, - 444, - 442, - 440, - 438, - 436, - 434, - 432, - 430, - 428, - 426, - 424, - 422, - 420, - 418, - 416, - 414, - 412, - 410, - 408, - 406, - 404, - 402, - 400, - 398, - 396, - 394, - 392, - 390, - 388, - 386, - 384, - 382, - 380, - 378, - 376, - 374, - 372, - 370, - 368, - 366, - 364, - 362, - 360, - 358, - 356, - 354, - 352, - 350, - 348, - 346, - 344, - 342, - 340, - 338, - 336, - 334, - 332, - 330, - 328, - 326, - 324, - 322, - 320, - 318, - 316, - 314, - 312, - 310, - 308, - 306, - 304, - 302, - 300, - 298, - 296, - 294, - 292, - 290, - 288, - 286, - 284, - 282, - 280, - 278, - 276, - 274, - 272, - 270, - 268, - 266, - 264, - 262, - 260, - 258, - 256, - 254, - 252, - 250, - 248, - 246, - 244, - 242, - 240, - 238, - 236, - 234, - 232, - 230, - 228, - 226, - 224, - 222, - 220, - 218, - 216, - 214, - 212, - 210, - 208, - 206, - 204, - 202, - 200, - 198, - 196, - 194, - 192, - 190, - 188, - 186, - 184, - 182, - 180, - 178, - 176, - 174, - 172, - 170, - 168, - 166, - 164, - 162, - 160, - 158, - 156, - 154, - 152, - 150, - 148, - 146, - 144, - 142, - 140, - 138, - 136, - 134, - 132, - 130, - 128, - 126, - 124, - 122, - 120, - 118, - 116, - 114, - 112, - 110, - 108, - 106, - 104, - 102, - 100, - 98, - 96, - 94, - 92, - 90, - 88, - 86, - 84, - 82, - 80, - 78, - 76, - 74, - 72, - 70, - 68, - 66, - 64, - 62, - 60, - 58, - 56, - 54, - 52, - 50, - 48, - 46, - 44, - 42, - 40, - 38, - 36, - 34, - 32, - 30, - 28, - 26, - 24, - 22, - 20, - 18, - 16, - 14, - 12, - 10, - 8, - 6, - 4, - 2, - 0 - ], - "y": [ - 3.787750926011304, - 3.786301999306898, - 3.785426001407571, - 3.7847577435613697, - 3.784187415777912, - 3.7836837723080783, - 3.783226031327964, - 3.7828009608308646, - 3.7824010508874553, - 3.782021654134181, - 3.781659307103322, - 3.781311349843796, - 3.780975729355, - 3.7806507398408034, - 3.780335149686653, - 3.780028081268729, - 3.779728450941728, - 3.779435575596694, - 3.7791487743557, - 3.778867478282105, - 3.778591201732383, - 3.7783195236335856, - 3.778052085427488, - 3.7777885360587673, - 3.777528607307424, - 3.777272064358975, - 3.777018682811441, - 3.7767683188212686, - 3.7765208191147046, - 3.776275886267083, - 3.776033441698319, - 3.775793349665902, - 3.7755554409959857, - 3.77531961856934, - 3.775085772834123, - 3.774853781085577, - 3.774623560124625, - 3.77439502357368, - 3.7741680819430425, - 3.773942668876987, - 3.773718716378263, - 3.77349614791821, - 3.77327491219842, - 3.773054954425563, - 3.772836214049802, - 3.7726186440417866, - 3.772402196824873, - 3.77218682900694, - 3.771972496660773, - 3.771759158018236, - 3.771546772283049, - 3.77133529921012, - 3.7711247052008425, - 3.7709149669735673, - 3.7707060435548048, - 3.770497902382348, - 3.770290511461573, - 3.7700838391466, - 3.769877866918579, - 3.7696725900293138, - 3.769467972540971, - 3.769263994396155, - 3.769060637081992, - 3.7688578835929576, - 3.768655715303635, - 3.768454112762925, - 3.7682530643762657, - 3.7680525564549088, - 3.767852576237788, - 3.767653111827306, - 3.7674541474298167, - 3.767255665716844, - 3.767057658578208, - 3.7668601138329487, - 3.7666630193508217, - 3.7664663629581465, - 3.766270121715636, - 3.766074269250938, - 3.765878795519301, - 3.765683680516778, - 3.765488902627952, - 3.765294438457864, - 3.7651003340916542, - 3.764906642757816, - 3.764713319229625, - 3.764520373456769, - 3.764327819627891, - 3.764135676472882, - 3.763943816951611, - 3.763752138187668, - 3.7635607195304224, - 3.7633695393811273, - 3.763178574638121, - 3.762987800693483, - 3.762797341623003, - 3.7626072738731766, - 3.7624175219285902, - 3.7622281029840634, - 3.762039037074706, - 3.761850347075264, - 3.7616618779002184, - 3.761473568377172, - 3.761285510792193, - 3.761097698461634, - 3.7609101247175194, - 3.760722782907586, - 3.760535692729025, - 3.76034885516384, - 3.760162253468161, - 3.759975884172153, - 3.759789743817522, - 3.759603828957529, - 3.759418144548624, - 3.759232688790352, - 3.759047455439714, - 3.758862442018661, - 3.7586776460560616, - 3.758493065087727, - 3.758308709274827, - 3.7581245775673713, - 3.757940663872767, - 3.757756967099421, - 3.757573486159892, - 3.757390219970895, - 3.757207164427895, - 3.757024318337965, - 3.7568416813614194, - 3.756659252108349, - 3.756477029191177, - 3.756295011224676, - 3.756113203645839, - 3.7559316058968406, - 3.7557502160909824, - 3.755569034452644, - 3.75538806135016, - 3.755207297295585, - 3.755026734454914, - 3.754846373191057, - 3.754666214821028, - 3.754486258511192, - 3.7543065033991208, - 3.754126948593328, - 3.7539475983819086, - 3.7537684517425713, - 3.753589507607512, - 3.753410766096093, - 3.753232227398166, - 3.75305389177389, - 3.7528757565860618, - 3.7526978224596705, - 3.752520089842336, - 3.752342558659292, - 3.7521652288509872, - 3.751988100372953, - 3.751811173195672, - 3.7516344473044354, - 3.751457922699216, - 3.751281599394528, - 3.751105477419294, - 3.750929556816709, - 3.750753838529552, - 3.7505783222352225, - 3.7504030079599295, - 3.750227895868342, - 3.7500529861429097, - 3.749878278983724, - 3.749703774608389, - 3.7495294732518856, - 3.749355375166445, - 3.7491814806214063, - 3.749007789903097, - 3.748834303314682, - 3.7486610175679753, - 3.7484879350991447, - 3.748315056377412, - 3.748142381596755, - 3.7479699109587, - 3.7477976446722474, - 3.747625582953817, - 3.74745372602717, - 3.7472820741233415, - 3.747110627480578, - 3.7469393863442697, - 3.7467683509668746, - 3.7465975216078697, - 3.746426898533662, - 3.746256482017542, - 3.7460862710554017, - 3.745916266089548, - 3.745746467984679, - 3.745576876982134, - 3.7454074933274057, - 3.745238317270106, - 3.745069349063914, - 3.744900588966524, - 3.744732037239605, - 3.744563694148747, - 3.74439555996342, - 3.74422763495692, - 3.744059919406331, - 3.7438924135924703, - 3.743725117799845, - 3.743558031046695, - 3.743391152163387, - 3.7432244832670474, - 3.743058024565298, - 3.7428917762657585, - 3.74272573857601, - 3.7425599117035886, - 3.7423942958559513, - 3.742228891240466, - 3.742063698064388, - 3.7418987165348336, - 3.7417339468587736, - 3.741569389243, - 3.741405043894112, - 3.7412409110185, - 3.741076990665057, - 3.7409132815330337, - 3.740749785070971, - 3.740586501442422, - 3.740423430809088, - 3.740260573330805, - 3.7400979291655423, - 3.739935498469392, - 3.7397732813965607, - 3.739611278099355, - 3.739449488728192, - 3.739287913431566, - 3.73912655235606, - 3.738965405646329, - 3.7388044734450903, - 3.738643755893126, - 3.7384832521396305, - 3.738322962843908, - 3.7381628882993105, - 3.738003028609602, - 3.7378433838755383, - 3.737683954194879, - 3.7375247396623816, - 3.737365740369799, - 3.737206956405892, - 3.737048387856413, - 3.736890034804118, - 3.7367318973287658, - 3.736573975507111, - 3.73641626941291, - 3.736258779116916, - 3.7361015045693406, - 3.735944445817772, - 3.735787603003412, - 3.7356309761796567, - 3.7354745653967, - 3.735318370701528, - 3.7351623921379256, - 3.735006629746465, - 3.734851083564513, - 3.734695753626224, - 3.7345406399625376, - 3.7343857426011793, - 3.7342310615666534, - 3.734076596880241, - 3.7339223485599966, - 3.7337683164763575, - 3.7336145003205017, - 3.733460900405313, - 3.733307516714856, - 3.7331543492284744, - 3.733001397920736, - 3.7328486627613886, - 3.732696143715306, - 3.732543840742437, - 3.732391753797759, - 3.7322398828312178, - 3.732088227787684, - 3.731936788606895, - 3.731785565223408, - 3.7316345575665384, - 3.731483765565371, - 3.731333189967136, - 3.731182830080514, - 3.731032685844091, - 3.730882757193137, - 3.730733044059636, - 3.7305835463722863, - 3.730434264056512, - 3.730285197034479, - 3.730136345225095, - 3.7299877085440274, - 3.729839286903704, - 3.7296910802133247, - 3.7295430883788665, - 3.729395311303086, - 3.7292477488855327, - 3.729100400501787, - 3.728953266207192, - 3.728806346030007, - 3.728659639828628, - 3.7285131474562743, - 3.728366868760941, - 3.728220803828876, - 3.728074952429927, - 3.7279293138465848, - 3.7277838895378226, - 3.727638676240453, - 3.7274936766132543, - 3.727348890810023, - 3.727204318642532, - 3.727059955997512, - 3.7269158056658296, - 3.726771868376103, - 3.726628143920378, - 3.726484628777243, - 3.726341324699455, - 3.7261982328022496, - 3.726055352857337, - 3.725912683026161, - 3.725770222781422, - 3.725627972667779, - 3.7254859324363103, - 3.725344101832736, - 3.725202480597384, - 3.725061068465126, - 3.724919865165334, - 3.724778870684526, - 3.724638084937551, - 3.724497507321541, - 3.7243571375433415, - 3.724216975304014, - 3.7240770202987674, - 3.723937272216887, - 3.7237977307416754, - 3.723658395657975, - 3.723519266953056, - 3.7233803439776496, - 3.7232416263902377, - 3.7231031138429422, - 3.722964805981445, - 3.722826702444896, - 3.722688802865836, - 3.7225511069050294, - 3.722413615094328, - 3.7222763263085663, - 3.722139240152416, - 3.7220023562234426, - 3.7218656741120153, - 3.7217291934011927, - 3.7215929136666226, - 3.721456834476432, - 3.721320955391103, - 3.721185275963373, - 3.721049795738105, - 3.7209145142521662, - 3.720779431034304, - 3.7206445456050177, - 3.7205098574764257, - 3.720375366152126, - 3.720241072948628, - 3.72010697675356, - 3.7199730761441367, - 3.719839370587969, - 3.719705859543406, - 3.7195725424593697, - 3.719439418775192, - 3.719306487920451, - 3.719173749314799, - 3.719041202367785, - 3.718908846478678, - 3.7187766810362786, - 3.718644705418736, - 3.7185129189933495, - 3.718381321116371, - 3.718249914285641, - 3.7181186954103898, - 3.7179876635208977, - 3.717856817926177, - 3.7177261579230954, - 3.717595682796146, - 3.7174653918172087, - 3.717335284245311, - 3.717205359326379, - 3.717075616292986, - 3.7169460543640898, - 3.716816672744766, - 3.716687470625941, - 3.71655844718411, - 3.7164296023894687, - 3.7163009390579145, - 3.716172452496053, - 3.716044141818742, - 3.715916006124897, - 3.7157880444971454, - 3.715660256001516, - 3.715532639687096, - 3.7154051945856863, - 3.715277919711449, - 3.7151508140605425, - 3.715023876610762, - 3.714897106321152, - 3.714770502131621, - 3.7146440629625537, - 3.714517790364975, - 3.714391684828545, - 3.714265741779851, - 3.714139960055861, - 3.714014338471877, - 3.713888875821063, - 3.713763570874007, - 3.713638422378221, - 3.713513429057675, - 3.713388589612293, - 3.713263902717445, - 3.7131393670234343, - 3.7130149811549646, - 3.712890743710599, - 3.712766653262211, - 3.712642712886112, - 3.712518919887531, - 3.7123952708544823, - 3.71227176433179, - 3.712148398834517, - 3.712025172847344, - 3.7119020848239312, - 3.71177913318624, - 3.711656316323881, - 3.711533632593417, - 3.7114110803176623, - 3.71128865778497, - 3.7111663632485, - 3.71104419492547, - 3.710922150996395, - 3.710800229604314, - 3.71067842885399, - 3.710556746811098, - 3.7104351815014143, - 3.71031373090995, - 3.710192392980111, - 3.710071165612806, - 3.709950046665556, - 3.70982903395159, - 3.7097081252388944, - 3.7095873182492825, - 3.7094666106574152, - 3.7093460000898233, - 3.7092254841238863, - 3.709105062153776, - 3.708984738845664, - 3.708864503764576, - 3.708744354327167, - 3.7086242878956046, - 3.706635437493313, - 3.7067555039248754, - 3.706875653362285, - 3.706995888443372, - 3.707116211751485, - 3.7072366337215943, - 3.707357149687532, - 3.707477760255124, - 3.707598467846991, - 3.707719274836603, - 3.7078401835492985, - 3.707961196263264, - 3.708082315210514, - 3.7082035425778193, - 3.7083248805076585, - 3.7084463310991223, - 3.7085678964088062, - 3.7086895784516978, - 3.7088113792020225, - 3.7089333005941034, - 3.709055344523178, - 3.709177512846209, - 3.7092998073826786, - 3.709422229915371, - 3.7095447821911254, - 3.709667465921589, - 3.709790282783948, - 3.70991323442164, - 3.710036322445053, - 3.710159548432225, - 3.7102829139294986, - 3.710406420452191, - 3.7105300694852392, - 3.71065386248382, - 3.710777802859919, - 3.710901893308307, - 3.711026130752673, - 3.7111505166211423, - 3.7112750523151536, - 3.711399739210001, - 3.711524578655384, - 3.7116495719759297, - 3.7117747204717153, - 3.711900025418772, - 3.712025488069585, - 3.7121511096535698, - 3.712276891377559, - 3.7124028344262534, - 3.712528939962683, - 3.7126552125602617, - 3.712781651729329, - 3.71290825591886, - 3.7130350262084706, - 3.713161963658251, - 3.7132890693091576, - 3.713416344183395, - 3.7135437892848047, - 3.713671405599224, - 3.713799194094854, - 3.7139271557226055, - 3.714055291416451, - 3.714183602093761, - 3.714312088655623, - 3.714440751987177, - 3.714569596781818, - 3.7146986202236496, - 3.714827822342474, - 3.7149572039617977, - 3.7150867658906943, - 3.715216508924088, - 3.715346433843019, - 3.715476541414917, - 3.7156068323938545, - 3.715737307520804, - 3.7158679675238857, - 3.715998813118606, - 3.7161298450080977, - 3.7162610638833495, - 3.716392470714079, - 3.716524068591058, - 3.716655855016445, - 3.716787830633987, - 3.7169199960763866, - 3.7170523519654934, - 3.717184898912507, - 3.71731763751816, - 3.7174505683729, - 3.7175836920570777, - 3.7177170091411145, - 3.7178505201856775, - 3.717984225741845, - 3.7181181263512686, - 3.7182522225463366, - 3.7183865157498346, - 3.7185210070741337, - 3.718655695202726, - 3.718790580632012, - 3.718925663849874, - 3.7190609453358134, - 3.7191964255610817, - 3.719332104988812, - 3.71946798407414, - 3.719604063264331, - 3.719740342998901, - 3.719876823709724, - 3.720013505821151, - 3.720150389750124, - 3.720287475906275, - 3.720424764692036, - 3.720562256502738, - 3.720699952463544, - 3.720837852042605, - 3.720975955579153, - 3.721114263440651, - 3.721252775987946, - 3.721391493575358, - 3.721530416550764, - 3.721669545255683, - 3.721808880339384, - 3.721948421814596, - 3.722088169896476, - 3.722228124901723, - 3.72236828714105, - 3.7225086569192496, - 3.7226492345352593, - 3.7227900202822344, - 3.7229310147630423, - 3.7230722180628346, - 3.723213630195092, - 3.723355251430444, - 3.7234970820340183, - 3.723639122265488, - 3.7237813723791304, - 3.7239238326238695, - 3.724066502455045, - 3.724209382399958, - 3.724352474297164, - 3.7244957783749513, - 3.7246392935180865, - 3.7247830179738113, - 3.724926955263538, - 3.725071105595221, - 3.7252154682402407, - 3.725360040407731, - 3.7255048262109622, - 3.7256498258381616, - 3.725795039135531, - 3.725940463444293, - 3.7260861020276352, - 3.726231953426584, - 3.7263780183586497, - 3.726524297053983, - 3.726670789426336, - 3.7268174956277154, - 3.726964415804901, - 3.727111550099496, - 3.727258898483241, - 3.727406460900795, - 3.727554237976575, - 3.727702229811033, - 3.727850436501413, - 3.727998858141736, - 3.728147494822804, - 3.7282963466321872, - 3.72844541365422, - 3.7285946959699943, - 3.728744193657344, - 3.7288939067908458, - 3.729043835441799, - 3.7291939796782225, - 3.729344339564844, - 3.7294949151630794, - 3.729645707164247, - 3.729796714821117, - 3.729947938204604, - 3.730099377385392, - 3.730251032428926, - 3.730402903395467, - 3.7305549903401456, - 3.7307072933130145, - 3.730859812359097, - 3.731012547518444, - 3.731165498826183, - 3.731318666312564, - 3.7314720500030214, - 3.73162564991821, - 3.731779466074066, - 3.731933498157705, - 3.7320877464779496, - 3.732242211164362, - 3.732396892198888, - 3.732551789560246, - 3.732706903223933, - 3.732862233162221, - 3.7330177793441734, - 3.733173541735634, - 3.733329520299236, - 3.733485714994409, - 3.733642125777365, - 3.73379875260112, - 3.73395559541548, - 3.734112654167049, - 3.7342699287146246, - 3.7344274190106184, - 3.73458512510482, - 3.734743046926474, - 3.7349011844018265, - 3.735059537454122, - 3.7352181060036, - 3.7353768899675073, - 3.73553588926009, - 3.735695103792587, - 3.7358545334732463, - 3.73601417820731, - 3.736174037897019, - 3.736334112441616, - 3.736494401737339, - 3.7366549054908345, - 3.736815623042799, - 3.7369765552440377, - 3.737137701953768, - 3.7372990630292744, - 3.7374606383259, - 3.737622427697064, - 3.737784430994269, - 3.737946648067101, - 3.738109078763251, - 3.7382717229285136, - 3.738434580406796, - 3.73859765104013, - 3.738760934668679, - 3.738924431130742, - 3.7390881402627656, - 3.739252060616209, - 3.73941619349182, - 3.739580538840708, - 3.739745096456482, - 3.739909866132542, - 3.740074847662096, - 3.740240040838174, - 3.74040544545366, - 3.740571061301297, - 3.740736888173718, - 3.740902925863467, - 3.741069174163006, - 3.741235632864756, - 3.741402301761096, - 3.741569180644403, - 3.741736267397553, - 3.7419035631901783, - 3.742071069004039, - 3.7422387845546288, - 3.742406709561128, - 3.742574843746455, - 3.7427431868373136, - 3.7429117385642328, - 3.743080498661623, - 3.7432494668678142, - 3.7434186429251137, - 3.743588026579842, - 3.743757617582387, - 3.743927415687256, - 3.7440974206531097, - 3.7442676316152506, - 3.7444380481313706, - 3.7446086712055777, - 3.744779500564583, - 3.7449505359419777, - 3.7451217770782863, - 3.74529322372105, - 3.7454648756248785, - 3.7456367325515254, - 3.745808794269956, - 3.745981060556408, - 3.746153531194464, - 3.74632620597512, - 3.746499084696853, - 3.746672167165684, - 3.7468454529123902, - 3.747018939500805, - 3.747192630219115, - 3.7473665247641534, - 3.747540622849594, - 3.7477149242060976, - 3.747889428581432, - 3.748064135740618, - 3.7482390454660504, - 3.748414157557638, - 3.748589471832931, - 3.748764988127261, - 3.748940706414417, - 3.7491166270170018, - 3.7492927489922367, - 3.749469072296925, - 3.749645596902144, - 3.749822322793381, - 3.749999249970662, - 3.750176378448696, - 3.750353708257, - 3.7505312394400447, - 3.750708972057379, - 3.7508869061837697, - 3.7510650413715982, - 3.751243376995875, - 3.751421915693801, - 3.7516006572052207, - 3.75177960134028, - 3.751958747979617, - 3.752138098191036, - 3.752317652996829, - 3.7524974081089, - 3.752677364418736, - 3.7528575227887657, - 3.7530378840526226, - 3.7532184468932934, - 3.753399210947869, - 3.753580184050352, - 3.753761365688691, - 3.753942755494549, - 3.7541243532435473, - 3.754306160822384, - 3.7544881787888857, - 3.754670401706057, - 3.754852830959128, - 3.7550354679356728, - 3.755218314025603, - 3.7554013695686033, - 3.7555846357576, - 3.7557681166971295, - 3.755951813470475, - 3.75613572716508, - 3.7563198588725353, - 3.7565042146854353, - 3.75668879565377, - 3.756873591616369, - 3.7570586050374226, - 3.75724383838806, - 3.757429294146332, - 3.7576149785552375, - 3.7578008934152303, - 3.7579870337698615, - 3.758173403065869, - 3.758360004761548, - 3.7585468423267336, - 3.758733932505294, - 3.758921274315228, - 3.759108848059343, - 3.7592966603899014, - 3.759484717974881, - 3.759673027497927, - 3.759861496672973, - 3.7600501866724145, - 3.760239252581772, - 3.7604286715262982, - 3.760618423470885, - 3.760808491220712, - 3.7609989502911914, - 3.761189724235829, - 3.761380688978836, - 3.761571869128131, - 3.761763287785376, - 3.761954966549319, - 3.7621468260705906, - 3.7623389692256, - 3.7625315230544776, - 3.762724468827333, - 3.762917792355524, - 3.763111483689363, - 3.763305588055572, - 3.7635000522256608, - 3.7636948301144866, - 3.76388994511701, - 3.7640854188486466, - 3.7642812713133447, - 3.764477512555855, - 3.7646741689485297, - 3.764871263430657, - 3.7650688081759167, - 3.7652668153145528, - 3.765465297027525, - 3.765664261425014, - 3.765863725835496, - 3.766063706052617, - 3.766264213973974, - 3.766465262360633, - 3.7666668649013433, - 3.766869033190666, - 3.767071786679701, - 3.767275143993863, - 3.7674791221386794, - 3.7676837396270217, - 3.7678890165162873, - 3.7680949887443087, - 3.7683016610592817, - 3.7685090519800566, - 3.768717193152513, - 3.768926116571276, - 3.769135854798551, - 3.7693464488078288, - 3.769557921880757, - 3.769770307615945, - 3.7699836462584817, - 3.770197978604648, - 3.7704133464225817, - 3.770629793639495, - 3.770847363647511, - 3.771066104023272, - 3.771286061796129, - 3.7715072975159183, - 3.771729865975971, - 3.771953818474696, - 3.772179231540751, - 3.772406173171389, - 3.772634709722333, - 3.7728649306832858, - 3.773096922431832, - 3.7733307681670487, - 3.7735665905936937, - 3.773804499263611, - 3.774044591296027, - 3.7742870358647913, - 3.774531968712413, - 3.774779468418977, - 3.7750298324091496, - 3.775283213956683, - 3.775539756905133, - 3.775799685656476, - 3.776063235025197, - 3.776330673231294, - 3.7766023513300913, - 3.7768786278798134, - 3.777159923953408, - 3.7774467251944026, - 3.777739600539437, - 3.778039230866437, - 3.7783462992843617, - 3.778661889438512, - 3.778986878952709, - 3.7793224994415047, - 3.779670456701031, - 3.780032803731889, - 3.780412200485164, - 3.780812110428573, - 3.7812371809256726, - 3.781694921905787, - 3.78219856537562, - 3.782768893159078, - 3.78343715100528, - 3.7843131489046065, - 3.785762075609013 - ] - }, - { - "mode": "markers", - "name": "Target", - "type": "scatter", - "x": [ - 0, - 2, - 4, - 6, - 8, - 10, - 12, - 14, - 16, - 18, - 20, - 22, - 24, - 26, - 28, - 30, - 32, - 34, - 36, - 38, - 40, - 42, - 44, - 46, - 48, - 50, - 52, - 54, - 56, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 80, - 82, - 84, - 86, - 88, - 90, - 92, - 94, - 96, - 98, - 100, - 102, - 104, - 106, - 108, - 110, - 112, - 114, - 116, - 118, - 120, - 122, - 124, - 126, - 128, - 130, - 132, - 134, - 136, - 138, - 140, - 142, - 144, - 146, - 148, - 150, - 152, - 154, - 156, - 158, - 160, - 162, - 164, - 166, - 168, - 170, - 172, - 174, - 176, - 178, - 180, - 182, - 184, - 186, - 188, - 190, - 192, - 194, - 196, - 198, - 200, - 202, - 204, - 206, - 208, - 210, - 212, - 214, - 216, - 218, - 220, - 222, - 224, - 226, - 228, - 230, - 232, - 234, - 236, - 238, - 240, - 242, - 244, - 246, - 248, - 250, - 252, - 254, - 256, - 258, - 260, - 262, - 264, - 266, - 268, - 270, - 272, - 274, - 276, - 278, - 280, - 282, - 284, - 286, - 288, - 290, - 292, - 294, - 296, - 298, - 300, - 302, - 304, - 306, - 308, - 310, - 312, - 314, - 316, - 318, - 320, - 322, - 324, - 326, - 328, - 330, - 332, - 334, - 336, - 338, - 340, - 342, - 344, - 346, - 348, - 350, - 352, - 354, - 356, - 358, - 360, - 362, - 364, - 366, - 368, - 370, - 372, - 374, - 376, - 378, - 380, - 382, - 384, - 386, - 388, - 390, - 392, - 394, - 396, - 398, - 400, - 402, - 404, - 406, - 408, - 410, - 412, - 414, - 416, - 418, - 420, - 422, - 424, - 426, - 428, - 430, - 432, - 434, - 436, - 438, - 440, - 442, - 444, - 446, - 448, - 450, - 452, - 454, - 456, - 458, - 460, - 462, - 464, - 466, - 468, - 470, - 472, - 474, - 476, - 478, - 480, - 482, - 484, - 486, - 488, - 490, - 492, - 494, - 496, - 498, - 500, - 502, - 504, - 506, - 508, - 510, - 512, - 514, - 516, - 518, - 520, - 522, - 524, - 526, - 528, - 530, - 532, - 534, - 536, - 538, - 540, - 542, - 544, - 546, - 548, - 550, - 552, - 554, - 556, - 558, - 560, - 562, - 564, - 566, - 568, - 570, - 572, - 574, - 576, - 578, - 580, - 582, - 584, - 586, - 588, - 590, - 592, - 594, - 596, - 598, - 600, - 602, - 604, - 606, - 608, - 610, - 612, - 614, - 616, - 618, - 620, - 622, - 624, - 626, - 628, - 630, - 632, - 634, - 636, - 638, - 640, - 642, - 644, - 646, - 648, - 650, - 652, - 654, - 656, - 658, - 660, - 662, - 664, - 666, - 668, - 670, - 672, - 674, - 676, - 678, - 680, - 682, - 684, - 686, - 688, - 690, - 692, - 694, - 696, - 698, - 700, - 702, - 704, - 706, - 708, - 710, - 712, - 714, - 716, - 718, - 720, - 722, - 724, - 726, - 728, - 730, - 732, - 734, - 736, - 738, - 740, - 742, - 744, - 746, - 748, - 750, - 752, - 754, - 756, - 758, - 760, - 762, - 764, - 766, - 768, - 770, - 772, - 774, - 776, - 778, - 780, - 782, - 784, - 786, - 788, - 790, - 792, - 794, - 796, - 798, - 800, - 802, - 804, - 806, - 808, - 810, - 812, - 814, - 816, - 818, - 820, - 822, - 824, - 826, - 828, - 830, - 832, - 834, - 836, - 838, - 840, - 842, - 844, - 846, - 848, - 850, - 852, - 854, - 856, - 858, - 860, - 862, - 864, - 866, - 868, - 870, - 872, - 874, - 876, - 878, - 880, - 882, - 884, - 886, - 888, - 890, - 892, - 894, - 896, - 898 - ], - "y": [ - 3.785298913727673, - 3.78663588490789, - 3.7858396208633938, - 3.78495004287668, - 3.783774797743091, - 3.7815680150601256, - 3.7828716168644343, - 3.781794417856999, - 3.782249702115228, - 3.780445583983627, - 3.7816996125523943, - 3.778529676794219, - 3.7797601387380473, - 3.779925071933846, - 3.778196395712977, - 3.77927558277712, - 3.778255127193483, - 3.778606644858824, - 3.776384167101001, - 3.777220004972044, - 3.778710031328139, - 3.777859650205325, - 3.776490227011931, - 3.77658396026891, - 3.777690132905648, - 3.7767056098697704, - 3.775253159677761, - 3.77451208941353, - 3.776476157266451, - 3.7758237124723024, - 3.774764183396343, - 3.775929269501378, - 3.774679767099537, - 3.776083136228037, - 3.7719918725746706, - 3.7751762818110346, - 3.775447773456484, - 3.774040725796796, - 3.7722762723275176, - 3.773017659857714, - 3.7725811271344583, - 3.7732023379265303, - 3.772556707266954, - 3.771070768147396, - 3.771781265171908, - 3.77089788104808, - 3.772586507336316, - 3.7714608181046616, - 3.769867970062967, - 3.7697488093687928, - 3.770687557393728, - 3.7703631116664114, - 3.7700635063258834, - 3.7702847987959895, - 3.768788777611854, - 3.7703635435046623, - 3.7675780526577705, - 3.767229811398163, - 3.767709207642001, - 3.7699724694278545, - 3.767090833418488, - 3.769237122366605, - 3.7672917001350505, - 3.768334422969043, - 3.768025149812075, - 3.766848973620052, - 3.767202701890223, - 3.764986863607765, - 3.766512569663105, - 3.766860491186979, - 3.767270311358766, - 3.7657840496635098, - 3.766091791696267, - 3.7646567080924265, - 3.764865532997577, - 3.764573312519497, - 3.764286737155829, - 3.764051198135931, - 3.764441471884701, - 3.7644102923531073, - 3.763528699053769, - 3.766989753161907, - 3.764534793096274, - 3.764216805454938, - 3.763192747680314, - 3.7633454924196066, - 3.763968380095133, - 3.765530130872472, - 3.761898093020857, - 3.763751644108724, - 3.7635138726228727, - 3.7622071339117142, - 3.762361575531746, - 3.7608848151368144, - 3.7637572504051775, - 3.7609852925764136, - 3.762031718983472, - 3.7620633734315465, - 3.7611494198972415, - 3.7624371129318663, - 3.760084991147157, - 3.759162243942795, - 3.7611083350075223, - 3.7596314451959496, - 3.7601429326783102, - 3.7601324511521166, - 3.7596370658698817, - 3.759891955740249, - 3.758410343088575, - 3.75721359897665, - 3.760490503740898, - 3.7577360580106376, - 3.7570252897180425, - 3.756475979031917, - 3.7584378074267057, - 3.7587854940099414, - 3.7583191157118394, - 3.756067129150825, - 3.7591114341869503, - 3.7570747301769183, - 3.7567147309821514, - 3.756641768576472, - 3.757766550938638, - 3.7549898287122527, - 3.756812041523763, - 3.756141204698392, - 3.756319969745936, - 3.7560007775530946, - 3.757744213065112, - 3.755619945076075, - 3.755397548960461, - 3.7542723689649833, - 3.753900824380753, - 3.7548469242519142, - 3.754269018245586, - 3.754146784845078, - 3.7538827888440895, - 3.753731821406795, - 3.7550306982653994, - 3.7548763654383386, - 3.7516133958537825, - 3.752331843676592, - 3.75387275987044, - 3.75280186469977, - 3.7524198102787314, - 3.753460046946888, - 3.7504590398419415, - 3.751898239911158, - 3.748884476386352, - 3.752892001376539, - 3.750126727506156, - 3.752910464252652, - 3.7503998705689745, - 3.751094403165528, - 3.75247852825412, - 3.7506087492079567, - 3.7497414963043383, - 3.750116432104816, - 3.749591789667802, - 3.748556930478478, - 3.7504462396502207, - 3.750335900394575, - 3.75133276065195, - 3.7495500009952383, - 3.748847309846962, - 3.7503281875432153, - 3.748334685099616, - 3.747759706706365, - 3.7488731985725, - 3.7473133721366536, - 3.747547349965167, - 3.7482695803508377, - 3.7484866438000486, - 3.7474971954487017, - 3.747007587084561, - 3.7480238995750375, - 3.7463391637905, - 3.747685768051406, - 3.745704789226829, - 3.7456285667607, - 3.746418402079395, - 3.7466170412841295, - 3.744517175335988, - 3.745292985355174, - 3.744650106472645, - 3.74582259747007, - 3.744619848540184, - 3.744864022740864, - 3.744513158629032, - 3.7443197599391462, - 3.744480512908242, - 3.743817397835809, - 3.743499997225136, - 3.743286119300033, - 3.7448007455521544, - 3.744183838776684, - 3.7460204194099687, - 3.7428938756900143, - 3.743949312396992, - 3.741813763899032, - 3.743517995938216, - 3.7425081385254817, - 3.743021477383031, - 3.742953746036971, - 3.743998093728281, - 3.7422685383294447, - 3.7424394961506646, - 3.741810535944326, - 3.7426447742752913, - 3.741816575266791, - 3.74070483463661, - 3.7417526977521183, - 3.7412503437759193, - 3.7418284200764305, - 3.7393253245651152, - 3.7422120482266936, - 3.7403164396212345, - 3.7402522479903304, - 3.740582865524553, - 3.741314791539783, - 3.740181686053499, - 3.739683220527845, - 3.738526319397093, - 3.7394835966373834, - 3.7374172875331046, - 3.7384622525226026, - 3.737854829171072, - 3.7367987073142905, - 3.737753828935244, - 3.735672876385299, - 3.737871607012314, - 3.7378643580014703, - 3.7376304397159985, - 3.736190802158782, - 3.7381604437101847, - 3.737321534897568, - 3.736835463702042, - 3.736693720263678, - 3.737453713479005, - 3.7380565785281945, - 3.7368259704351936, - 3.737660368180894, - 3.735433728408863, - 3.7367984424870344, - 3.7334330894174537, - 3.737871321600742, - 3.734802344902049, - 3.735795165610141, - 3.7347049289818712, - 3.7333577718610447, - 3.734048539184295, - 3.7355938184681583, - 3.734823078377838, - 3.734531480225874, - 3.734398143774933, - 3.7347933050427007, - 3.733536851160486, - 3.734090341287161, - 3.7326789778355, - 3.732071282367538, - 3.732554910693762, - 3.734197035211829, - 3.732730505655807, - 3.73185538441944, - 3.733240938800565, - 3.7316471663953825, - 3.732350890831582, - 3.732589455437932, - 3.732714212115132, - 3.7314907610990673, - 3.730710396404091, - 3.7322214146251977, - 3.7305026879629746, - 3.730430474236508, - 3.732258088215589, - 3.7301723380426615, - 3.730348555753033, - 3.730167063580274, - 3.729538000196436, - 3.731643583014294, - 3.732348291447017, - 3.729160633045855, - 3.73117603338921, - 3.72891749236626, - 3.7297368731860354, - 3.730044229873722, - 3.728218302306479, - 3.728330635111544, - 3.7294288803829847, - 3.7291865645847784, - 3.728488268331739, - 3.727380363658825, - 3.728954669013872, - 3.728494590276541, - 3.728546533030974, - 3.726465888097555, - 3.726816979764723, - 3.726866432031416, - 3.7267110185992833, - 3.726486165497061, - 3.726396187346389, - 3.728472450415575, - 3.725416445767098, - 3.726087307748061, - 3.7273476407010935, - 3.7268323243594614, - 3.724931348710889, - 3.7250591712483314, - 3.7252981386024104, - 3.7245510036901224, - 3.724969297671629, - 3.7246223339775946, - 3.726139527942422, - 3.725283371706504, - 3.7263198002766225, - 3.7262451695249177, - 3.725953468536683, - 3.7245111048591006, - 3.724301586673215, - 3.725078734562816, - 3.72514890962546, - 3.7245600009304702, - 3.7266475858960937, - 3.7246441245848017, - 3.7247326003973464, - 3.725543092050231, - 3.723948938775675, - 3.722800331973541, - 3.7232591433978466, - 3.7248235280674367, - 3.722906347076443, - 3.7220807048684055, - 3.7234675180727272, - 3.72267681742563, - 3.7219430360131303, - 3.7223973550644582, - 3.720726314031057, - 3.7218265478737056, - 3.721600150560099, - 3.7227946506145497, - 3.721044327005312, - 3.721701391982592, - 3.71983773921872, - 3.719799013052111, - 3.72036113977738, - 3.7215171831370535, - 3.7209433651080337, - 3.720159258147751, - 3.720850364225461, - 3.7198981998236023, - 3.719692282145367, - 3.720133971393125, - 3.719030307832911, - 3.721306317938315, - 3.7205454606195993, - 3.719361096493024, - 3.718525613557568, - 3.7191020978887614, - 3.718636445775065, - 3.7185907005691994, - 3.719538659849548, - 3.71856008305218, - 3.718685173463007, - 3.718104772212635, - 3.718344553367959, - 3.718765769311283, - 3.71705135686155, - 3.718214371426436, - 3.719833904051614, - 3.7169595106014337, - 3.717703607315508, - 3.718950334938844, - 3.717668059442031, - 3.7167374807342393, - 3.716968579054971, - 3.7158917456614744, - 3.7176372289223822, - 3.716074891794177, - 3.714736793530909, - 3.717279616247654, - 3.7166666419996304, - 3.7150195204254888, - 3.7147092303611657, - 3.7163511217972967, - 3.714741656310368, - 3.71702997592534, - 3.716040118045386, - 3.7144594295328823, - 3.714666716762933, - 3.714376446709569, - 3.715260001843563, - 3.7160298251116224, - 3.715140871266049, - 3.713999999104811, - 3.7139074117557462, - 3.712540219609767, - 3.711917674973463, - 3.714770546888019, - 3.712845452628081, - 3.713690162112857, - 3.714656454032423, - 3.7144130166252847, - 3.714904906830763, - 3.715849510642133, - 3.712627452844948, - 3.7141361910183734, - 3.713041359243416, - 3.7136300546003103, - 3.7140325774789353, - 3.711973517582124, - 3.713083814936144, - 3.71099646912026, - 3.7147944552430654, - 3.7138663575368818, - 3.712955000069678, - 3.710366937217274, - 3.7114046301159704, - 3.7124660630493143, - 3.7124884799975817, - 3.7081372404087176, - 3.7106319641698913, - 3.71044362518327, - 3.712124426725339, - 3.712123955750993, - 3.710769878582444, - 3.7086263120643688, - 3.709528529284836, - 3.7109578228313302, - 3.711124948342458, - 3.7085411535387176, - 3.7087818942594946, - 3.709960978624787, - 3.710409877799314, - 3.7085237442907832, - 3.708040446560682, - 3.708581911260688, - 3.708814375406676, - 3.708489757921498, - 3.7090551193637222, - 3.7089659185349055, - 3.70945414112778, - 3.70827385244182, - 3.7094956058389967, - 3.7093294819204585, - 3.7080086104123846, - 3.7095112609122856, - 3.7056091340733217, - 3.708211992540957, - 3.709893681962309, - 3.7064109446381943 - ] - }, - { - "line": { - "width": 4 - }, - "mode": "lines", - "name": "Model", - "type": "scatter", - "x": [ - 0, - 2, - 4, - 6, - 8, - 10, - 12, - 14, - 16, - 18, - 20, - 22, - 24, - 26, - 28, - 30, - 32, - 34, - 36, - 38, - 40, - 42, - 44, - 46, - 48, - 50, - 52, - 54, - 56, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 80, - 82, - 84, - 86, - 88, - 90, - 92, - 94, - 96, - 98, - 100, - 102, - 104, - 106, - 108, - 110, - 112, - 114, - 116, - 118, - 120, - 122, - 124, - 126, - 128, - 130, - 132, - 134, - 136, - 138, - 140, - 142, - 144, - 146, - 148, - 150, - 152, - 154, - 156, - 158, - 160, - 162, - 164, - 166, - 168, - 170, - 172, - 174, - 176, - 178, - 180, - 182, - 184, - 186, - 188, - 190, - 192, - 194, - 196, - 198, - 200, - 202, - 204, - 206, - 208, - 210, - 212, - 214, - 216, - 218, - 220, - 222, - 224, - 226, - 228, - 230, - 232, - 234, - 236, - 238, - 240, - 242, - 244, - 246, - 248, - 250, - 252, - 254, - 256, - 258, - 260, - 262, - 264, - 266, - 268, - 270, - 272, - 274, - 276, - 278, - 280, - 282, - 284, - 286, - 288, - 290, - 292, - 294, - 296, - 298, - 300, - 302, - 304, - 306, - 308, - 310, - 312, - 314, - 316, - 318, - 320, - 322, - 324, - 326, - 328, - 330, - 332, - 334, - 336, - 338, - 340, - 342, - 344, - 346, - 348, - 350, - 352, - 354, - 356, - 358, - 360, - 362, - 364, - 366, - 368, - 370, - 372, - 374, - 376, - 378, - 380, - 382, - 384, - 386, - 388, - 390, - 392, - 394, - 396, - 398, - 400, - 402, - 404, - 406, - 408, - 410, - 412, - 414, - 416, - 418, - 420, - 422, - 424, - 426, - 428, - 430, - 432, - 434, - 436, - 438, - 440, - 442, - 444, - 446, - 448, - 450, - 452, - 454, - 456, - 458, - 460, - 462, - 464, - 466, - 468, - 470, - 472, - 474, - 476, - 478, - 480, - 482, - 484, - 486, - 488, - 490, - 492, - 494, - 496, - 498, - 500, - 502, - 504, - 506, - 508, - 510, - 512, - 514, - 516, - 518, - 520, - 522, - 524, - 526, - 528, - 530, - 532, - 534, - 536, - 538, - 540, - 542, - 544, - 546, - 548, - 550, - 552, - 554, - 556, - 558, - 560, - 562, - 564, - 566, - 568, - 570, - 572, - 574, - 576, - 578, - 580, - 582, - 584, - 586, - 588, - 590, - 592, - 594, - 596, - 598, - 600, - 602, - 604, - 606, - 608, - 610, - 612, - 614, - 616, - 618, - 620, - 622, - 624, - 626, - 628, - 630, - 632, - 634, - 636, - 638, - 640, - 642, - 644, - 646, - 648, - 650, - 652, - 654, - 656, - 658, - 660, - 662, - 664, - 666, - 668, - 670, - 672, - 674, - 676, - 678, - 680, - 682, - 684, - 686, - 688, - 690, - 692, - 694, - 696, - 698, - 700, - 702, - 704, - 706, - 708, - 710, - 712, - 714, - 716, - 718, - 720, - 722, - 724, - 726, - 728, - 730, - 732, - 734, - 736, - 738, - 740, - 742, - 744, - 746, - 748, - 750, - 752, - 754, - 756, - 758, - 760, - 762, - 764, - 766, - 768, - 770, - 772, - 774, - 776, - 778, - 780, - 782, - 784, - 786, - 788, - 790, - 792, - 794, - 796, - 798, - 800, - 802, - 804, - 806, - 808, - 810, - 812, - 814, - 816, - 818, - 820, - 822, - 824, - 826, - 828, - 830, - 832, - 834, - 836, - 838, - 840, - 842, - 844, - 846, - 848, - 850, - 852, - 854, - 856, - 858, - 860, - 862, - 864, - 866, - 868, - 870, - 872, - 874, - 876, - 878, - 880, - 882, - 884, - 886, - 888, - 890, - 892, - 894, - 896, - 898 - ], - "y": [ - 3.7867565008101582, - 3.785307574105752, - 3.784431576206426, - 3.783763318360224, - 3.783192990576766, - 3.782689347106933, - 3.7822316061268184, - 3.781806535629719, - 3.7814066256863095, - 3.7810272289330342, - 3.780664881902177, - 3.7803169246426505, - 3.7799813041538544, - 3.7796563146396576, - 3.779340724485507, - 3.779033656067583, - 3.7787340257405826, - 3.778441150395549, - 3.778154349154554, - 3.777873053080959, - 3.777596776531237, - 3.77732509843244, - 3.777057660226342, - 3.7767941108576215, - 3.7765341821062783, - 3.776277639157829, - 3.7760242576102954, - 3.775773893620123, - 3.775526393913559, - 3.775281461065937, - 3.775039016497173, - 3.774798924464757, - 3.774561015794839, - 3.7743251933681945, - 3.774091347632978, - 3.773859355884431, - 3.7736291349234783, - 3.7734005983725343, - 3.7731736567418968, - 3.7729482436758417, - 3.7727242911771177, - 3.772501722717064, - 3.7722804869972744, - 3.772060529224418, - 3.771841788848657, - 3.771624218840641, - 3.771407771623727, - 3.7711924038057942, - 3.770978071459627, - 3.7707647328170903, - 3.7705523470819022, - 3.7703408740089746, - 3.7701302799996967, - 3.7699205417724215, - 3.769711618353659, - 3.7695034771812024, - 3.769296086260427, - 3.7690894139454545, - 3.768883441717433, - 3.768678164828167, - 3.768473547339825, - 3.768269569195009, - 3.7680662118808463, - 3.767863458391812, - 3.767661290102489, - 3.7674596875617783, - 3.76725863917512, - 3.767058131253763, - 3.766858151036642, - 3.76665868662616, - 3.766459722228671, - 3.7662612405156985, - 3.7660632333770625, - 3.765865688631803, - 3.765668594149675, - 3.7654719377570007, - 3.7652756965144905, - 3.765079844049792, - 3.764884370318155, - 3.764689255315632, - 3.7644944774268065, - 3.764300013256718, - 3.764105908890509, - 3.76391221755667, - 3.7637188940284783, - 3.7635259482556234, - 3.7633333944267457, - 3.763141251271736, - 3.7629493917504657, - 3.762757712986522, - 3.7625662943292766, - 3.7623751141799815, - 3.7621841494369743, - 3.761993375492337, - 3.761802916421858, - 3.761612848672031, - 3.761423096727445, - 3.7612336777829176, - 3.76104461187356, - 3.760855921874118, - 3.7606674526990727, - 3.7604791431760263, - 3.760291085591047, - 3.760103273260489, - 3.7599156995163736, - 3.75972835770644, - 3.759541267527879, - 3.759354429962694, - 3.7591678282670142, - 3.7589814589710073, - 3.758795318616376, - 3.7586094037563833, - 3.758423719347478, - 3.758238263589206, - 3.758053030238568, - 3.7578680168175143, - 3.757683220854916, - 3.757498639886581, - 3.757314284073681, - 3.7571301523662255, - 3.7569462386716217, - 3.7567625418982753, - 3.756579060958746, - 3.756395794769749, - 3.7562127392267497, - 3.7560298931368186, - 3.7558472561602736, - 3.7556648269072026, - 3.755482603990031, - 3.7553005860235302, - 3.755118778444693, - 3.754937180695695, - 3.754755790889837, - 3.754574609251498, - 3.7543936361490142, - 3.754212872094439, - 3.754032309253768, - 3.753851947989911, - 3.753671789619882, - 3.7534918333100458, - 3.753312078197975, - 3.753132523392182, - 3.752953173180763, - 3.7527740265414256, - 3.7525950824063665, - 3.7524163408949462, - 3.752237802197021, - 3.752059466572744, - 3.751881331384915, - 3.7517033972585248, - 3.7515256646411905, - 3.751348133458146, - 3.7511708036498415, - 3.750993675171807, - 3.7508167479945262, - 3.7506400221032896, - 3.75046349749807, - 3.7502871741933825, - 3.750111052218147, - 3.7499351316155622, - 3.7497594133284062, - 3.7495838970340767, - 3.749408582758784, - 3.749233470667196, - 3.749058560941764, - 3.748883853782578, - 3.748709349407243, - 3.74853504805074, - 3.7483609499652992, - 3.748187055420261, - 3.7480133647019502, - 3.747839878113536, - 3.7476665923668295, - 3.747493509897999, - 3.747320631176266, - 3.74714795639561, - 3.746975485757554, - 3.7468032194711016, - 3.746631157752671, - 3.746459300826024, - 3.746287648922196, - 3.746116202279432, - 3.745944961143123, - 3.7457739257657288, - 3.745603096406723, - 3.745432473332517, - 3.745262056816396, - 3.745091845854255, - 3.744921840888402, - 3.744752042783533, - 3.744582451780987, - 3.744413068126259, - 3.74424389206896, - 3.744074923862769, - 3.7439061637653785, - 3.7437376120384593, - 3.743569268947601, - 3.743401134762274, - 3.7432332097557746, - 3.7430654942051858, - 3.742897988391325, - 3.7427306925986983, - 3.74256360584555, - 3.742396726962242, - 3.7422300580659016, - 3.742063599364152, - 3.7418973510646127, - 3.741731313374864, - 3.741565486502443, - 3.7413998706548055, - 3.74123446603932, - 3.741069272863242, - 3.740904291333688, - 3.740739521657628, - 3.740574964041854, - 3.740410618692966, - 3.7402464858173543, - 3.7400825654639114, - 3.739918856331888, - 3.739755359869825, - 3.739592076241277, - 3.739429005607942, - 3.7392661481296594, - 3.739103503964397, - 3.738941073268246, - 3.738778856195415, - 3.7386168528982098, - 3.738455063527046, - 3.73829348823042, - 3.738132127154914, - 3.737970980445183, - 3.737810048243945, - 3.73764933069198, - 3.7374888269384847, - 3.737328537642762, - 3.7371684630981648, - 3.737008603408456, - 3.736848958674393, - 3.7366895289937334, - 3.736530314461236, - 3.736371315168653, - 3.736212531204746, - 3.736053962655267, - 3.735895609602972, - 3.73573747212762, - 3.7355795503059657, - 3.735421844211764, - 3.7352643539157704, - 3.735107079368195, - 3.734950020616626, - 3.734793177802266, - 3.734636550978511, - 3.7344801401955543, - 3.734323945500382, - 3.73416796693678, - 3.7340122045453192, - 3.7338566583633663, - 3.733701328425078, - 3.733546214761392, - 3.7333913174000335, - 3.733236636365507, - 3.7330821716790954, - 3.732927923358851, - 3.732773891275212, - 3.732620075119356, - 3.732466475204167, - 3.73231309151371, - 3.7321599240273287, - 3.73200697271959, - 3.731854237560243, - 3.73170171851416, - 3.7315494155412914, - 3.7313973285966138, - 3.731245457630072, - 3.731093802586538, - 3.7309423634057497, - 3.730791140022262, - 3.7306401323653926, - 3.730489340364225, - 3.73033876476599, - 3.730188404879368, - 3.730038260642945, - 3.729888331991991, - 3.72973861885849, - 3.729589121171141, - 3.729439838855366, - 3.729290771833333, - 3.7291419200239497, - 3.7289932833428816, - 3.7288448617025582, - 3.728696655012179, - 3.7285486631777207, - 3.728400886101941, - 3.728253323684387, - 3.728105975300642, - 3.7279588410060462, - 3.727811920828861, - 3.727665214627482, - 3.727518722255129, - 3.727372443559795, - 3.72722637862773, - 3.727080527228781, - 3.726934888645439, - 3.726789464336677, - 3.7266442510393074, - 3.726499251412109, - 3.7263544656088774, - 3.7262098934413865, - 3.7260655307963666, - 3.725921380464684, - 3.725777443174957, - 3.725633718719232, - 3.725490203576097, - 3.7253468994983097, - 3.725203807601104, - 3.725060927656191, - 3.7249182578250153, - 3.724775797580276, - 3.7246335474666337, - 3.724491507235165, - 3.72434967663159, - 3.724208055396238, - 3.724066643263981, - 3.723925439964188, - 3.72378444548338, - 3.723643659736405, - 3.7235030821203954, - 3.723362712342196, - 3.723222550102869, - 3.7230825950976216, - 3.7229428470157417, - 3.7228033055405296, - 3.7226639704568294, - 3.72252484175191, - 3.722385918776504, - 3.722247201189092, - 3.722108688641797, - 3.721970380780298, - 3.72183227724375, - 3.72169437766469, - 3.721556681703884, - 3.721419189893182, - 3.721281901107421, - 3.72114481495127, - 3.7210079310222968, - 3.7208712489108695, - 3.720734768200047, - 3.720598488465477, - 3.720462409275286, - 3.7203265301899577, - 3.720190850762227, - 3.7200553705369592, - 3.719920089051021, - 3.719785005833158, - 3.719650120403872, - 3.719515432275279, - 3.719380940950981, - 3.7192466477474824, - 3.7191125515524144, - 3.718978650942991, - 3.7188449453868233, - 3.71871143434226, - 3.718578117258223, - 3.718444993574046, - 3.718312062719306, - 3.718179324113654, - 3.7180467771666392, - 3.717914421277533, - 3.7177822558351328, - 3.7176502802175904, - 3.717518493792204, - 3.717386895915225, - 3.7172554890844953, - 3.717124270209243, - 3.716993238319752, - 3.716862392725031, - 3.7167317327219496, - 3.716601257595, - 3.716470966616063, - 3.716340859044166, - 3.7162109341252334, - 3.71608119109184, - 3.715951629162943, - 3.71582224754362, - 3.7156930454247954, - 3.715564021982965, - 3.715435177188323, - 3.7153065138567687, - 3.715178027294906, - 3.715049716617597, - 3.7149215809237512, - 3.714793619296, - 3.71466583080037, - 3.7145382144859505, - 3.714410769384541, - 3.7142834945103034, - 3.7141563888593967, - 3.714029451409616, - 3.7139026811200058, - 3.713776076930474, - 3.713649637761407, - 3.7135233651638297, - 3.713397259627399, - 3.7132713165787057, - 3.713145534854715, - 3.71301991327073, - 3.7128944506199177, - 3.712769145672861, - 3.712643997177075, - 3.7125190038565297, - 3.7123941644111462, - 3.712269477516299, - 3.712144941822289, - 3.712020555953819, - 3.711896318509454, - 3.711772228061065, - 3.711648287684966, - 3.711524494686385, - 3.711400845653337, - 3.711277339130645, - 3.7111539736333703, - 3.7110307476461983, - 3.7109076596227855, - 3.710784707985094, - 3.7106618911227343, - 3.710539207392271, - 3.710416655116517, - 3.710294232583824, - 3.7101719380473543, - 3.710049769724325, - 3.709927725795249, - 3.709805804403168, - 3.709684003652843, - 3.709562321609952, - 3.709440756300269, - 3.709319305708804, - 3.709197967778965, - 3.709076740411659, - 3.70895562146441, - 3.708834608750444, - 3.7087137000377486, - 3.7085928930481367, - 3.7084721854562694, - 3.7083515748886775, - 3.708231058922741, - 3.70811063695263, - 3.707990313644518, - 3.70787007856343, - 3.707749929126021, - 3.707629862694459 - ] - } - ], - "layout": { - "autosize": false, - "height": 576, - "legend": { - "font": { - "size": 12 - }, - "x": 1, - "xanchor": "right", - "y": 1, - "yanchor": "top" - }, - "margin": { - "b": 10, - "l": 10, - "pad": 4, - "r": 10, - "t": 75 - }, - "showlegend": true, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Optimised Comparison", - "x": 0.5 - }, - "width": 1024, - "xaxis": { - "tickfont": { - "size": 12 - }, - "title": { - "font": { - "size": 12 - }, - "text": "Time [s]" - } - }, - "yaxis": { - "tickfont": { - "size": 12 - }, - "title": { - "font": { - "size": 12 - }, - "text": "Voltage [V]" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "pybop.quick_plot(problem, parameter_values=x, title=\"Optimised Comparison\");" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Convergence and Parameter Trajectories\n", - "\n", - "To assess the optimisation process, we can plot the convergence of the cost function and the trajectories of the parameters:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "id": "N5XYkevi04qD" - }, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "line": { - "width": 4 - }, - "mode": "lines", - "name": "Covariance Matrix Adaptation Evolution
Strategy (CMA-ES)", - "type": "scatter", - "x": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "y": [ - 0.0009615508132859744, - 0.0015723852982953749, - 0.0005471630682708762, - 0.0006715769325804201, - 0.0005561162425120631, - 0.0005637506160818752, - 0.0005503919431883333, - 0.000506900950094497, - 0.0005120294176036823, - 0.0004964095581093746, - 0.0005120090124317643, - 0.000503783723798041, - 0.0005210989314312901, - 0.0004969927788251594, - 0.00048626305570563446, - 0.0004607665307926028, - 0.0004499459550267827, - 0.0004759745468898432, - 0.0004503888034855672, - 0.000456350718989926, - 0.00044636847331087394, - 0.00045018250920695273, - 0.0004455407828316443, - 0.0004459631882223933, - 0.0004451103038167852, - 0.000445131572642388, - 0.00044499744694760526, - 0.0004451087876115578, - 0.0004450277253513619, - 0.0004450247972121914 - ] - } - ], - "layout": { - "autosize": false, - "height": 576, - "legend": { - "font": { - "size": 12 - }, - "x": 1, - "xanchor": "right", - "y": 1, - "yanchor": "top" - }, - "margin": { - "b": 10, - "l": 10, - "pad": 4, - "r": 10, - "t": 75 - }, - "showlegend": true, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Convergence", - "x": 0.5 - }, - "width": 1024, - "xaxis": { - "tickfont": { - "size": 12 - }, - "title": { - "font": { - "size": 12 - }, - "text": "Iteration" - } - }, - "yaxis": { - "tickfont": { - "size": 12 - }, - "title": { - "font": { - "size": 12 - }, - "text": "Cost" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "name": "Negative electrode active material volume fraction", - "type": "scatter", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179 - ], - "xaxis": "x", - "y": [ - 0.6902766303732811, - 0.6837223360152214, - 0.7209158996517214, - 0.7946265560567509, - 0.7133016589003354, - 0.6865590316988087, - 0.7129826981384983, - 0.7150903439964802, - 0.7675706744067792, - 0.7209923384115915, - 0.7421211190287808, - 0.7326088307425704, - 0.6924557775110093, - 0.7491532988549072, - 0.7582453135551237, - 0.7223428772699656, - 0.6843123147148159, - 0.7535507412134932, - 0.7658910001669058, - 0.7597959926722416, - 0.7715752863595305, - 0.7678858463125848, - 0.7148222287289572, - 0.7373979081336284, - 0.7370036885158603, - 0.7190285439237782, - 0.7409507249528056, - 0.7923809699211477, - 0.7362539387650572, - 0.8328921662768863, - 0.7701284581559648, - 0.7272116461388305, - 0.7477610890077967, - 0.7276425258128625, - 0.7249616632417152, - 0.7578718480313613, - 0.7375142298358964, - 0.7447909313333756, - 0.716195308684423, - 0.7478096231467714, - 0.7403695687168349, - 0.7004723144868634, - 0.7604927132272885, - 0.6977031921624629, - 0.7106060969234703, - 0.6684143927350901, - 0.6746568668383477, - 0.6912413339348147, - 0.6925568954503704, - 0.7428606395972843, - 0.6369919902409236, - 0.6809797723635713, - 0.6986129422506805, - 0.6397604549980783, - 0.7274453620527205, - 0.7057557918553489, - 0.6923305183101992, - 0.735292595229998, - 0.7383630521509149, - 0.6582635062453439, - 0.6103927896915677, - 0.7117049986805006, - 0.7164127071962608, - 0.6955280845754389, - 0.6314431825720496, - 0.70334806076912, - 0.6834844779944443, - 0.7130580146538251, - 0.701018394793316, - 0.8012231280471576, - 0.6834072829848803, - 0.6766395405703918, - 0.6695492882203142, - 0.6852616315608138, - 0.6822291966853495, - 0.696886827769854, - 0.6456124675929328, - 0.6764109059754393, - 0.705979946727988, - 0.6624499685201576, - 0.6884692384324372, - 0.6610171105487663, - 0.6662089216739889, - 0.6820717350395511, - 0.6591928604485974, - 0.6350827008163039, - 0.6549341537680038, - 0.6402320275923087, - 0.6776133646758087, - 0.6625383911290141, - 0.6318921498153618, - 0.6108338833105418, - 0.5691975132410496, - 0.6170896577222232, - 0.6325064548933875, - 0.6319668181923814, - 0.6476118390020807, - 0.5237057161649432, - 0.5366059524694143, - 0.5542920877770234, - 0.5948920253649208, - 0.5467108510726004, - 0.4801988755861099, - 0.6018256173120544, - 0.5599275474805228, - 0.6581436276007904, - 0.5393456597923282, - 0.5918043474620778, - 0.6032467166000338, - 0.5113997966836226, - 0.5662937304226787, - 0.5411449876989373, - 0.7522623543937985, - 0.47300261061494786, - 0.45173918120372614, - 0.4976722673854519, - 0.4689907301754455, - 0.5541377906315773, - 0.4504546793071138, - 0.6022479482477466, - 0.6156885450117099, - 0.45436602493242023, - 0.4500175485628539, - 0.4855240245833936, - 0.5445051208208629, - 0.5250409399751258, - 0.4621614206017263, - 0.46546829216026814, - 0.5949385857621495, - 0.5005384614970788, - 0.6154160330627595, - 0.521081729005421, - 0.451936512401699, - 0.49668507444031024, - 0.4863293435184069, - 0.4586400472810632, - 0.488730002626555, - 0.5106188186124558, - 0.46692091173084943, - 0.5425970307687905, - 0.5186579654548735, - 0.481693978563431, - 0.4790198658684338, - 0.5356194413697889, - 0.506304300084812, - 0.4843029457267676, - 0.4672084494022005, - 0.4928318477941483, - 0.4593650196315271, - 0.47375490876461296, - 0.5061031801859008, - 0.484692181266044, - 0.5294833304110232, - 0.4914890471570528, - 0.5178294908920423, - 0.4743467688320612, - 0.4917381710327104, - 0.5141890519043512, - 0.4852820322780376, - 0.490489442878623, - 0.497269002193416, - 0.4821418911990455, - 0.5057046700328383, - 0.4950662092354254, - 0.4870440044324078, - 0.5042449635703588, - 0.48769943913510927, - 0.48091299066329, - 0.496164916765345, - 0.4928123517245285, - 0.4892732498887095, - 0.4910414045232242, - 0.4964239894847035, - 0.4910249143640793, - 0.4932404536756434, - 0.49563059987983366, - 0.49210442386341224, - 0.49800518576208314, - 0.4924001104566205, - 0.49211348729586846 - ], - "yaxis": "y" - }, - { - "name": "Positive electrode active material volume fraction", - "type": "scatter", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179 - ], - "xaxis": "x2", - "y": [ - 0.553658592769684, - 0.5291664563172557, - 0.5418690511200387, - 0.5860520282559276, - 0.6039766944496866, - 0.5021148610043364, - 0.6188246238506271, - 0.5580820996994289, - 0.6174766011235178, - 0.5851734438904747, - 0.6320112310999677, - 0.6541908852987183, - 0.5889916664063238, - 0.6124624465981827, - 0.5937705743090749, - 0.6089595104062573, - 0.652921450278538, - 0.5915880765037422, - 0.5453365369791535, - 0.5444319032769357, - 0.5994940480326273, - 0.5979179838343834, - 0.5803826965514426, - 0.6084695492637174, - 0.5839839739800865, - 0.6304010806135251, - 0.5789270812244718, - 0.5964619636998483, - 0.5938001583813863, - 0.5960359136526083, - 0.5852278993297413, - 0.5980429026801456, - 0.5979321079573758, - 0.5788797742984202, - 0.5895037351207152, - 0.5976448214149047, - 0.5892442402338158, - 0.6090745236798364, - 0.5811665589799486, - 0.6008936367948814, - 0.6069347099181053, - 0.5951812303976365, - 0.5943555151978129, - 0.5985386164723707, - 0.6106828629430981, - 0.597974821738626, - 0.6034310183973846, - 0.5929162578994348, - 0.5966156367313359, - 0.6036665525964039, - 0.5943268374486825, - 0.5993025846002807, - 0.5962020189229235, - 0.6070690890649185, - 0.5969252121260817, - 0.5902648401082122, - 0.5966709604544903, - 0.5966023686142383, - 0.5958823001643863, - 0.6002255687809663, - 0.5976056489404203, - 0.5985956707767083, - 0.5976752921444639, - 0.5978518110265753, - 0.6058882579986162, - 0.593200026390547, - 0.5989972441885394, - 0.5973001542896139, - 0.5946485830107348, - 0.5932368392910224, - 0.6019474315910912, - 0.5990294881204316, - 0.597297706223024, - 0.6006764307252052, - 0.6005445194705809, - 0.5993441673442158, - 0.5958975483108374, - 0.6005334385612898, - 0.5985982160171898, - 0.5985518179846437, - 0.5982762571434445, - 0.600451874972249, - 0.5992302807160195, - 0.5997679451111007, - 0.6005228496041005, - 0.6003165551452361, - 0.5989482941908217, - 0.6020444509440077, - 0.6004345518626775, - 0.5984825994851658, - 0.6009965167233451, - 0.6032959929553446, - 0.6048781012702418, - 0.6034304429093383, - 0.6019414162300202, - 0.6001611054221517, - 0.6013179609009099, - 0.608429273080786, - 0.6078712193882138, - 0.6044533842659701, - 0.6025230210326784, - 0.6035675122622304, - 0.6107375500414033, - 0.6050307745932996, - 0.6106275959941742, - 0.6016122434558566, - 0.6114899239008053, - 0.6050311334718923, - 0.6014981809819214, - 0.6080575715144376, - 0.607845690300184, - 0.6076013773917742, - 0.5903909082924454, - 0.61224203261209, - 0.6190662186342195, - 0.6086595445022761, - 0.6139812256851659, - 0.6076153224776284, - 0.6132175800403299, - 0.6063485887296345, - 0.6035001796676076, - 0.615823227552071, - 0.61830560564294, - 0.612782020473002, - 0.6082177078613348, - 0.6082403475703779, - 0.6155777949507325, - 0.6148273397699636, - 0.6055420935919663, - 0.606780266498375, - 0.6038592530591839, - 0.6102488024599763, - 0.6194353534444352, - 0.6112560932027926, - 0.6126232039405176, - 0.620029675318578, - 0.6125758472932906, - 0.609945153577358, - 0.6162337666231698, - 0.6075900952361227, - 0.6099972639092032, - 0.6126044058279139, - 0.6138504731948401, - 0.6077264543421858, - 0.6104370263507916, - 0.6136292202348169, - 0.6154412432862323, - 0.6124632214224123, - 0.6171390364374959, - 0.613953767810735, - 0.6120349651962869, - 0.612920152156003, - 0.6091711894203783, - 0.6125980121137751, - 0.6097991462801648, - 0.6135378585531511, - 0.6124437628675353, - 0.6102034527530064, - 0.6132349787883588, - 0.6126477085558841, - 0.6118968081698247, - 0.6138846320334953, - 0.6113144216959934, - 0.6122449289399643, - 0.6128173981806031, - 0.6115704456377821, - 0.6127776478127419, - 0.6133110346072097, - 0.6119269612238567, - 0.612369323580598, - 0.6128762337540471, - 0.6125370178078247, - 0.6120660337227175, - 0.6123914179742178, - 0.612498898860597, - 0.6121285702776945, - 0.6123350913973512, - 0.6118724445958914, - 0.6125337841159786, - 0.6123821293449487 - ], - "yaxis": "y2" - } - ], - "layout": { - "height": 576, - "legend": { - "orientation": "h", - "x": 1, - "xanchor": "right", - "y": 1.02, - "yanchor": "bottom" - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Parameter Convergence" - }, - "width": 1024, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 0.45 - ], - "title": { - "text": "Function Call" - } - }, - "xaxis2": { - "anchor": "y2", - "domain": [ - 0.55, - 1 - ], - "title": { - "text": "Function Call" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Negative electrode active material volume fraction" - } - }, - "yaxis2": { - "anchor": "x2", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Positive electrode active material volume fraction" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "pybop.plot_convergence(optim)\n", - "pybop.plot_parameters(optim);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Cost Landscape\n", - "\n", - "Finally, we can visualise the cost landscape and the path taken by the optimiser:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "type": "contour", - "x": [ - 0.45, - 0.4821428571428571, - 0.5142857142857143, - 0.5464285714285715, - 0.5785714285714286, - 0.6107142857142858, - 0.6428571428571429, - 0.675, - 0.7071428571428572, - 0.7392857142857143, - 0.7714285714285715, - 0.8035714285714286, - 0.8357142857142859, - 0.8678571428571429, - 0.9 - ], - "y": [ - 0.5, - 0.5214285714285715, - 0.5428571428571428, - 0.5642857142857143, - 0.5857142857142857, - 0.6071428571428572, - 0.6285714285714286, - 0.65, - 0.6714285714285715, - 0.6928571428571428, - 0.7142857142857143, - 0.7357142857142858, - 0.7571428571428571, - 0.7785714285714287, - 0.8 - ], - "z": [ - [ - 0.13978694745045778, - 0.1316944365096389, - 0.12510284778858377, - 0.11950483272399456, - 0.1146400559137536, - 0.110349718945173, - 0.10652508509743448, - 0.10308705619787746, - 0.0999753897436059, - 0.09714246489095854, - 0.09455025536748628, - 0.09216776103818122, - 0.08996936456565387, - 0.08793365375933777, - 0.0860425565990292 - ], - [ - 0.08852523752484394, - 0.0821135241601885, - 0.07693259322919402, - 0.07256347913996253, - 0.06879167504268976, - 0.06548559715729094, - 0.06255566513606253, - 0.05993659953017005, - 0.0575785011239202, - 0.055442310459461346, - 0.05349713893430299, - 0.05171767958610572, - 0.05008287370698259, - 0.04857547555651788, - 0.04718088212784152 - ], - [ - 0.05079203580116165, - 0.045971446912746024, - 0.0421251222165762, - 0.038918639849196315, - 0.036180690667904886, - 0.03380583065565003, - 0.03172220105133776, - 0.02987745010753513, - 0.028232032125482594, - 0.026755011266559724, - 0.025421773785943052, - 0.024212421085075552, - 0.023110640558899317, - 0.022102908741071917, - 0.02117790052575984 - ], - [ - 0.0247109898086982, - 0.021398538445601543, - 0.01881672545430401, - 0.016711816538021243, - 0.01495308456971972, - 0.013459932735958694, - 0.01217767653472818, - 0.011066347980811676, - 0.01009588867482554, - 0.009243005785507736, - 0.008489287202794113, - 0.007819947641995503, - 0.007222959315041251, - 0.006688429916897677, - 0.006208143264422528 - ], - [ - 0.008670760154565454, - 0.006789509888060595, - 0.005407300703079819, - 0.004347035077125513, - 0.0035169614400567557, - 0.0028601192020667487, - 0.0023377769599036173, - 0.0019218604679443784, - 0.0015914086374210767, - 0.0013303542772597488, - 0.0011261544813756593, - 0.0009688743819370084, - 0.0008505502042737552, - 0.00076473335537691, - 0.000706163282316692 - ], - [ - 0.0012842487889950709, - 0.0007627505309217633, - 0.0005198154701005001, - 0.00045159969971133706, - 0.000503292378544598, - 0.0006404820351900392, - 0.0008396181376399506, - 0.001083927205983922, - 0.0013610927735407449, - 0.001661912118827988, - 0.001979417174986843, - 0.0023082578777456715, - 0.0026443711632016913, - 0.002984559404748057, - 0.003326352268489602 - ], - [ - 0.001354749564110868, - 0.0021264576815619675, - 0.002966845773125451, - 0.003841741211510412, - 0.004731669275233259, - 0.005623621274478844, - 0.006508536839764041, - 0.007380391594495515, - 0.00823509246108389, - 0.009069771056936252, - 0.00988313853426349, - 0.010674225839891804, - 0.011442278654321052, - 0.012187383575130576, - 0.012909730464191698 - ], - [ - 0.007847719718560629, - 0.009850691282138785, - 0.011722279102829926, - 0.013494752203558004, - 0.01518237994090198, - 0.016792558652489343, - 0.018330041845671816, - 0.01979904022130425, - 0.0212030163950541, - 0.022546051264677153, - 0.02383147992373779, - 0.02506209021550184, - 0.026241152842817153, - 0.02737155505729377, - 0.028456018593884982 - ], - [ - 0.019867144300190393, - 0.023043698688683972, - 0.02589777526182538, - 0.02852531573883176, - 0.03097284427281554, - 0.03326729118857365, - 0.035426395336499994, - 0.0374638068374847, - 0.03939157922505033, - 0.04121867344451148, - 0.042953607485001155, - 0.04460303484598697, - 0.04617360388450446, - 0.04767102208064301, - 0.04910052530919271 - ], - [ - 0.03663565882450597, - 0.040931834220360994, - 0.04472298950226511, - 0.04816602457816835, - 0.05133852441736211, - 0.0542850891368787, - 0.05703640981662537, - 0.059616641550997475, - 0.06204357093589624, - 0.06433222267021547, - 0.06649576354592646, - 0.06854453681263714, - 0.07048841307362162, - 0.07233591435571037, - 0.07409421900309038 - ], - [ - 0.05747780243432963, - 0.06284302831267616, - 0.06752888620629718, - 0.07175037989168795, - 0.07561437387648018, - 0.07918328710748379, - 0.08250086972707507, - 0.08559878985076375, - 0.08850213704434964, - 0.0912316773737072, - 0.09380393587099264, - 0.09623386105095684, - 0.0985341841658734, - 0.100715574394073, - 0.10278780136160584 - ], - [ - 0.0818058307509146, - 0.08819285557261257, - 0.09373361826006528, - 0.09869890258263096, - 0.10322376869274524, - 0.10738753583362667, - 0.11124561566195926, - 0.11483819778400818, - 0.11819659305937764, - 0.12134702534061911, - 0.124310045500102, - 0.1271042619466134, - 0.12974482537484677, - 0.13224531100334308, - 0.1346174400161844 - ], - [ - 0.10910766014116452, - 0.11647215049625416, - 0.12283054395397716, - 0.12850712557391802, - 0.13366338592815358, - 0.1383965461147322, - 0.1427715316843806, - 0.14683695743170633, - 0.15063054493043268, - 0.1541834276179364, - 0.15752008981540158, - 0.16066249805446742, - 0.16362853447691966, - 0.16643413351957564, - 0.16909303021128316 - ], - [ - 0.13893670463395016, - 0.14723698505460453, - 0.15437802885447577, - 0.16073541487394324, - 0.1664966641771162, - 0.1717740739594178, - 0.1766436934589138, - 0.1811617068617278, - 0.18537178207063465, - 0.18930981396484808, - 0.19300425434999757, - 0.1964796888183473, - 0.1997572077198358, - 0.20285480794891703, - 0.20578814406934 - ], - [ - 0.17090301393107454, - 0.1800999831591162, - 0.18799074332700105, - 0.19499991941839684, - 0.2013408653030025, - 0.20713975558471584, - 0.21248315090297443, - 0.2174346619472587, - 0.22204365536479517, - 0.2263505853972685, - 0.2303875350819614, - 0.23418211838081, - 0.23775797819604405, - 0.2411352603632087, - 0.24433145813402135 - ] - ] - } - ], - "layout": { - "height": 600, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Cost Landscape", - "x": 0.5, - "y": 0.9 - }, - "width": 600, - "xaxis": { - "range": [ - 0.45, - 0.9 - ], - "title": { - "text": "Negative electrode active material volume fraction" - } - }, - "yaxis": { - "range": [ - 0.5, - 0.8 - ], - "title": { - "text": "Positive electrode active material volume fraction" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "type": "contour", - "x": [ - 0.6, - 0.6214285714285714, - 0.6428571428571428, - 0.6642857142857143, - 0.6857142857142857, - 0.7071428571428572, - 0.7285714285714285, - 0.75, - 0.7714285714285715, - 0.7928571428571429, - 0.8142857142857143, - 0.8357142857142857, - 0.8571428571428572, - 0.8785714285714286, - 0.9 - ], - "y": [ - 0.5, - 0.5214285714285715, - 0.5428571428571428, - 0.5642857142857143, - 0.5857142857142857, - 0.6071428571428572, - 0.6285714285714286, - 0.65, - 0.6714285714285715, - 0.6928571428571428, - 0.7142857142857143, - 0.7357142857142858, - 0.7571428571428571, - 0.7785714285714287, - 0.8 - ], - "z": [ - [ - 0.11172344527162112, - 0.1090273376321791, - 0.10652508509589624, - 0.10419408874014388, - 0.10201616129270458, - 0.09997538974345874, - 0.0980583127237808, - 0.09625330611761596, - 0.09455025536736772, - 0.09294030170893476, - 0.0914156414007645, - 0.08996936456946641, - 0.08859532429916595, - 0.08728803133426434, - 0.08604255660723086 - ], - [ - 0.06654210214060881, - 0.06447083215873647, - 0.06255566513415398, - 0.060778427632699854, - 0.05912368155784033, - 0.05757850112360508, - 0.05613172143355099, - 0.05477406300669922, - 0.05349713893187891, - 0.052293835942669634, - 0.05115758004476429, - 0.05008287370622761, - 0.04906473678169218, - 0.048098731515296554, - 0.047180882133797085 - ], - [ - 0.034562036437443815, - 0.033081829184074096, - 0.03172220104974913, - 0.030468519542490385, - 0.029308517261376538, - 0.028232032124615388, - 0.02723027044411582, - 0.026295689844752765, - 0.025421773785827672, - 0.02460284458884867, - 0.023833927318642423, - 0.023110640558171455, - 0.022429107800207293, - 0.021785885858347852, - 0.021177900525459967 - ], - [ - 0.013931971353598058, - 0.0130113081098536, - 0.01217767653507118, - 0.01141981660998185, - 0.01072847734129951, - 0.010095888674091053, - 0.009515457243052318, - 0.008981543128281796, - 0.008489287200936523, - 0.008034476908847194, - 0.007613440001312406, - 0.00722295931504198, - 0.006860203641895759, - 0.006522671728328986, - 0.0062081432643535835 - ], - [ - 0.003062464721841924, - 0.002672627070453528, - 0.002337776959250979, - 0.0020500853785391845, - 0.0018030923082034585, - 0.0015914086375853535, - 0.0014104968286338445, - 0.001256507719799913, - 0.001126154481535708, - 0.001016614311215113, - 0.0009254505448591252, - 0.0008505502046392619, - 0.0007900734113460122, - 0.000742412171475067, - 0.000706163282195796 - ], - [ - 0.0005868783064975249, - 0.0007009167416830995, - 0.0008396181375832465, - 0.0009983063554026127, - 0.0011731735541251245, - 0.001361092773159901, - 0.0015594794623233195, - 0.001766185432212131, - 0.0019794171750563555, - 0.002197650691010229, - 0.0024196634051718126, - 0.0026443711632218466, - 0.0028708758090159564, - 0.0030984168724645764, - 0.0033263522689697443 - ], - [ - 0.005326728305971229, - 0.005919717237150784, - 0.006508536840116659, - 0.007091510877100457, - 0.007667354522679684, - 0.008235092461164488, - 0.00879399749613659, - 0.009343341132720846, - 0.00988313853370086, - 0.010413111030962392, - 0.010932794919182596, - 0.011442278653698644, - 0.01194155775214984, - 0.012430679243651767, - 0.012909730464248629 - ], - [ - 0.0162641548944936, - 0.017312904618881787, - 0.018330041847363483, - 0.01931674760923014, - 0.020274139710780983, - 0.02120301639698203, - 0.022104961635759316, - 0.022980717179162433, - 0.023831479924956697, - 0.024657761425969732, - 0.02546069267981209, - 0.02624115284253891, - 0.026999989605642268, - 0.027738017566496104, - 0.028456018591439737 - ], - [ - 0.0325183521357601, - 0.034001254033748526, - 0.035426395338798114, - 0.036797242590316304, - 0.0381181121122906, - 0.03939157922639274, - 0.04062029406308083, - 0.04180679059024775, - 0.04295360748153243, - 0.04406228795767749, - 0.04513502522510276, - 0.04617360388483047, - 0.047179682826295366, - 0.04815480785808946, - 0.049100525310125445 - ], - [ - 0.05332585738515393, - 0.05522274594621168, - 0.057036409816240016, - 0.0587744452120502, - 0.06044189815670986, - 0.06204357093579059, - 0.06358386540448488, - 0.06506697481981115, - 0.06649576354485234, - 0.06787371342757666, - 0.06920371445240892, - 0.07048841306999326, - 0.07173036794497871, - 0.07293157080434036, - 0.07409421901214051 - ], - [ - 0.07802393087531045, - 0.08031535886993346, - 0.0825008697269698, - 0.08458892190572512, - 0.08658715486638616, - 0.08850213704415429, - 0.09033981638823338, - 0.09210576620500675, - 0.09380393587097072, - 0.0954388873469018, - 0.09701443149132014, - 0.09853418416161744, - 0.10000102393944713, - 0.10141800254548948, - 0.10278780136602608 - ], - [ - 0.10603582714691216, - 0.10870535002702122, - 0.11124561565888975, - 0.1136680549575206, - 0.11598229486752724, - 0.1181965930609502, - 0.1203183742895102, - 0.12235452770179513, - 0.12431004550134014, - 0.12619051872166157, - 0.12800080344948306, - 0.12974482537753823, - 0.13142662504173186, - 0.1330497441538223, - 0.13461744001513187 - ], - [ - 0.13686146944011654, - 0.13989197073764142, - 0.14277153168283058, - 0.1455137358914841, - 0.14813004254956766, - 0.1506305449269113, - 0.15302441175503717, - 0.15531849858550367, - 0.15752008981485213, - 0.15963551035226198, - 0.161669929294005, - 0.1636285344744089, - 0.16551587694699527, - 0.16733610621302425, - 0.16909303021385497 - ], - [ - 0.17006350526287245, - 0.17343947933584877, - 0.17664369345959413, - 0.17969190007899954, - 0.18259737678668775, - 0.1853717820711694, - 0.18802565877522293, - 0.19056696995693356, - 0.1930042543432875, - 0.1953441674911539, - 0.19759324315599197, - 0.19975720772944192, - 0.20184125796750313, - 0.2038501251099998, - 0.2057881440676056 - ], - [ - 0.20526109334644896, - 0.20896797466779776, - 0.2124831509042228, - 0.21582445306246012, - 0.2190069019841817, - 0.2220436553634029, - 0.2249465704711051, - 0.22772488675380947, - 0.2303875350857134, - 0.2329426425574851, - 0.2353973183917888, - 0.23775797819417305, - 0.24003043378168343, - 0.24221998401306552, - 0.24433145814595972 - ] - ] - }, - { - "marker": { - "color": "red", - "line": { - "color": "midnightblue", - "width": 1 - }, - "showscale": false, - "size": 12, - "symbol": "x" - }, - "mode": "markers", - "showlegend": false, - "type": "scatter", - "x": [ - 0.7077093219314815 - ], - "y": [ - 0.5644261837128138 - ] - }, - { - "marker": { - "color": [ - 0, - 0.005555555555555556, - 0.011111111111111112, - 0.016666666666666666, - 0.022222222222222223, - 0.027777777777777776, - 0.03333333333333333, - 0.03888888888888889, - 0.044444444444444446, - 0.05, - 0.05555555555555555, - 0.06111111111111111, - 0.06666666666666667, - 0.07222222222222222, - 0.07777777777777778, - 0.08333333333333333, - 0.08888888888888889, - 0.09444444444444444, - 0.1, - 0.10555555555555556, - 0.1111111111111111, - 0.11666666666666668, - 0.12222222222222222, - 0.12777777777777777, - 0.13333333333333333, - 0.1388888888888889, - 0.14444444444444443, - 0.15, - 0.15555555555555556, - 0.16111111111111112, - 0.16666666666666666, - 0.17222222222222222, - 0.17777777777777778, - 0.18333333333333332, - 0.18888888888888888, - 0.19444444444444445, - 0.2, - 0.20555555555555555, - 0.2111111111111111, - 0.21666666666666667, - 0.2222222222222222, - 0.22777777777777777, - 0.23333333333333336, - 0.2388888888888889, - 0.24444444444444444, - 0.25, - 0.25555555555555554, - 0.2611111111111111, - 0.26666666666666666, - 0.2722222222222222, - 0.2777777777777778, - 0.2833333333333333, - 0.28888888888888886, - 0.29444444444444445, - 0.3, - 0.3055555555555556, - 0.3111111111111111, - 0.31666666666666665, - 0.32222222222222224, - 0.3277777777777778, - 0.3333333333333333, - 0.3388888888888889, - 0.34444444444444444, - 0.35, - 0.35555555555555557, - 0.3611111111111111, - 0.36666666666666664, - 0.37222222222222223, - 0.37777777777777777, - 0.38333333333333336, - 0.3888888888888889, - 0.3944444444444444, - 0.4, - 0.4055555555555555, - 0.4111111111111111, - 0.4166666666666667, - 0.4222222222222222, - 0.42777777777777776, - 0.43333333333333335, - 0.4388888888888889, - 0.4444444444444444, - 0.45, - 0.45555555555555555, - 0.46111111111111114, - 0.4666666666666667, - 0.4722222222222222, - 0.4777777777777778, - 0.48333333333333334, - 0.4888888888888889, - 0.49444444444444446, - 0.5, - 0.5055555555555555, - 0.5111111111111111, - 0.5166666666666667, - 0.5222222222222223, - 0.5277777777777778, - 0.5333333333333333, - 0.5388888888888889, - 0.5444444444444444, - 0.55, - 0.5555555555555556, - 0.5611111111111111, - 0.5666666666666667, - 0.5722222222222222, - 0.5777777777777777, - 0.5833333333333334, - 0.5888888888888889, - 0.5944444444444444, - 0.6, - 0.6055555555555555, - 0.6111111111111112, - 0.6166666666666667, - 0.6222222222222222, - 0.6277777777777778, - 0.6333333333333333, - 0.6388888888888888, - 0.6444444444444445, - 0.65, - 0.6555555555555556, - 0.6611111111111111, - 0.6666666666666666, - 0.6722222222222223, - 0.6777777777777778, - 0.6833333333333333, - 0.6888888888888889, - 0.6944444444444444, - 0.7, - 0.7055555555555556, - 0.7111111111111111, - 0.7166666666666667, - 0.7222222222222222, - 0.7277777777777777, - 0.7333333333333333, - 0.7388888888888889, - 0.7444444444444445, - 0.75, - 0.7555555555555555, - 0.7611111111111111, - 0.7666666666666667, - 0.7722222222222223, - 0.7777777777777778, - 0.7833333333333333, - 0.7888888888888889, - 0.7944444444444444, - 0.8, - 0.8055555555555556, - 0.8111111111111111, - 0.8166666666666667, - 0.8222222222222222, - 0.8277777777777777, - 0.8333333333333334, - 0.8388888888888889, - 0.8444444444444444, - 0.85, - 0.8555555555555555, - 0.8611111111111112, - 0.8666666666666667, - 0.8722222222222222, - 0.8777777777777778, - 0.8833333333333333, - 0.8888888888888888, - 0.8944444444444445, - 0.9, - 0.9055555555555556, - 0.9111111111111112, - 0.9166666666666666, - 0.9222222222222224, - 0.9277777777777778, - 0.9333333333333332, - 0.9388888888888888, - 0.9444444444444444, - 0.95, - 0.9555555555555556, - 0.9611111111111112, - 0.9666666666666668, - 0.9722222222222222, - 0.9777777777777776, - 0.9833333333333332, - 0.9888888888888888, - 0.9944444444444444 - ], - "colorscale": [ - [ - 0, - "rgb(255,255,229)" - ], - [ - 0.125, - "rgb(255,247,188)" - ], - [ - 0.25, - "rgb(254,227,145)" - ], - [ - 0.375, - "rgb(254,196,79)" - ], - [ - 0.5, - "rgb(254,153,41)" - ], - [ - 0.625, - "rgb(236,112,20)" - ], - [ - 0.75, - "rgb(204,76,2)" - ], - [ - 0.875, - "rgb(153,52,4)" - ], - [ - 1, - "rgb(102,37,6)" - ] - ], - "showscale": false - }, - "mode": "markers", - "showlegend": false, - "type": "scatter", - "x": [ - 0.6902766303732811, - 0.6837223360152214, - 0.7209158996517214, - 0.7946265560567509, - 0.7133016589003354, - 0.6865590316988087, - 0.7129826981384983, - 0.7150903439964802, - 0.7675706744067792, - 0.7209923384115915, - 0.7421211190287808, - 0.7326088307425704, - 0.6924557775110093, - 0.7491532988549072, - 0.7582453135551237, - 0.7223428772699656, - 0.6843123147148159, - 0.7535507412134932, - 0.7658910001669058, - 0.7597959926722416, - 0.7715752863595305, - 0.7678858463125848, - 0.7148222287289572, - 0.7373979081336284, - 0.7370036885158603, - 0.7190285439237782, - 0.7409507249528056, - 0.7923809699211477, - 0.7362539387650572, - 0.8328921662768863, - 0.7701284581559648, - 0.7272116461388305, - 0.7477610890077967, - 0.7276425258128625, - 0.7249616632417152, - 0.7578718480313613, - 0.7375142298358964, - 0.7447909313333756, - 0.716195308684423, - 0.7478096231467714, - 0.7403695687168349, - 0.7004723144868634, - 0.7604927132272885, - 0.6977031921624629, - 0.7106060969234703, - 0.6684143927350901, - 0.6746568668383477, - 0.6912413339348147, - 0.6925568954503704, - 0.7428606395972843, - 0.6369919902409236, - 0.6809797723635713, - 0.6986129422506805, - 0.6397604549980783, - 0.7274453620527205, - 0.7057557918553489, - 0.6923305183101992, - 0.735292595229998, - 0.7383630521509149, - 0.6582635062453439, - 0.6103927896915677, - 0.7117049986805006, - 0.7164127071962608, - 0.6955280845754389, - 0.6314431825720496, - 0.70334806076912, - 0.6834844779944443, - 0.7130580146538251, - 0.701018394793316, - 0.8012231280471576, - 0.6834072829848803, - 0.6766395405703918, - 0.6695492882203142, - 0.6852616315608138, - 0.6822291966853495, - 0.696886827769854, - 0.6456124675929328, - 0.6764109059754393, - 0.705979946727988, - 0.6624499685201576, - 0.6884692384324372, - 0.6610171105487663, - 0.6662089216739889, - 0.6820717350395511, - 0.6591928604485974, - 0.6350827008163039, - 0.6549341537680038, - 0.6402320275923087, - 0.6776133646758087, - 0.6625383911290141, - 0.6318921498153618, - 0.6108338833105418, - 0.5691975132410496, - 0.6170896577222232, - 0.6325064548933875, - 0.6319668181923814, - 0.6476118390020807, - 0.5237057161649432, - 0.5366059524694143, - 0.5542920877770234, - 0.5948920253649208, - 0.5467108510726004, - 0.4801988755861099, - 0.6018256173120544, - 0.5599275474805228, - 0.6581436276007904, - 0.5393456597923282, - 0.5918043474620778, - 0.6032467166000338, - 0.5113997966836226, - 0.5662937304226787, - 0.5411449876989373, - 0.7522623543937985, - 0.47300261061494786, - 0.45173918120372614, - 0.4976722673854519, - 0.4689907301754455, - 0.5541377906315773, - 0.4504546793071138, - 0.6022479482477466, - 0.6156885450117099, - 0.45436602493242023, - 0.4500175485628539, - 0.4855240245833936, - 0.5445051208208629, - 0.5250409399751258, - 0.4621614206017263, - 0.46546829216026814, - 0.5949385857621495, - 0.5005384614970788, - 0.6154160330627595, - 0.521081729005421, - 0.451936512401699, - 0.49668507444031024, - 0.4863293435184069, - 0.4586400472810632, - 0.488730002626555, - 0.5106188186124558, - 0.46692091173084943, - 0.5425970307687905, - 0.5186579654548735, - 0.481693978563431, - 0.4790198658684338, - 0.5356194413697889, - 0.506304300084812, - 0.4843029457267676, - 0.4672084494022005, - 0.4928318477941483, - 0.4593650196315271, - 0.47375490876461296, - 0.5061031801859008, - 0.484692181266044, - 0.5294833304110232, - 0.4914890471570528, - 0.5178294908920423, - 0.4743467688320612, - 0.4917381710327104, - 0.5141890519043512, - 0.4852820322780376, - 0.490489442878623, - 0.497269002193416, - 0.4821418911990455, - 0.5057046700328383, - 0.4950662092354254, - 0.4870440044324078, - 0.5042449635703588, - 0.48769943913510927, - 0.48091299066329, - 0.496164916765345, - 0.4928123517245285, - 0.4892732498887095, - 0.4910414045232242, - 0.4964239894847035, - 0.4910249143640793, - 0.4932404536756434, - 0.49563059987983366, - 0.49210442386341224, - 0.49800518576208314, - 0.4924001104566205, - 0.49211348729586846 - ], - "y": [ - 0.553658592769684, - 0.5291664563172557, - 0.5418690511200387, - 0.5860520282559276, - 0.6039766944496866, - 0.5021148610043364, - 0.6188246238506271, - 0.5580820996994289, - 0.6174766011235178, - 0.5851734438904747, - 0.6320112310999677, - 0.6541908852987183, - 0.5889916664063238, - 0.6124624465981827, - 0.5937705743090749, - 0.6089595104062573, - 0.652921450278538, - 0.5915880765037422, - 0.5453365369791535, - 0.5444319032769357, - 0.5994940480326273, - 0.5979179838343834, - 0.5803826965514426, - 0.6084695492637174, - 0.5839839739800865, - 0.6304010806135251, - 0.5789270812244718, - 0.5964619636998483, - 0.5938001583813863, - 0.5960359136526083, - 0.5852278993297413, - 0.5980429026801456, - 0.5979321079573758, - 0.5788797742984202, - 0.5895037351207152, - 0.5976448214149047, - 0.5892442402338158, - 0.6090745236798364, - 0.5811665589799486, - 0.6008936367948814, - 0.6069347099181053, - 0.5951812303976365, - 0.5943555151978129, - 0.5985386164723707, - 0.6106828629430981, - 0.597974821738626, - 0.6034310183973846, - 0.5929162578994348, - 0.5966156367313359, - 0.6036665525964039, - 0.5943268374486825, - 0.5993025846002807, - 0.5962020189229235, - 0.6070690890649185, - 0.5969252121260817, - 0.5902648401082122, - 0.5966709604544903, - 0.5966023686142383, - 0.5958823001643863, - 0.6002255687809663, - 0.5976056489404203, - 0.5985956707767083, - 0.5976752921444639, - 0.5978518110265753, - 0.6058882579986162, - 0.593200026390547, - 0.5989972441885394, - 0.5973001542896139, - 0.5946485830107348, - 0.5932368392910224, - 0.6019474315910912, - 0.5990294881204316, - 0.597297706223024, - 0.6006764307252052, - 0.6005445194705809, - 0.5993441673442158, - 0.5958975483108374, - 0.6005334385612898, - 0.5985982160171898, - 0.5985518179846437, - 0.5982762571434445, - 0.600451874972249, - 0.5992302807160195, - 0.5997679451111007, - 0.6005228496041005, - 0.6003165551452361, - 0.5989482941908217, - 0.6020444509440077, - 0.6004345518626775, - 0.5984825994851658, - 0.6009965167233451, - 0.6032959929553446, - 0.6048781012702418, - 0.6034304429093383, - 0.6019414162300202, - 0.6001611054221517, - 0.6013179609009099, - 0.608429273080786, - 0.6078712193882138, - 0.6044533842659701, - 0.6025230210326784, - 0.6035675122622304, - 0.6107375500414033, - 0.6050307745932996, - 0.6106275959941742, - 0.6016122434558566, - 0.6114899239008053, - 0.6050311334718923, - 0.6014981809819214, - 0.6080575715144376, - 0.607845690300184, - 0.6076013773917742, - 0.5903909082924454, - 0.61224203261209, - 0.6190662186342195, - 0.6086595445022761, - 0.6139812256851659, - 0.6076153224776284, - 0.6132175800403299, - 0.6063485887296345, - 0.6035001796676076, - 0.615823227552071, - 0.61830560564294, - 0.612782020473002, - 0.6082177078613348, - 0.6082403475703779, - 0.6155777949507325, - 0.6148273397699636, - 0.6055420935919663, - 0.606780266498375, - 0.6038592530591839, - 0.6102488024599763, - 0.6194353534444352, - 0.6112560932027926, - 0.6126232039405176, - 0.620029675318578, - 0.6125758472932906, - 0.609945153577358, - 0.6162337666231698, - 0.6075900952361227, - 0.6099972639092032, - 0.6126044058279139, - 0.6138504731948401, - 0.6077264543421858, - 0.6104370263507916, - 0.6136292202348169, - 0.6154412432862323, - 0.6124632214224123, - 0.6171390364374959, - 0.613953767810735, - 0.6120349651962869, - 0.612920152156003, - 0.6091711894203783, - 0.6125980121137751, - 0.6097991462801648, - 0.6135378585531511, - 0.6124437628675353, - 0.6102034527530064, - 0.6132349787883588, - 0.6126477085558841, - 0.6118968081698247, - 0.6138846320334953, - 0.6113144216959934, - 0.6122449289399643, - 0.6128173981806031, - 0.6115704456377821, - 0.6127776478127419, - 0.6133110346072097, - 0.6119269612238567, - 0.612369323580598, - 0.6128762337540471, - 0.6125370178078247, - 0.6120660337227175, - 0.6123914179742178, - 0.612498898860597, - 0.6121285702776945, - 0.6123350913973512, - 0.6118724445958914, - 0.6125337841159786, - 0.6123821293449487 - ] - } - ], - "layout": { - "height": 600, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Cost Landscape", - "x": 0.5, - "y": 0.9 - }, - "width": 600, - "xaxis": { - "range": [ - 0.6, - 0.9 - ], - "title": { - "text": "Negative electrode active material volume fraction" - } - }, - "yaxis": { - "range": [ - 0.5, - 0.8 - ], - "title": { - "text": "Positive electrode active material volume fraction" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Plot the cost landscape\n", - "pybop.plot2d(cost, steps=15)\n", - "# Plot the cost landscape with optimisation path and updated bounds\n", - "bounds = np.array([[0.6, 0.9], [0.5, 0.8]])\n", - "pybop.plot2d(optim, bounds=bounds, steps=15);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Conclusion\n", - "\n", - "This notebook illustrates how to perform parameter estimation using CMA-ES in PyBOP, providing insights into the optimisation process through various visualisations." - ] - } - ], - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.7" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "06f2374f91c8455bb63252092512f2ed": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "2.0.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border_bottom": null, - "border_left": null, - "border_right": null, - "border_top": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "423bffea3a1c42b49a9ad71218e5811b": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "2.0.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border_bottom": null, - "border_left": null, - "border_right": null, - "border_top": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "56ff19291e464d63b23e63b8e2ac9ea3": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "SliderStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "SliderStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "description_width": "", - "handle_color": null - } - }, - "646a8670cb204a31bb56bc2380898093": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "2.0.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border_bottom": null, - "border_left": null, - "border_right": null, - "border_top": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "7d46516469314b88be3500e2afcafcf6": { - "model_module": "@jupyter-widgets/output", - "model_module_version": "1.0.0", - "model_name": "OutputModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/output", - "_model_module_version": "1.0.0", - "_model_name": "OutputModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/output", - "_view_module_version": "1.0.0", - "_view_name": "OutputView", - "layout": "IPY_MODEL_646a8670cb204a31bb56bc2380898093", - "msg_id": "", - "outputs": [], - "tabbable": null, - "tooltip": null - } - }, - "8d003c14da5f4fa68284b28c15cee6e6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "VBoxModel", - "state": { - "_dom_classes": [ - "widget-interact" - ], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "VBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "VBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_aef2fa7adcc14ad0854b73d5910ae3b4", - "IPY_MODEL_7d46516469314b88be3500e2afcafcf6" - ], - "layout": "IPY_MODEL_423bffea3a1c42b49a9ad71218e5811b", - "tabbable": null, - "tooltip": null - } - }, - "aef2fa7adcc14ad0854b73d5910ae3b4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "FloatSliderModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "FloatSliderModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "FloatSliderView", - "behavior": "drag-tap", - "continuous_update": true, - "description": "t", - "description_allow_html": false, - "disabled": false, - "layout": "IPY_MODEL_06f2374f91c8455bb63252092512f2ed", - "max": 1.1333333333333333, - "min": 0, - "orientation": "horizontal", - "readout": true, - "readout_format": ".2f", - "step": 0.011333333333333332, - "style": "IPY_MODEL_56ff19291e464d63b23e63b8e2ac9ea3", - "tabbable": null, - "tooltip": null, - "value": 0 - } - } - } - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/examples/notebooks/pouch_cell_identification.ipynb b/examples/notebooks/pouch_cell_identification.ipynb new file mode 100644 index 00000000..41fc4faf --- /dev/null +++ b/examples/notebooks/pouch_cell_identification.ipynb @@ -0,0 +1,2710 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "expmkveO04pw" + }, + "source": [ + "## Pouch Cell Model Parameter Identification\n", + "\n", + "In this notebook, we present the single particle model with a two dimensional current collector. This is achieved via the potential-pair models introduced in [[1]](10.1149/1945-7111/abbce4) as implemented in PyBaMM. At a high-level this is accomplished as a potential-pair model which is resolved across the discretised spatial locations.\n", + "\n", + "### Setting up the Environment\n", + "\n", + "Before we begin, we need to ensure that we have all the necessary tools. We will install PyBOP from its development branch and upgrade some dependencies:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "X87NUGPW04py", + "outputId": "0d785b07-7cff-4aeb-e60a-4ff5a669afbf" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pip in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (24.0)\n", + "Requirement already satisfied: ipywidgets in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (8.1.2)\n", + "Requirement already satisfied: comm>=0.1.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (0.2.1)\n", + "Requirement already satisfied: ipython>=6.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (8.22.1)\n", + "Requirement already satisfied: traitlets>=4.3.1 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (5.14.1)\n", + "Requirement already satisfied: widgetsnbextension~=4.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (4.0.10)\n", + "Requirement already satisfied: jupyterlab-widgets~=3.0.10 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipywidgets) (3.0.10)\n", + "Requirement already satisfied: decorator in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n", + "Requirement already satisfied: jedi>=0.16 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\n", + "Requirement already satisfied: matplotlib-inline in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\n", + "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.43)\n", + "Requirement already satisfied: pygments>=2.4.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.17.2)\n", + "Requirement already satisfied: stack-data in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\n", + "Requirement already satisfied: pexpect>4.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\n", + "Requirement already satisfied: ptyprocess>=0.5 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\n", + "Requirement already satisfied: wcwidth in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from prompt-toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13)\n", + "Requirement already satisfied: executing>=1.2.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.0.1)\n", + "Requirement already satisfied: asttokens>=2.1.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.1)\n", + "Requirement already satisfied: pure-eval in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\n", + "Requirement already satisfied: six>=1.12.0 in /Users/engs2510/.pyenv/versions/3.11.7/envs/pybop/lib/python3.11/site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\n", + "Note: you may need to restart the kernel to use updated packages.\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --upgrade pip ipywidgets\n", + "%pip install pybop -q" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jAvD5fk104p0" + }, + "source": [ + "### Importing Libraries\n", + "\n", + "With the environment set up, we can now import PyBOP alongside other libraries we will need:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "SQdt4brD04p1" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import plotly.graph_objects as go\n", + "\n", + "import pybop" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5XU-dMtU04p2" + }, + "source": [ + "### Generate Synthetic Data\n", + "\n", + "To demonstrate parameter estimation, we first need some data. We will generate synthetic data using the PyBOP forward model, which requires defining a parameter set and the model itself.\n", + "\n", + "#### Defining Parameters and Model\n", + "\n", + "We start by creating an example parameter set and then instantiate the single-particle model (SPM):" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "parameter_set = pybop.ParameterSet.pybamm(\"Marquis2019\")\n", + "parameter_set.update(\n", + " {\n", + " \"Negative electrode active material volume fraction\": 0.495,\n", + " \"Positive electrode active material volume fraction\": 0.612,\n", + " }\n", + ")\n", + "model = pybop.lithium_ion.SPM(\n", + " parameter_set=parameter_set,\n", + " options={\"current collector\": \"potential pair\", \"dimensionality\": 2},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Update the number of spatial locations\n", + "\n", + "Next, we update the number of spatial locations to solve the potential-pair model," + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "model.var_pts[\"y\"] = 5\n", + "model.var_pts[\"z\"] = 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Simulating Forward Model\n", + "\n", + "We can then simulate the model using the `predict` method, with a default constant current to generate voltage data." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "sBasxv8U04p3" + }, + "outputs": [], + "source": [ + "t_eval = np.arange(0, 900, 2)\n", + "values = model.predict(t_eval=t_eval)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Adding Noise to Voltage Data\n", + "\n", + "To make the parameter estimation more realistic, we add Gaussian noise to the data." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "sigma = 0.001\n", + "corrupt_values = values[\"Voltage [V]\"].data + np.random.normal(0, sigma, len(t_eval))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "X8-tubYY04p_" + }, + "source": [ + "## Identify the Parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PQqhvSZN04p_" + }, + "source": [ + "We will now set up the parameter estimation process by defining the datasets for optimisation and selecting the model parameters we wish to estimate." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating Optimisation Dataset\n", + "\n", + "The dataset for optimisation is composed of time, current, and the noisy voltage data:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "zuvGHWID04p_" + }, + "outputs": [], + "source": [ + "dataset = pybop.Dataset(\n", + " {\n", + " \"Time [s]\": t_eval,\n", + " \"Current function [A]\": values[\"Current [A]\"].data,\n", + " \"Voltage [V]\": corrupt_values,\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ffS3CF_704qA" + }, + "source": [ + "### Defining Parameters to Estimate\n", + "\n", + "We select the parameters for estimation and set up their prior distributions and bounds:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "WPCybXIJ04qA" + }, + "outputs": [], + "source": [ + "parameters = [\n", + " pybop.Parameter(\n", + " \"Negative electrode active material volume fraction\",\n", + " prior=pybop.Gaussian(0.7, 0.05),\n", + " bounds=[0.45, 0.9],\n", + " ),\n", + " pybop.Parameter(\n", + " \"Positive electrode active material volume fraction\",\n", + " prior=pybop.Gaussian(0.58, 0.05),\n", + " bounds=[0.5, 0.8],\n", + " ),\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For plotting purposed, we want additional variables to be stored in the problem class. These are defined as," + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "additional_variables = [\n", + " \"Negative current collector potential [V]\",\n", + " \"Positive current collector potential [V]\",\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "n4OHa-aF04qA" + }, + "source": [ + "### Setting up the Optimisation Problem\n", + "\n", + "With the datasets and parameters defined, we can set up the optimisation problem, its cost function, and the optimiser." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "etMzRtx404qA" + }, + "outputs": [], + "source": [ + "problem = pybop.FittingProblem(\n", + " model, parameters, dataset, additional_variables=additional_variables\n", + ")\n", + "cost = pybop.SumSquaredError(problem)\n", + "optim = pybop.Optimisation(cost, optimiser=pybop.CMAES)\n", + "optim.set_max_iterations(30)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "caprp-bV04qB" + }, + "source": [ + "### Running the Optimisation\n", + "\n", + "We proceed to run the CMA-ES optimisation algorithm to estimate the parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "-9OVt0EQ04qB" + }, + "outputs": [], + "source": [ + "x, final_cost = optim.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-4pZsDmS04qC" + }, + "source": [ + "### Viewing the Estimated Parameters\n", + "\n", + "After the optimisation, we can examine the estimated parameter values:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Hgz8SV4i04qC", + "outputId": "e1e42ae7-5075-4c47-dd68-1b22ecc170f6" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.47496537, 0.61140011])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x # This will output the estimated parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KxKURtH704qC" + }, + "source": [ + "## Plotting and Visualisation\n", + "\n", + "PyBOP provides various plotting utilities to visualise the results of the optimisation." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-cWCOiqR04qC" + }, + "source": [ + "### Comparing System Response\n", + "\n", + "We can quickly plot the system's response using the estimated parameters compared to the target:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 467 + }, + "id": "tJUJ80Ve04qD", + "outputId": "855fbaa2-1e09-4935-eb1a-8caf7f99eb75" + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "02004006008003.73.723.743.763.78ReferenceModelOptimised ComparisonTime / sVoltage / V" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pybop.quick_plot(problem, parameter_values=x, title=\"Optimised Comparison\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Spatial Plotting\n", + "\n", + "We can now plot the spatial variables from the solution object. First, the final negative current collector potential can be displayed. In this example, this is just a reference variable, but could be used for fitting or optimisation in the correct workflows." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "colorscale": [ + [ + 0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1, + "#fde725" + ] + ], + "type": "contour", + "x": [ + 0, + 1, + 2, + 3 + ], + "y": [ + 0, + 1, + 2, + 3 + ], + "z": [ + [ + -0.00022055019399999868, + -0.00020817991511510437, + -0.00017733967875949684, + -0.00013382475248570048, + -0.00009744280975082956 + ], + [ + -0.0002200682921755627, + -0.0002077164608979826, + -0.00017025065441730902, + -0.000104111854657049, + 3.792828462001579e-30 + ], + [ + -0.00023289339271472128, + -0.00022148992831166653, + -0.0001854997008337834, + -0.00011792954324305566, + 9.13516546016691e-32 + ], + [ + -0.0002546876903842077, + -0.00024828747219895466, + -0.0002297088191867596, + -0.000203527233570664, + -0.0001826834881019309 + ], + [ + -0.00026260492784945276, + -0.0002597799801717452, + -0.0002481422113351371, + -0.00023376411978310373, + -0.00022697336267411963 + ] + ] + } + ], + "layout": { + "height": 600, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Negative current collector potential [V]" + }, + "width": 600, + "xaxis": { + "title": { + "text": "x node" + } + }, + "yaxis": { + "title": { + "text": "y node" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sol = problem.evaluate(x)\n", + "\n", + "go.Figure(\n", + " [\n", + " go.Contour(\n", + " x=np.arange(0, model.var_pts[\"y\"] - 1, 1),\n", + " y=np.arange(0, model.var_pts[\"z\"] - 1, 1),\n", + " z=sol[\"Negative current collector potential [V]\"][:, :, -1],\n", + " colorscale=\"Viridis\",\n", + " )\n", + " ],\n", + " layout=dict(\n", + " title=\"Negative current collector potential [V]\",\n", + " xaxis_title=\"x node\",\n", + " yaxis_title=\"y node\",\n", + " width=600,\n", + " height=600,\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We plot can then plot the positive current collector potential," + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "colorscale": [ + [ + 0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1, + "#fde725" + ] + ], + "type": "contour", + "x": [ + 0, + 1, + 2, + 3 + ], + "y": [ + 0, + 1, + 2, + 3 + ], + "z": [ + [ + 3.7078876177015263, + 3.707876347847289, + 3.707853323934703, + 3.707826016404782, + 3.7078085641197807 + ], + [ + 3.70786512440276, + 3.707853590894792, + 3.7078220221903138, + 3.707778552309027, + 3.707744572139743 + ], + [ + 3.7078229486185177, + 3.707804218479872, + 3.707745495045241, + 3.70763696229213, + 3.7074529354654655 + ], + [ + 3.7077939368814823, + 3.7077737787683542, + 3.7077102612801465, + 3.7075952142137254, + 3.707407186787417 + ], + [ + 3.7077846062571647, + 3.70776995420114, + 3.707720253036077, + 3.707647593021621, + 3.7075890859257985 + ] + ] + } + ], + "layout": { + "height": 600, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Positive current collector potential [V]" + }, + "width": 600, + "xaxis": { + "title": { + "text": "x node" + } + }, + "yaxis": { + "title": { + "text": "y node" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "go.Figure(\n", + " [\n", + " go.Contour(\n", + " x=np.arange(0, model.var_pts[\"y\"] - 1, 1),\n", + " y=np.arange(0, model.var_pts[\"z\"] - 1, 1),\n", + " z=sol[\"Positive current collector potential [V]\"][:, :, -1],\n", + " colorscale=\"Viridis\",\n", + " )\n", + " ],\n", + " layout=dict(\n", + " title=\"Positive current collector potential [V]\",\n", + " xaxis_title=\"x node\",\n", + " yaxis_title=\"y node\",\n", + " width=600,\n", + " height=600,\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Convergence and Parameter Trajectories\n", + "\n", + "To assess the optimisation process, we can plot the convergence of the cost function and the trajectories of the parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "id": "N5XYkevi04qD" + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "510152025300.00050.00060.00070.00080.00090.001ConvergenceIterationCost" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "0501001500.450.50.550.60.650.70.750.80.850.90501001500.50.520.540.560.580.60.620.640.660.68Negative electrode active material volume fractionPositive electrode active material volume fractionParameter ConvergenceFunction CallFunction CallNegative electrode active material volume fractionPositive electrode active material volume fraction" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pybop.plot_convergence(optim)\n", + "pybop.plot_parameters(optim);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cost Landscape\n", + "\n", + "Finally, we can visualise the cost landscape and the path taken by the optimiser:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "0.50.60.70.80.90.50.550.60.650.70.750.80.040.080.120.160.20.24Cost LandscapeNegative electrode active material volume fractionPositive electrode active material volume fraction" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pybop.plot2d(optim, steps=15);" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "06f2374f91c8455bb63252092512f2ed": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "423bffea3a1c42b49a9ad71218e5811b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "56ff19291e464d63b23e63b8e2ac9ea3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "SliderStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "SliderStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "description_width": "", + "handle_color": null + } + }, + "646a8670cb204a31bb56bc2380898093": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7d46516469314b88be3500e2afcafcf6": { + "model_module": "@jupyter-widgets/output", + "model_module_version": "1.0.0", + "model_name": "OutputModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/output", + "_model_module_version": "1.0.0", + "_model_name": "OutputModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/output", + "_view_module_version": "1.0.0", + "_view_name": "OutputView", + "layout": "IPY_MODEL_646a8670cb204a31bb56bc2380898093", + "msg_id": "", + "outputs": [], + "tabbable": null, + "tooltip": null + } + }, + "8d003c14da5f4fa68284b28c15cee6e6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [ + "widget-interact" + ], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_aef2fa7adcc14ad0854b73d5910ae3b4", + "IPY_MODEL_7d46516469314b88be3500e2afcafcf6" + ], + "layout": "IPY_MODEL_423bffea3a1c42b49a9ad71218e5811b", + "tabbable": null, + "tooltip": null + } + }, + "aef2fa7adcc14ad0854b73d5910ae3b4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatSliderModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatSliderModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "FloatSliderView", + "behavior": "drag-tap", + "continuous_update": true, + "description": "t", + "description_allow_html": false, + "disabled": false, + "layout": "IPY_MODEL_06f2374f91c8455bb63252092512f2ed", + "max": 1.1333333333333333, + "min": 0, + "orientation": "horizontal", + "readout": true, + "readout_format": ".2f", + "step": 0.011333333333333332, + "style": "IPY_MODEL_56ff19291e464d63b23e63b8e2ac9ea3", + "tabbable": null, + "tooltip": null, + "value": 0 + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}