18650 series-parallel battery-pack sizing (cost minimization)
A fixed-topology optimization variant that chooses the rectangular series and parallel counts of an 18650 pack to minimize cost under the packaged battery requirements.
See Optimization Problem Catalog for the optimization family index.
Quick Facts
Field |
Value |
|---|---|
Problem ID |
|
Problem Family |
optimization |
Implementation |
|
Capabilities |
|
Study Suitability |
none |
Tags |
|
Taxonomy
- Formulation
mixed_discrete_optimization
- Convexity
nonconvex
- Design Variable Type
discrete
- Is Dynamic
no
- Orientation
engineering_practical
- Feasibility Ratio Hint
0.1
- Objective Mode
single
- Constraint Nature
hard
- Bounds Summary
integer series and parallel counts within the packaged rectangular battery envelope
- Tags
optimization,battery,series-parallel,grid,sizing,cost
Statement
Choose the rectangular electrical size of an 18650 battery pack by selecting the number of series stages S and parallel branches P. The physical layout is fixed to the library’s canonical one-layer rectangular grid with one cell per logical slot and deterministic wiring between stages and branches.
The objective is to minimize pack cost while meeting the packaged voltage, capacity, current, and envelope requirements. This optimization-family variant reuses the same battery backend as the grammar-family pack problems, but it restricts the search to canonical rectangular layouts parameterized only by S and P.
Problem Shape
Field |
Value |
|---|---|
Design Variable Count |
2 |
Bound Summary |
integer series and parallel counts within the packaged rectangular battery envelope |
Total Constraint Count |
7 |
Equality Constraint Count |
0 |
Inequality Constraint Count |
7 |
Variable Bounds
Variable |
Lower Bound |
Upper Bound |
|---|---|---|
|
1 |
24 |
|
1 |
27 |
Manifest Parameters
Key |
Value |
|---|---|
max_depth_mm |
500 |
max_height_mm |
250 |
max_width_mm |
500 |
minimum_capacity_ah |
10 |
minimum_current_a |
60 |
target_voltage_v |
14.8 |
voltage_tolerance_v |
0.1 |
Library Interface
generate_initial_solution(seed=None)objective(x)evaluate(x)solve(initial_solution=None, seed=None, maxiter=200)