Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
7095049
Add fit_keys and sigma as a Parameter
NicolaCourtier Jun 7, 2024
7e4cc7f
Update CMAES x0 check
NicolaCourtier Jun 7, 2024
8833c00
Add plot2d warning if not 2 parameters
NicolaCourtier Jun 7, 2024
23847e4
Fix integration tests' get_data
NicolaCourtier Jun 7, 2024
22301e6
Update exp_UKF example
NicolaCourtier Jun 7, 2024
341ad54
Fix case with sigma length 1
NicolaCourtier Jun 7, 2024
ff9ce43
Reset parameters not None checks
NicolaCourtier Jun 7, 2024
3641a47
Fix sigma2 in GLLKnownSigma
NicolaCourtier Jun 7, 2024
59f09b1
Update dsigma_scale
NicolaCourtier Jun 7, 2024
76371ed
style: pre-commit fixes
pre-commit-ci[bot] Jun 7, 2024
88b936c
Fix GaussianLogLikelihoodKnownSigma
NicolaCourtier Jun 10, 2024
57d1768
Update plot2d for wrong number of parameters
NicolaCourtier Jun 10, 2024
fa3a70b
Fix classify_and_update_parameters
NicolaCourtier Jun 10, 2024
d2a6b5e
Add get_initial_value
NicolaCourtier Jun 10, 2024
e3251ca
Update sigma setting and tests
NicolaCourtier Jun 10, 2024
52ff78d
style: pre-commit fixes
pre-commit-ci[bot] Jun 10, 2024
1e6d149
Merge branch 'gauss-log-like-fixes' into 338b-gauss-loglikelihood
NicolaCourtier Jun 10, 2024
21f44a6
Update optim trace for >2 parameters
NicolaCourtier Jun 10, 2024
6793c3d
Add test_scipy_minimize_invalid_x0
NicolaCourtier Jun 10, 2024
c173c69
Add log prior gradient
NicolaCourtier Jun 10, 2024
dfdc0c5
Add optimiser.parameters, remove problem.x0
NicolaCourtier Jun 11, 2024
3315cc0
Update integration tests
NicolaCourtier Jun 11, 2024
20b7822
Pass inputs instead of x
NicolaCourtier Jun 11, 2024
51e8c7c
Specify inputs as Inputs
NicolaCourtier Jun 12, 2024
2b92ea9
Update notebooks
NicolaCourtier Jun 12, 2024
9121833
Add initial and true options to as_dict
NicolaCourtier Jun 12, 2024
c6553f4
Reset notebook versions
NicolaCourtier Jun 12, 2024
fed62f6
Update parameter_values to inputs
NicolaCourtier Jun 12, 2024
799122a
Update notebooks
NicolaCourtier Jun 12, 2024
07e90ad
Add parameters tests
NicolaCourtier Jun 13, 2024
63dd1f4
Add quick_plot test
NicolaCourtier Jun 13, 2024
6bcb155
Add test_no_optimisation_parameters
NicolaCourtier Jun 13, 2024
e402e38
Add test_error_in_cost_calculation
NicolaCourtier Jun 13, 2024
2adbdce
Add parameters.verify
NicolaCourtier Jun 13, 2024
10df0d2
Fix change to base_model
NicolaCourtier Jun 13, 2024
467f1f4
Add more base_model tests
NicolaCourtier Jun 13, 2024
d6645cd
Merge branch '358-passing-inputs' into 338b-gauss-loglikelihood
NicolaCourtier Jun 13, 2024
a8ee7cb
Update base_cost.py
NicolaCourtier Jun 13, 2024
10314d7
Merge branch 'gauss-log-like-fixes' into 338b-gauss-loglikelihood
NicolaCourtier Jun 13, 2024
d3c4f1b
Remove fit_keys
NicolaCourtier Jun 13, 2024
e6d359a
Update base_model.py
NicolaCourtier Jun 13, 2024
85788dd
Replace store_optimised_parameters with update
NicolaCourtier Jun 14, 2024
17c44ef
Update value() output to ndarray
NicolaCourtier Jun 14, 2024
6d2776a
Update likelihood inputs
NicolaCourtier Jun 14, 2024
0148bec
Merge branch 'gauss-log-like-fixes' into 338b-gauss-loglikelihood
NicolaCourtier Jun 19, 2024
ae29165
style: pre-commit fixes
pre-commit-ci[bot] Jun 19, 2024
0e75c8f
Re-implement get item check
NicolaCourtier Jun 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1641,7 +1641,7 @@
"source": [
"optim = pybop.PSO(cost, max_unchanged_iterations=55, threshold=1e-6)\n",
"x, final_cost = optim.run()\n",
"print(\"Initial parameters:\", cost.x0)\n",
"print(\"Initial parameters:\", optim.x0)\n",
"print(\"Estimated parameters:\", x)"
]
},
Expand Down Expand Up @@ -1679,7 +1679,7 @@
}
],
"source": [
"pybop.quick_plot(problem, parameter_values=x, title=\"Optimised Comparison\");"
"pybop.quick_plot(problem, inputs=x, title=\"Optimised Comparison\");"
]
},
{
Expand Down Expand Up @@ -1850,7 +1850,7 @@
}
],
"source": [
"pybop.quick_plot(problem, parameter_values=x, title=\"Parameter Extrapolation\");"
"pybop.quick_plot(problem, inputs=x, title=\"Parameter Extrapolation\");"
]
},
{
Expand Down
4 changes: 2 additions & 2 deletions examples/notebooks/equivalent_circuit_identification.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,7 @@
"source": [
"optim = pybop.CMAES(cost, max_iterations=300)\n",
"x, final_cost = optim.run()\n",
"print(\"Initial parameters:\", cost.x0)\n",
"print(\"Initial parameters:\", optim.x0)\n",
"print(\"Estimated parameters:\", x)"
]
},
Expand Down Expand Up @@ -457,7 +457,7 @@
}
],
"source": [
"pybop.quick_plot(problem, parameter_values=x, title=\"Optimised Comparison\");"
"pybop.quick_plot(problem, inputs=x, title=\"Optimised Comparison\");"
]
},
{
Expand Down
4 changes: 1 addition & 3 deletions examples/notebooks/multi_model_identification.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -3904,9 +3904,7 @@
],
"source": [
"for optim, x in zip(optims, xs):\n",
" pybop.quick_plot(\n",
" optim.cost.problem, parameter_values=x, title=optim.cost.problem.model.name\n",
" )"
" pybop.quick_plot(optim.cost.problem, inputs=x, title=optim.cost.problem.model.name)"
]
},
{
Expand Down
2 changes: 1 addition & 1 deletion examples/notebooks/multi_optimiser_identification.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -599,7 +599,7 @@
],
"source": [
"for optim, x in zip(optims, xs):\n",
" pybop.quick_plot(optim.cost.problem, parameter_values=x, title=optim.name())"
" pybop.quick_plot(optim.cost.problem, inputs=x, title=optim.name())"
]
},
{
Expand Down
4 changes: 2 additions & 2 deletions examples/notebooks/optimiser_calibration.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@
}
],
"source": [
"pybop.quick_plot(problem, parameter_values=x, title=\"Optimised Comparison\");"
"pybop.quick_plot(problem, inputs=x, title=\"Optimised Comparison\");"
]
},
{
Expand Down Expand Up @@ -723,7 +723,7 @@
"source": [
"optim = pybop.GradientDescent(cost, sigma0=0.0115)\n",
"x, final_cost = optim.run()\n",
"pybop.quick_plot(problem, parameter_values=x, title=\"Optimised Comparison\");"
"pybop.quick_plot(problem, inputs=x, title=\"Optimised Comparison\");"
]
},
{
Expand Down
4 changes: 2 additions & 2 deletions examples/notebooks/pouch_cell_identification.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@
}
],
"source": [
"pybop.quick_plot(problem, parameter_values=x, title=\"Optimised Comparison\");"
"pybop.quick_plot(problem, inputs=x, title=\"Optimised Comparison\");"
]
},
{
Expand Down Expand Up @@ -1539,7 +1539,7 @@
}
],
"source": [
"sol = problem.evaluate(x)\n",
"sol = problem.evaluate(parameters.as_dict(x))\n",
"\n",
"go.Figure(\n",
" [\n",
Expand Down
2 changes: 1 addition & 1 deletion examples/notebooks/spm_AdamW.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@
}
],
"source": [
"pybop.quick_plot(problem, parameter_values=x, title=\"Optimised Comparison\");"
"pybop.quick_plot(problem, inputs=x, title=\"Optimised Comparison\");"
]
},
{
Expand Down
4 changes: 2 additions & 2 deletions examples/notebooks/spm_electrode_design.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@
"source": [
"x, final_cost = optim.run()\n",
"print(\"Estimated parameters:\", x)\n",
"print(f\"Initial gravimetric energy density: {-cost(cost.x0):.2f} Wh.kg-1\")\n",
"print(f\"Initial gravimetric energy density: {-cost(optim.x0):.2f} Wh.kg-1\")\n",
"print(f\"Optimised gravimetric energy density: {-final_cost:.2f} Wh.kg-1\")"
]
},
Expand Down Expand Up @@ -329,7 +329,7 @@
"source": [
"if cost.update_capacity:\n",
" problem._model.approximate_capacity(x)\n",
"pybop.quick_plot(problem, parameter_values=x, title=\"Optimised Comparison\");"
"pybop.quick_plot(problem, inputs=x, title=\"Optimised Comparison\");"
]
},
{
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/BPX_spm.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
print("Estimated parameters:", x)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/ecm_CMAES.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@
pybop.plot_dataset(dataset)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
11 changes: 6 additions & 5 deletions examples/scripts/exp_UKF.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,9 @@
# Make a prediction with measurement noise
sigma = 1e-2
t_eval = np.linspace(0, 20, 10)
model.parameters = parameters
values = model.predict(t_eval=t_eval, inputs=parameters.true_value())
model.classify_and_update_parameters(parameters)
true_inputs = parameters.as_dict("true")
values = model.predict(t_eval=t_eval, inputs=true_inputs)
values = values["2y"].data
corrupt_values = values + np.random.normal(0, sigma, len(t_eval))

Expand All @@ -41,7 +42,7 @@
model.build(parameters=parameters)
simulator = pybop.Observer(parameters, model, signal=["2y"])
simulator._time_data = t_eval
measurements = simulator.evaluate(parameters.true_value())
measurements = simulator.evaluate(true_inputs)

# Verification step: Compare by plotting
go = pybop.PlotlyManager().go
Expand Down Expand Up @@ -84,7 +85,7 @@
)

