Copyright 2026, Battelle Energy Alliance, LLC. All Rights Reserved.
REBORN is a PyQt6 desktop application that runs Pyomo-based optimization models to identify cost-effective reverse-logistics networks for battery recycling and repurposing. It supports geographic scopes from individual counties up to multi-region national analyses.
This repository contains the free version of REBORN. For access to the more complete and detailed version of the software, please contact the Idaho National Laboratory (INL) team using the contact information below.
REBORN represents the reverse-logistics pathway as:
Household -> Collection -> Repurposing -> Recycling
- Household: End-of-life batteries generated by households are represented by year-specific recycling and repurposing demand projections for the selected geography.
- Collection: Batteries are aggregated at candidate collection points (represented by car dealerships). REBORN first selects collection locations and assigns battery quantities without exceeding their capacities.
- Repurposing: Collected batteries are routed to candidate repurposing centers. The model determines which centers and collection-to-repurposing links to use while satisfying demand, flow-balance, and capacity constraints.
- Recycling: Batteries requiring material recovery, including the modeled flow leaving repurposing centers, are routed to selected recycling centers.
For every modeled year, Pyomo formulates the facility-selection and material-flow problem and CPLEX minimizes total system cost. The objective accounts for fixed and operating facility costs, battery acquisition and collection, packaging, and distance-based transportation from collection to repurposing and from repurposing to recycling. The resulting network identifies selected facilities, assigned battery volumes, routes, costs, and facility opening periods.
- Geographic analysis at US region, multi-state, state, county, and city scales.
- Single-year or multi-year battery recycling and repurposing demand analysis.
- Built-in default demand data plus manual year-by-year data entry.
- CSV and Excel export of custom demand inputs.
- Interactive maps of selected geographies and existing collection, repurposing, and recycling facilities.
- Use of the supplied facility database or generation of candidate collection, repurposing, and recycling locations with configurable ratios and capacities.
- Configurable transportation, acquisition, fixed, operating, packaging, and facility-capacity assumptions.
- Cost-minimizing facility selection, capacity allocation, and battery routing using Pyomo and CPLEX.
- Multi-year result summaries, facility opening timing, interactive flow maps with or without location markers, trend tables, and cost-breakdown charts.
- Excel output containing aggregated results and detailed annual cost breakdowns.
- Python 3.10 or 3.11 (3.12+ may have compatibility issues with some scientific packages)
- Download from https://www.python.org/downloads/
REBORN uses the free/community version of IBM CPLEX through the cplex Python
package. It is included in requirements.txt and is installed from PyPI with
the rest of the dependencies. The free version is suitable for models that fit
within IBM's Community Edition limits. Larger REBORN scenarios may require a
commercial or academic CPLEX entitlement and a full IBM ILOG CPLEX Optimization
Studio installation.
Install all dependencies, including the free CPLEX Python package, with:
pip install -r requirements.txt-
Copy the entire
Codefolder to the target machine. Keep all files in the same folder — the application resolves every data file relative to its own location. -
Open a terminal / command prompt in that folder.
-
(Recommended) Create and activate a virtual environment:
python -m venv .venv # Windows .venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
For scenarios beyond the free CPLEX limits, configure an eligible IBM CPLEX license before running the optimization.
python main.pyOr double-click run_reborn.bat (Windows) if provided.
| Step | Page | What to do |
|---|---|---|
| 1 | Location | Choose a selection mode (Region / State / County+City), pick your geographic scope, then click Next. |
| 2 | Data | Set the year range, click Load default data, verify the map, then click Next. |
| 3 | Facility Database | Use the default database or generate new facility locations, then click Next. |
| 4 | Settings | Review / adjust cost parameters, click Submit, then click Run Optimization. Wait for the progress bar to complete. |
| 5 | Results | Select a year, then explore maps, Trend Evolution table, and Cost Breakdown charts. |
Note: Each step must be completed in order. Sidebar buttons for later steps remain disabled until the previous step is finished.
| File | Purpose |
|---|---|
location_data.json |
State → County → City hierarchy |
us-states.json |
GeoJSON boundaries for US states (map rendering) |
Pyomo_Ex_DB.json / Pyomo_Ex_DB.xlsx |
Default recycling/repurposing facility database |
Car_USA.json / Car_USA.xlsx |
Default car-dealership (collection point) database |
default_data_regions.xlsx |
Default demand data — Region level |
default_data_states.xlsx |
Default demand data — State level |
cb_2021_us_state_500k.zip |
US state shapefile (used during optimization) |
map1.png |
Reference US regions map shown on the Location page |
REBORN_Pathway.png |
Pathway diagram shown on the Home page |
Recell_Image.jpg |
ReCell Center image shown on the About ReCell tab |
Photos/ |
Team member photos |
Descriptions/ |
Team member biography text files |
REBORN uses facility-location data and cost data from the following sources, respectively:
- Facility locations: NAATBatt Lithium-Ion Battery Supply Chain Database, developed by the National Laboratory of the Rockies (NLR) for NAATBatt International.
- Costs: EverBatt, developed by Argonne National Laboratory.
REBORN acknowledges these organizations and database developers for making these data resources available.
Results are saved in a subfolder created in the current working directory
when you run main.py. The default folder name is derived automatically from
your geographic selection (e.g., Northeast_South). You can override it in
the Results Folder field on the Settings page.
Output includes:
*_Aggregated_Final_Results.xlsx— year-by-year summary metrics*_Breakdown_Final_Results.xlsx— detailed cost breakdown per year- HTML map files per year (opened in the Results viewer)
| Symptom | Likely cause | Fix |
|---|---|---|
ModuleNotFoundError: No module named 'cplex' |
CPLEX dependency was not installed | Run pip install -r requirements.txt in the active Python environment |
| CPLEX reports that the model is too large | The scenario exceeds the free/community solver limits | Reduce the geographic scope or configure a commercial/academic CPLEX entitlement |
FileNotFoundError: location_data.json |
Running from a different directory | Run python main.py from inside the Free_Release_Code folder, or use the .bat launcher |
| Solver returns infeasible | Demand exceeds facility capacity for the selection | Widen the geographic scope or use Generate New Facility Locations in Step 3 |
| Map panel stays blank | map.html not yet generated |
Complete Steps 1–2 first so the Data page can write the map |
| Qt WebEngine crashes | Missing WebEngine Qt platform files | Reinstall PyQt6 and PyQt6-WebEngine via pip |
Srikar Srinivas — srikar.srinivas@inl.gov