Documentation Index
Fetch the complete documentation index at: https://docs.ionworks.com/llms.txt
Use this file to discover all available pages before exploring further.
Design optimization finds battery design parameters that meet performance objectives without requiring experimental data. Instead of fitting a model to measurements, you define what you want to achieve and let the optimizer explore the design space through repeated simulation.
How It Works
The optimization loop:
- Parameters define the design variables being optimized (e.g., electrode thickness, porosity)
- Model runs a simulation with those parameters under specified operating conditions
- Variables are time-series outputs from the simulation (voltage, temperature, capacity)
- Metrics extract scalar values from variables (final voltage, maximum temperature, mean current)
- Actions define what to do with metrics (maximize, minimize, constrain)
- Cost combines action results into a single objective for the optimizer
Design Parameters
Design parameters are the degrees of freedom the optimizer is allowed to vary. Each parameter has a feasible range (bounds) set by manufacturing constraints or material properties — for example, electrode thickness might be bounded between 25μm and 150μm, and active material volume fraction between 0.4 and 0.85.
Choosing parameters well is more important than choosing many: two or three influential parameters with realistic bounds usually yields more insight than a dozen loosely-bounded ones. Where parameters are physically coupled — porosity and active material fraction must sum to one, for instance — the coupling should be encoded in the problem definition rather than left to the optimizer to discover.
Metrics
Metrics transform simulation time-series into scalar values that can be optimized. They answer questions like “What is the voltage at the end of discharge?” or “What is the maximum temperature?”
Point metrics
Extract a value at a specific condition in the simulation:
| Metric | Extracts value at… | Example |
|---|
| Time | Specific time point | Voltage at t=100 s |
| SOC | Specific state of charge | Voltage at 50% SOC |
| Voltage | Specific voltage | Capacity when V=3.0 V |
Aggregation metrics
Compute statistics over the entire solution:
| Metric | Computes | Example |
|---|
| Mean | Average value | Mean current during pulse |
| Maximum | Peak value | Maximum temperature |
| Minimum | Lowest value | Minimum voltage |
| Sum | Accumulated total | Total energy |
Composed metrics
Derived quantities are built by combining primitive metrics with arithmetic. For example, pulse resistance is the voltage change divided by the current:
R=IˉVafter−Vbefore
Step and cycle metrics
Experiments with multiple steps or cycles need metrics that unroll along that axis — e.g. capacity measured at the end of the discharge step of every cycle, yielding a capacity-fade curve rather than a single number.
Actions
Actions define how the optimizer should treat each metric:
| Action | Behavior |
|---|
| Maximize | Maximize the metric value |
| Minimize | Minimize the metric value |
| GreaterThan | Constraint: metric must exceed a threshold |
| LessThan | Constraint: metric must stay below a threshold |
Constraints are typically enforced through penalty functions: when the constraint is violated, a large term is added to the cost proportional to the amount of violation. This converts a constrained problem into an unconstrained one that any cost-minimizing optimizer can handle.
Multi-objective optimization
Most design problems trade off competing goals — energy vs. power, capacity vs. charge time, performance vs. temperature. There are two ways to combine them:
- Weighted sum: pick weights wi and optimize ∑iwifi. Simple, but the weights implicitly encode a preference and can hide Pareto tradeoffs.
- Constraint-based: maximize the primary objective subject to the others being bounded (e.g. maximize energy density subject to T_{\max} \leq 50\,^{\circ}\text{C}). Often more interpretable because the constraint thresholds map directly to design requirements.
Example: Maximizing Energy Density
This example illustrates the full workflow on a classic battery design problem.
Problem description
Electrode thickness presents a fundamental design tradeoff:
- Thicker electrodes increase capacity (more active material per unit area) but worsen rate capability because lithium must diffuse further
- Thinner electrodes improve power delivery but reduce total energy storage
We seek the thickness that maximizes energy density at a given discharge rate, subject to a temperature limit.
The optimization problem is:
LposmaxEg(Lpos)
subject to:
Lposmin≤Lpos≤Lposmax
Tmax(Lpos)≤Tlimit
where Lpos is the positive electrode thickness, Eg is the gravimetric energy density at end of discharge, Tmax is the maximum cell temperature during discharge, and Tlimit is the temperature safety limit (e.g. 323K).
The energy density is computed from the simulation as:
Eg=mcell∫0tfV(t)⋅I(t)dt
where V(t) is voltage, I(t) is current, tf is the discharge end time, and mcell is the cell mass.
What the optimizer does
For each candidate thickness, a simulation is run and the metrics are evaluated:
- The model solves the electrochemical equations to get V(t), T(t), etc.
- A point metric at tf extracts the final energy density
- An aggregation metric extracts the peak temperature
- The actions convert these into a cost: negative Eg (for maximization) plus a penalty if Tmax>Tlimit
- The optimizer uses this cost to propose the next candidate
The converged solution balances energy density against thermal constraints — thicker electrodes store more energy but generate more heat from ohmic and kinetic losses.
Best practices
Parameter selection — Choose parameters that have significant influence on the objective. Use bounds that reflect physical and manufacturing limits, and link coupled parameters (e.g. porosity =1− active-material fraction) rather than treating them as independent.
Operating conditions — Simulate at conditions that reflect actual usage. A cell optimized for 1C discharge may perform poorly at 5C, and vice versa. Include rest periods and realistic duty cycles when they matter.
Start simple — Two or three parameters with a single clear objective will teach you more about the design space than a high-dimensional problem that takes hours to converge. Add complexity only once the simple version behaves as expected.
Validate physically — The optimizer will happily return mathematically optimal parameters that are physically unreasonable. Always sanity-check the solution against physical intuition and known design constraints.