Source code for pybop.costs.evaluation
import numpy as np
[docs]
class Evaluation:
"""
A class to store cost evaluations, inspired by pybamm.Solution.
"""
def __init__(
self, values: np.ndarray = None, sensitivities: np.ndarray | None = None
):
[docs]
self.values = np.atleast_1d(values)
[docs]
self.sensitivities = (
np.atleast_2d(sensitivities) if sensitivities is not None else None
)
[docs]
def preallocate(self, n_inputs, n_parameters, calculate_sensitivities: bool = None):
self.values = np.empty(n_inputs)
self.sensitivities = (
np.empty((n_inputs, n_parameters)) if calculate_sensitivities else None
)
[docs]
def insert_result(
self, i: int, value: float, sensitivities: np.ndarray | None = None
):
self.values[i] = value
if sensitivities is not None:
self.sensitivities[i] = sensitivities
[docs]
def get_values(self) -> np.ndarray | tuple[np.ndarray, np.ndarray]:
if self.sensitivities is None:
return self.values
return self.values, self.sensitivities
[docs]
def __len__(self):
return len(self.values)