{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Using callbacks in objectives\n", "\n", "This notebook explains how to use a callback in an objective function. Potential use cases for this are:\n", "- Plotting some outputs at each iteration of the optimization\n", "- Saving internal variables to plot once the optimization is complete\n", "\n", "Some objectives have \"internal callbacks\" which are not intended to be user facing. These are standard callbacks that can be used to plot the results of an optimization by using `DataFit.plot_fit_results()`. For user-facing callbacks, users should create their own callback objects and call them directly for plotting, as demonstrated in this notebook" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating a custom callback" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To implement a custom callback, we create a class that inherits from `iwp.callbacks.Callback` and calls some specific functions. See the documentation for `iwp.callbacks.Callback` for more information on the available functions and their expected inputs." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import ionworkspipeline as iwp\n", "import matplotlib.pyplot as plt\n", "import pybamm\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "class MyCallback(iwp.callbacks.Callback):\n", " def __init__(self):\n", " super().__init__()\n", " # Implement our own iteration counter\n", " self.iter = 0\n", "\n", " def on_objective_build(self, logs):\n", " self.data_ = logs[\"data\"]\n", "\n", " def on_run_iteration(self, logs):\n", " # Print some information at each iteration\n", " inputs = logs[\"inputs\"]\n", " V_model = logs[\"outputs\"][\"Voltage [V]\"]\n", " V_data = self.data_[\"Voltage [V]\"]\n", "\n", " # calculate RMSE, note this is not necessarily the cost function used in the optimization\n", " rmse = np.sqrt(np.nanmean((V_model - V_data) ** 2))\n", "\n", " print(f\"Iteration: {self.iter}, Inputs: {inputs}, RMSE: {rmse}\")\n", " self.iter += 1\n", "\n", " def on_datafit_finish(self, logs):\n", " self.fit_results_ = logs\n", "\n", " def plot_fit_results(self):\n", " \"\"\"\n", " Plot the fit results.\n", " \"\"\"\n", " data = self.data_\n", " fit = self.fit_results_[\"outputs\"]\n", "\n", " fit_results = {\n", " \"data\": (data[\"Time [s]\"], data[\"Voltage [V]\"]),\n", " \"fit\": (fit[\"Time [s]\"], fit[\"Voltage [V]\"]),\n", " }\n", "\n", " markers = {\"data\": \"o\", \"fit\": \"--\"}\n", " colors = {\"data\": \"k\", \"fit\": \"tab:red\"}\n", " fig, ax = plt.subplots()\n", " for name, (t, V) in fit_results.items():\n", " ax.plot(\n", " t,\n", " V,\n", " markers[name],\n", " label=name,\n", " color=colors[name],\n", " mfc=\"none\",\n", " linewidth=2,\n", " )\n", " ax.grid(alpha=0.5)\n", " ax.set_xlabel(\"Time [s]\")\n", " ax.set_ylabel(\"Voltage [V]\")\n", " ax.legend()\n", "\n", " return fig, ax" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To use this callback, we generate synthetic data for a current-driven experiment and fit a SPM using the `CurrentDriven` objective." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteration: 0, Inputs: {'D_s': 1.0}, RMSE: 0.15909544741400328\n", "Iteration: 1, Inputs: {'D_s': 1.0}, RMSE: 0.15909544741400328\n", "Iteration: 2, Inputs: {'D_s': 2.0}, RMSE: 0.06447645367954967\n", "Iteration: 3, Inputs: {'D_s': 0.0}, RMSE: 9999999996.444778\n", "Iteration: 4, Inputs: {'D_s': 1.500000000015711}, RMSE: 0.10181419230396317\n", "Iteration: 5, Inputs: {'D_s': 2.25}, RMSE: 0.0511914693039757\n", "Iteration: 6, Inputs: {'D_s': 2.35}, RMSE: 0.046564817223575174\n", "Iteration: 7, Inputs: {'D_s': 2.45}, RMSE: 0.04225679162933768\n", "Iteration: 8, Inputs: {'D_s': 2.5500000000000003}, RMSE: 0.03823623139781023\n", "Iteration: 9, Inputs: {'D_s': 2.6500000000000004}, RMSE: 0.03447275211907378\n", "Iteration: 10, Inputs: {'D_s': 2.79142135623731}, RMSE: 0.029545925327783447\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n", "[IDAS ERROR] IDACalcIC\n", " The linesearch algorithm failed: step too small or too many backtracks.\n", "\n", "\n", "[IDAS ERROR] IDASolve\n", " At t = 0 and h = 8.88112e-60, the corrector convergence failed repeatedly or with |h| = hmin.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration: 11, Inputs: {'D_s': 2.89142135623731}, RMSE: 0.026301971986168567\n", "Iteration: 12, Inputs: {'D_s': 2.99142135623731}, RMSE: 0.023247195931468168\n", "Iteration: 13, Inputs: {'D_s': 3.13284271247462}, RMSE: 0.01921188102322145\n", "Iteration: 14, Inputs: {'D_s': 3.33284271247462}, RMSE: 0.014012123861795017\n", "Iteration: 15, Inputs: {'D_s': 3.43284271247462}, RMSE: 0.011609786833898914\n", "Iteration: 16, Inputs: {'D_s': 3.5328427124746202}, RMSE: 0.009325897899185158\n", "Iteration: 17, Inputs: {'D_s': 3.67426406871193}, RMSE: 0.0062826770698958985\n", "Iteration: 18, Inputs: {'D_s': 3.827330184595918}, RMSE: 0.003212744847166835\n", "Iteration: 19, Inputs: {'D_s': 3.927330184595918}, RMSE: 0.0013216783241073286\n", "Iteration: 20, Inputs: {'D_s': 4.027330184595918}, RMSE: 0.0004855748675391337\n", "Iteration: 21, Inputs: {'D_s': 4.168751540833227}, RMSE: 0.0029061820436335375\n", "Iteration: 22, Inputs: {'D_s': 4.092094987752416}, RMSE: 0.0016113565965123126\n", "Iteration: 23, Inputs: {'D_s': 4.055594668958193}, RMSE: 0.0009794598017832828\n", "Iteration: 24, Inputs: {'D_s': 4.002330184595918}, RMSE: 4.213938312523671e-05\n", "Iteration: 25, Inputs: {'D_s': 3.977330184595918}, RMSE: 0.00040803108680121335\n", "Iteration: 26, Inputs: {'D_s': 4.012330184595918}, RMSE: 0.00021972444757625573\n", "Iteration: 27, Inputs: {'D_s': 3.992330184595918}, RMSE: 0.00013806441796073717\n", "Iteration: 28, Inputs: {'D_s': 4.00727743923419}, RMSE: 0.00012985611006363198\n", "Iteration: 29, Inputs: {'D_s': 3.999830184595918}, RMSE: 9.122720250283677e-06\n", "Iteration: 30, Inputs: {'D_s': 3.997330184595918}, RMSE: 4.889802680103684e-05\n", "Iteration: 31, Inputs: {'D_s': 3.998830184595918}, RMSE: 2.2925191065538718e-05\n", "Iteration: 32, Inputs: {'D_s': 4.000830184595918}, RMSE: 1.6762516677512525e-05\n", "Iteration: 33, Inputs: {'D_s': 4.000329956778349}, RMSE: 1.0105089997229255e-05\n", "Iteration: 34, Inputs: {'D_s': 3.999580184595918}, RMSE: 1.1565004311156431e-05\n", "Iteration: 35, Inputs: {'D_s': 4.000017275322238}, RMSE: 8.460568714768011e-06\n", "Iteration: 36, Inputs: {'D_s': 4.000117275322237}, RMSE: 8.633825405252919e-06\n", "Iteration: 37, Inputs: {'D_s': 4.000007275322238}, RMSE: 8.46386097794348e-06\n", "Iteration: 38, Inputs: {'D_s': 4.000027275322237}, RMSE: 8.461057033737903e-06\n", "Iteration: 39, Inputs: {'D_s': 4.000020983672033}, RMSE: 8.460308691934741e-06\n", "Iteration: 40, Inputs: {'D_s': 4.000021983672033}, RMSE: 8.460327591878399e-06\n", "Iteration: 41, Inputs: {'D_s': 4.000019983672033}, RMSE: 8.460327605049586e-06\n", "Iteration: 42, Inputs: {'D_s': 4.000020983672033}, RMSE: 8.460308691934741e-06\n" ] } ], "source": [ "model = pybamm.lithium_ion.SPM()\n", "parameter_values = pybamm.ParameterValues(\"Chen2020\")\n", "sim = pybamm.Simulation(model, parameter_values=parameter_values)\n", "sim.solve(np.linspace(0, 3600, 1000))\n", "data = pd.DataFrame(\n", " {x: sim.solution[x].entries for x in [\"Time [s]\", \"Current [A]\", \"Voltage [V]\"]}\n", ")\n", "\n", "# In this example we just fit the diffusivity in the positive electrode\n", "parameters = {\n", " \"Positive particle diffusivity [m2.s-1]\": iwp.Parameter(\"D_s\", initial_value=1e-15),\n", "}\n", "\n", "# Create the callback\n", "callback = MyCallback()\n", "objective = iwp.objectives.CurrentDriven(\n", " data, options={\"model\": model}, callbacks=callback\n", ")\n", "current_driven = iwp.DataFit(objective, parameters=parameters)\n", "\n", "# make sure we're not accidentally initializing with the correct values by passing\n", "# them in\n", "params_for_pipeline = {k: v for k, v in parameter_values.items() if k not in parameters}\n", "\n", "params_fit = current_driven.run(params_for_pipeline)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we use the callback object we created to plot the results at the end of the optimization." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(
,\n", " )" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "callback.plot_fit_results()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cost logger\n", "\n", "The `DataFit` class has an internal \"cost-logger\" attribute that can be used to log and visualize the cost function during optimization. This is useful for monitoring the progress of the optimization. The cost logger is a dictionary that stores the cost function value at each iteration. The cost logger can be accessed using the `cost_logger` attribute of the `DataFit` object." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By default, the cost logger just tracks the cost function value. `DataFit.plot_trace` can be used the plot the progress at the end of the optimization." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\n", "[IDAS ERROR] IDACalcIC\n", " The linesearch algorithm failed: step too small or too many backtracks.\n", "\n", "\n", "[IDAS ERROR] IDASolve\n", " At t = 0 and h = 8.88112e-60, the corrector convergence failed repeatedly or with |h| = hmin.\n", "\n" ] }, { "data": { "text/plain": [ "(
,\n", " array([,\n", " ], dtype=object))" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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bVtNTU2LY3fs2CEDkN99913btnfeeUcGIN94441yfX19s/0dPceUKVNkSZJs21NTU2VBEORHHnnEtq2+vl7u379/s9f6/fffywDkDz74oNm1Nm3a1GL7Nddc02o//fnPf5b9/f3lkydPNtu+ePFiWa1Wy+fOnZNl2fLzAyDrdDq5pKSkxXla4+/vL8+aNavF9meeeUYGIP/qV79q8VxrfffRRx/JAOTt27fbts2cOVNWqVSt/t5a+1LpayMi6m6c/kRELlNVVQUACAwMVLT/V199BQDIzMxstv23v/0tANhyL4KDgwEAX3zxBcxmc2c0FVqtFiqV5ZYpiiIuX76MgIAADB06FPv27Wux/5w5c5rNy//Zz34GwDLiAVimZ5WUlOCRRx5ptt/s2bMRFBSkuF2pqalITk62PR4wYADuvPNOfP311xBFEQDg6+tre95sNuPy5cuIj49HcHBwq22fN28e1Gp1s22OnuPXv/617RN4ABg/fjxkWcavf/1r2za1Wo2UlBRbnwDA+vXrERQUhJtvvhllZWW2r+TkZAQEBOC7775rt0/Wr1+Pn/3sZwgJCWl2jrS0NIii2GJ62C9/+UvbdDhnPfLIIy22Ne27uro6lJWV4brrrgMAW99JkoSNGzdi6tSpSElJaXEOa186+tqIiLoLpz8RkcvodDoAQHV1taL9z549C5VKhfj4+Gbbo6KiEBwcjLNnzwIAJkyYgF/+8pdYunQp/v73v2PixImYNm0a7r//fmi12g61VZIkvPLKK3j99ddRUFBge8MOAH369Gmx/4ABA5o9DgkJAQBbXoC1rQkJCc328/b2xuDBgxW36+rjAWDIkCGoqalBaWkpoqKiUFtbi2XLluGdd95BYWFhsxyGysrKFscPGjSoxTZHz3H167cGSldP6woKCmqWK5GXl4fKykpERES0+npLSkpa3d5UXl4eDh48aDdQuPocrb3ejmrtXOXl5Vi6dCk+/vjjFte29l1paSmqqqpsU9bscfS1ERF1FwYVROQyOp0O0dHROHz4sEPHNf0E3N7zn376KXbu3InPP/8cX3/9NebOnYu//e1v2LlzJwICAhxu6wsvvIA//vGPmDt3Lv785z8jNDQUKpUKixYtajVB9upP+q3kq5KSu8Njjz2Gd955B4sWLUJqaiqCgoIgCALuu+++Vtve9JP1jp7D3utvbXvT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RERERE5hUEFERERERE5hUEFERERERE5hUEFERERERE5hUEFERERERE5hUEHUw8TGxmLFihWubgYREXUx3u/JnTCoIHLC7NmzMW3aNADAxIkTsWjRom679po1axAcHNxi+549e/Dwww93WzuIiHoD3u+J2ubl6gYQUXMmkwkajabDx4eHh3dia4iIqKvwfk89CUcqiDrB7NmzsW3bNrzyyisQBAGCIODMmTMAgMOHDyM9PR0BAQGIjIzEgw8+iLKyMtuxEydOREZGBhYtWoSwsDBMmTIFALB8+XKMGjUK/v7+iImJwaOPPgq9Xg8A2Lp1K+bMmYPKykrb9Z599lkALYfDz507hzvvvBMBAQHQ6XS49957UVxcbHv+2WefRVJSEt577z3ExsYiKCgI9913H6qrq7u204iIPBDv90StY1BB1AleeeUVpKamYt68ebh06RIuXbqEmJgYVFRU4KabbsKYMWOwd+9ebNq0CcXFxbj33nubHb927VpoNBr8+OOPWLVqFQBApVLhH//4B44cOYK1a9diy5YtePrppwEA119/PVasWAGdTme73pNPPtmiXZIk4c4770R5eTm2bduGb7/9FqdPn8aMGTOa7Xfq1Cls3LgRX3zxBb744gts27YNL774Yhf1FhGR5+L9nqh1nP5E1AmCgoKg0Wjg5+eHqKgo2/bXXnsNY8aMwQsvvGDbtnr1asTExODkyZMYMmQIACAhIQEvvfRSs3M2na8bGxuL5557Do888ghef/11aDQaBAUFQRCEZte7WnZ2Ng4dOoSCggLExMQAAN59911cc8012LNnD8aOHQvA8sdozZo1CAwMBAA8+OCDyM7OxvPPP+9cxxAR9TC83xO1jiMVRF3owIED+O677xAQEGD7GjZsGADLp0VWycnJLY7dvHkzJk+ejH79+iEwMBAPPvggLl++jJqaGsXXP3bsGGJiYmx/YABgxIgRCA4OxrFjx2zbYmNjbX9gAKBv374oKSlx6LUSEfVmvN9Tb8eRCqIupNfrMXXqVPzlL39p8Vzfvn1t//b392/23JkzZ3DHHXdgwYIFeP755xEaGooffvgBv/71r2EymeDn59ep7fT29m72WBAESJLUqdcgIurJeL+n3o5BBVEn0Wg0EEWx2bZrr70W//73vxEbGwsvL+X/3XJyciBJEv72t79BpbIMKH7yySftXu9qw4cPx/nz53H+/Hnbp1dHjx5FRUUFRowYobg9RETUiPd7opY4/Ymok8TGxmLXrl04c+YMysrKIEkSFi5ciPLycvzqV7/Cnj17cOrUKXz99deYM2dOm38g4uPjYTab8eqrr+L06dN47733bAl9Ta+n1+uRnZ2NsrKyVofJ09LSMGrUKDzwwAPYt28fdu/ejZkzZ2LChAlISUnp9D4gIuoNeL8naolBBVEnefLJJ6FWqzFixAiEh4fj3LlziI6Oxo8//ghRFHHLLbdg1KhRWLRoEYKDg22fSLUmMTERy5cvx1/+8heMHDkSH3zwAZYtW9Zsn+uvvx6PPPIIZsyYgfDw8BaJf4BlWPuzzz5DSEgIfv7znyMtLQ2DBw/GunXrOv31ExH1FrzfE7UkyLIsu7oRRERERETkuThSQURERERETmFQQURERERETmFQQURERERETmFQQURERERETmFQQURERERETmFQQURERERETmFQQURERERETmFQQURERERETmFQQURERERETmFQQURERERETmFQQURERERETvn/4FE8YriHrWgAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "objective = iwp.objectives.CurrentDriven(data, options={\"model\": model})\n", "current_driven = iwp.DataFit(objective, parameters=parameters)\n", "params_fit = current_driven.run(params_for_pipeline)\n", "current_driven.plot_trace()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The cost logger can be changed by passing the `cost_logger` argument to the `DataFit` object. For example, the following example shows how to pass a cost logger that plots the cost function and parameter values every 10 iterations." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "current_driven = iwp.DataFit(\n", " objective,\n", " parameters=parameters,\n", " cost_logger=iwp.data_fits.CostLogger(plot_every=10),\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "pybamm-param", "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.9" } }, "nbformat": 4, "nbformat_minor": 2 }