# Verification step: Find the maximum likelihood estimate given the true parameters
estimation = observer.evaluate(parameters.true_value())
estimation = observer.evaluate(true_inputs)

# Verification step: Add the estimate to the plot
line4 = go.Scatter(
Expand All @@ -102,7 +103,7 @@
print("Estimated parameters:", x)

# Plot the timeseries output (requires model that returns Voltage)
pybop.quick_plot(observer, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(observer, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/gitt.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
print("Estimated parameters:", x)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/spm_AdamW.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def noise(sigma):
print("Estimated parameters:", x)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/spm_CMAES.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
pybop.plot_dataset(dataset)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/spm_IRPropMin.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
print("Estimated parameters:", x)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/spm_MAP.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
print("Estimated parameters:", x)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x[0:2], title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x[0:2], title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/spm_MLE.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
print("Estimated parameters:", x)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x[0:2], title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x[0:2], title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/spm_NelderMead.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def noise(sigma):
print("Estimated parameters:", x)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/spm_SNES.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
print("Estimated parameters:", x)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/spm_UKF.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
print("Estimated parameters:", x)

# Plot the timeseries output (requires model that returns Voltage)
pybop.quick_plot(observer, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(observer, inputs=x, title="Optimised Comparison")

# # Plot convergence
# pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/spm_XNES.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
print("Estimated parameters:", x)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/spm_descent.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
print("Estimated parameters:", x)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/spm_pso.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
print("Estimated parameters:", x)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
2 changes: 1 addition & 1 deletion examples/scripts/spm_scipymin.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
print("Estimated parameters:", x)

# Plot the timeseries output
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot convergence
pybop.plot_convergence(optim)
Expand Down
6 changes: 3 additions & 3 deletions examples/scripts/spme_max_energy.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# NOTE: This script can be easily adjusted to consider the volumetric
# (instead of gravimetric) energy density by changing the line which
# defines the cost and changing the output to:
# print(f"Initial volumetric energy density: {cost(cost.x0):.2f} Wh.m-3")
# print(f"Initial volumetric energy density: {cost(optim.x0):.2f} Wh.m-3")
# print(f"Optimised volumetric energy density: {final_cost:.2f} Wh.m-3")

# Define parameter set and model
Expand Down Expand Up @@ -54,13 +54,13 @@
# Run optimisation
x, final_cost = optim.run()
print("Estimated parameters:", x)
print(f"Initial gravimetric energy density: {cost(cost.x0):.2f} Wh.kg-1")
print(f"Initial gravimetric energy density: {cost(optim.x0):.2f} Wh.kg-1")
print(f"Optimised gravimetric energy density: {final_cost:.2f} Wh.kg-1")

# Plot the timeseries output
if cost.update_capacity:
problem._model.approximate_capacity(x)
pybop.quick_plot(problem, parameter_values=x, title="Optimised Comparison")
pybop.quick_plot(problem, inputs=x, title="Optimised Comparison")

# Plot the cost landscape with optimisation path
if len(x) == 2:
Expand Down
9 changes: 4 additions & 5 deletions examples/standalone/cost.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def __init__(self, problem=None):
)
self.x0 = self.parameters.initial_value()

def _evaluate(self, x, grad=None):
def _evaluate(self, inputs, grad=None):
"""
Calculate the cost for a given parameter value.

Expand All @@ -52,9 +52,8 @@ def _evaluate(self, x, grad=None):

Parameters
----------
x : array-like
A one-element array containing the parameter value for which to
evaluate the cost.
inputs : Dict
The parameters for which to evaluate the cost.
grad : array-like, optional
Unused parameter, present for compatibility with gradient-based
optimizers.
Expand All @@ -65,4 +64,4 @@ def _evaluate(self, x, grad=None):
The calculated cost value for the given parameter.
"""

return x[0] ** 2 + 42
return inputs["x"] ** 2 + 42
Loading