{ "cells": [ { "cell_type": "markdown", "id": "487113e5-20c5-4e76-814f-a7491c42a940", "metadata": {}, "source": [ "# Defining Complex Charge Dependence in ECMs\n", "Many parameters in equivalent circuit models (ECMs) depend on how charged the battery is.\n", "The most common example is that the voltage of a cell increases with the state of charge (SOC). \n", "Moirae provides several routes to expressing the SOC dependence for different properties" ] }, { "cell_type": "markdown", "id": "3f3dc292-494c-4288-a79c-34037f17f45c", "metadata": {}, "source": [ "## Interpolated SOC Dependence\n", "Define a complex dependence on SOC using `SOCInterpolatedHealth`" ] }, { "cell_type": "code", "execution_count": 1, "id": "9ea3ff07-115c-4754-b300-bd51d82656eb", "metadata": {}, "outputs": [], "source": [ "from moirae.models.ecm.utils import SOCInterpolatedHealth, realistic_fake_ocv\n", "import numpy as np" ] }, { "cell_type": "markdown", "id": "d8a5e140-7ddc-4217-8887-a030d3a8704b", "metadata": {}, "source": [ "This function takes the values of the property at specific states of charge." ] }, { "cell_type": "code", "execution_count": 2, "id": "059de94f-b5c1-4678-abf6-ce22a71661a9", "metadata": {}, "outputs": [], "source": [ "soc = np.linspace(0, 1, 9) \n", "points = realistic_fake_ocv(soc)" ] }, { "cell_type": "markdown", "id": "42b491a0-0396-4ca1-9b0b-69a8860f3ebf", "metadata": {}, "source": [ "Supply both the value of the function (``base_values``) and, optionally, the points at which they are evaluated.\n", "\n", "> Moirae assumes evenly-spaced SOC points between 0 and 1 by default." ] }, { "cell_type": "code", "execution_count": 3, "id": "563b4844-8bc0-48ef-aca7-621326e53172", "metadata": {}, "outputs": [], "source": [ "ocv = SOCInterpolatedHealth(\n", " base_values=points,\n", " soc_pinpoints=soc,\n", " interpolation_style='linear',\n", ")" ] }, { "cell_type": "code", "execution_count": 4, "id": "61370899-a513-42d4-bab4-3e7d769a9ae7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'SOC')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "from matplotlib import pyplot as plt\n", "fig, ax = plt.subplots(figsize=(3.5, 2.))\n", "\n", "# Evaluate the function\n", "# Always returns a 3D array. First two are batch sizes, last is the property\n", "value = ocv.get_value(soc)[0, 0, :]\n", "ax.plot(soc, value, 'r--')\n", "ax.plot(soc, points, 'kx')\n", "\n", "ax.set_xlabel('SOC')" ] }, { "cell_type": "markdown", "id": "427ec39b-d7d7-45c9-9c42-5db53f2b0e13", "metadata": {}, "source": [ "### Interpolation with Polynomial Scaling\n", "Interpolation functions can capture complex function shapes, at the expense of many fitting parameters.\n", "\n", "The ``ScaledSOCInterpolatedHealth`` keep can keep the complex shapes of interpolated functions\n", "and instead a few \"scaling\" parameters that describe small changes to the shape.\n", "\n", "Use the ``ScaledSOCInterpolatedHealth`` to define SOC dependence in two layers:\n", "- ``base_values``, ``soc_points``: The base shape of the functional dependence\n", "- ``scaling_coeffs``: Parameters of a [Legendre polynomial](https://en.m.wikipedia.org/wiki/Legendre_polynomials) used to adjust the shape.\n", "\n", "> Aside: Legendre Polynomials are good for interpolation because each polynomial is orthogonal to all others)" ] }, { "cell_type": "code", "execution_count": 5, "id": "73044fce-e253-4a4a-9e4b-18ae5965d2b7", "metadata": {}, "outputs": [], "source": [ "from moirae.models.ecm.utils import ScaledSOCInterpolatedHealth" ] }, { "cell_type": "markdown", "id": "3f531664-aa3e-4bec-b1d5-32b6fab01b4e", "metadata": {}, "source": [ "The interpolated curve is unchanged if all scaling parameters are zero.\n", "The first parameter introduces the same change to all points, \n", "the second adds a linear dependence to SOC, the third a quadratic, and so on." ] }, { "cell_type": "code", "execution_count": 6, "id": "613619b7-5469-4751-bd5e-29192eeeb1ea", "metadata": {}, "outputs": [], "source": [ "ocv = ScaledSOCInterpolatedHealth(\n", " base_values=points,\n", " scaling_coeffs=[0., 0., 0.]\n", ")" ] }, { "cell_type": "markdown", "id": "34ede5e0-1b86-484c-801a-9f1258ca0925", "metadata": {}, "source": [ "Evaluate with a few changes" ] }, { "cell_type": "code", "execution_count": 7, "id": "1e3c1dce-044d-4935-a22e-d88175e27b72", "metadata": {}, "outputs": [], "source": [ "scaled_allzero = ocv.get_value(soc)[0, 0, :]" ] }, { "cell_type": "code", "execution_count": 8, "id": "2ce39287-b84d-448d-9d5a-3222cc306421", "metadata": {}, "outputs": [], "source": [ "ocv.scaling_coeffs[0, 0] = 0.05\n", "scaled_constant = ocv.get_value(soc)[0, 0, :]" ] }, { "cell_type": "code", "execution_count": 9, "id": "83cc6e08-6da0-4a66-86b5-6abc3864f684", "metadata": {}, "outputs": [], "source": [ "ocv.scaling_coeffs[0, :2] = [0., 0.1]\n", "scaled_linear = ocv.get_value(soc)[0, 0, :]" ] }, { "cell_type": "code", "execution_count": 10, "id": "c6588e12-c5b7-414e-9a59-b12c83b7df1a", "metadata": {}, "outputs": [], "source": [ "ocv.scaling_coeffs[0, 1:] = [0, 0.1]\n", "scaled_quadra = ocv.get_value(soc)[0, 0, :]" ] }, { "cell_type": "code", "execution_count": 11, "id": "53f4702f-3796-4751-b140-5e109187079c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'SOC')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3.5, 2.))\n", "\n", "# Evaluate the function\n", "# Always returns a 3D array. First two are batch sizes, last is the property\n", "ax.plot(soc, value, 'k--', label='Intepolated')\n", "ax.plot(soc, scaled_allzero, 'r', label='No Scaling', alpha=0.5)\n", "ax.plot(soc, scaled_constant, 'b', label='Constant', alpha=0.5)\n", "ax.plot(soc, scaled_linear, color='purple', label='Linear', alpha=0.5)\n", "ax.plot(soc, scaled_quadra, color='orange', label='Quadratic', alpha=0.5)\n", "\n", "ax.legend(fontsize=8)\n", "ax.set_xlabel('SOC')" ] }, { "cell_type": "markdown", "id": "e65bdfab-6f38-4107-b572-21ed634d71cd", "metadata": {}, "source": [ "Estimators could adjust the slightly by fitting 3 `ocv.scaling_coeffs` instead of fitting all 9 `ocv.base_values` points." ] }, { "cell_type": "markdown", "id": "75158bb5-6de2-4f4e-a993-e17bed902759", "metadata": {}, "source": [ "## Advanced: Batching and SOC Dependence\n", "Moirae estimators guess batches of parameter values that may include both multiple values for interpolation points and multiple values of SOC.\n", "The SOC dependence classes treat parameters describing the functional dependence and SOC values separately.\n", "As a result, the output for an SOC class is 3 dimensional: \"batch size of function parameters\" x \"batch size of SOC\" x \"number of SOC points in each batch\"" ] }, { "cell_type": "code", "execution_count": 12, "id": "b68fa2f5-fabc-421c-aea8-c504ec08178a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on method get_value in module moirae.models.ecm.utils:\n", "\n", "get_value(soc: Union[numbers.Number, List, numpy.ndarray]) -> numpy.ndarray method of moirae.models.ecm.utils.ScaledSOCInterpolatedHealth instance\n", " Computes value(s) at given SOC(s).\n", " \n", " This function always returns a 3D array, of shape `(internal_batch_size, soc_batch_size, soc_dim)`, where\n", " `internal_batch_size` is the batch size of the underlying health variable, `soc_batch_size` is the batch size\n", " of the SOC array, and `soc_dim` is the dimensionality of the SOC. The SOC must be passed as either:\n", " 1. a 2D array of shape `(soc_batch_size, soc_dim)`\n", " 2. a 1D array of shape `(soc_dim,)`, in which case we will consider the `soc_batch_size` to be equal to 1\n", " 3. a 0D array (that is, a numer), in which case both `soc_batch_size` and `soc_dim` are equal to 1.\n", " \n", " Args:\n", " soc: Values at which to compute the property\n", " Returns:\n", " Interpolated values as a 3D with dimensions (batch_size, soc_batch_size, soc_points)\n", "\n" ] } ], "source": [ "help(ocv.get_value)" ] }, { "cell_type": "markdown", "id": "9254016a-1c53-446a-9006-7be006ce1fa5", "metadata": {}, "source": [ "Provide multiple guesses for scaling points will affect the first point." ] }, { "cell_type": "code", "execution_count": 13, "id": "ed291564-206f-40fe-bc01-10bcdbb664e8", "metadata": {}, "outputs": [], "source": [ "ocv.scaling_coeffs = np.array([[0., 0.], [0.01, 0.01]])" ] }, { "cell_type": "code", "execution_count": 14, "id": "862ffc81-0656-4b4d-96ff-df340010c7a5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2, 1, 9)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "outputs = ocv.get_value(soc)\n", "outputs.shape" ] }, { "cell_type": "markdown", "id": "d567765c-c5b7-4d4b-8d71-e78751726786", "metadata": {}, "source": [ "The array is 2 (batch size of parameter functions) x 1 (batch size of SOC inputs) x 9 (number of SOC points in the evaluation)" ] }, { "cell_type": "code", "execution_count": 15, "id": "6514fff3-eb02-4444-8457-7af799609ece", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'SOC')" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3.5, 2))\n", "\n", "for i, y in enumerate(outputs[:, 0, :]):\n", " ax.plot(soc, y, label=f'Guess #{i}')\n", "\n", "ax.legend(fontsize=8)\n", "ax.set_xlabel('SOC')" ] }, { "cell_type": "markdown", "id": "b0897b77-9bbc-40e4-8c0a-96593711b667", "metadata": {}, "source": [ "Each member of the output batch is with a different value of parameters" ] }, { "cell_type": "code", "execution_count": null, "id": "1439b7d2-ee09-4c6f-942f-1f97e57af287", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.10.16" } }, "nbformat": 4, "nbformat_minor": 5 }