Enabling fast charging

What can we do?

Outline

  • Problem formulation
  • Modeling
  • Experiments
  • Results/Takeaways

Problem formulation

Fast charging

Problem statement

  • How could we enable fast charging that produces higher cycle life?

Problem statement

  • How could we enable fast charging that produces higher cycle life?

  • Scientists landed on few things we can control: biggest one is the electrolyte

Problem statement

  • How could we enable fast charging that produces higher cycle life?

  • Scientists landed on few things we can control: biggest one is the electrolyte

  • Conductivity of the electrolyte is a key factor

Problem statement

  • How could we enable fast charging that produces higher cycle life?

  • Scientists landed on few things we can control: biggest one is the electrolyte

  • Conductivity of the electrolyte is a key factor

  • How could we optimize/maximize the conductivity?

Problem statement

  • How could we enable fast charging that produces higher cycle life?

  • Scientists landed on few things we can control: biggest one is the electrolyte

  • Conductivity of the electrolyte is a key factor

  • How could we optimize/maximize the conductivity?

  • Do we have data?

Problem statement

  • How could we enable fast charging that produces higher cycle life?

  • Scientists landed on few things we can control: biggest one is the electrolyte

  • Conductivity of the electrolyte is a key factor

  • How could we optimize/maximize the conductivity?

  • Do we have data? Yes*

Data

Data [1235 x 131]

Data [1235 x 131]

What does electrolyte contain?

What does electrolyte contain?

  • Solvents

What does electrolyte contain?

  • Solvents

  • Solvents mol %

What does electrolyte contain?

  • Solvents

  • Solvents mol %

  • Salts

What does electrolyte contain?

  • Solvents

  • Solvents mol %

  • Salts

  • Salts mol %

What does electrolyte contain?

  • Solvents

  • Solvents mol %

  • Salts

  • Salts mol %

  • Additives

What does electrolyte contain?

  • Solvents

  • Solvents mol %

  • Salts

  • Salts mol %

  • Additives

  • Additives mol %

What does electrolyte contain?

Problem formulation - attempt

Problem formulation - attempt

  • Create a regression model that uses all electrolyte ingredients along with their percentages to predict Conductivity (mS/cm)

Problem formulation - attempt

  • Create a regression model that uses all electrolyte ingredients along with their percentages to predict Conductivity (mS/cm)

  • Nudge experiments

Problem formulation - attempt

  • Create a regression model that uses all electrolyte ingredients along with their percentages to predict Conductivity (mS/cm)

  • Nudge experiments

  • Catch! we have interesting constraints.

Constraints

Constraints

  • Famous Solvent % \(\leq\) 2* Famous Salt %

Constraints

  • Famous Solvent % \(\leq\) 2* Famous Salt %
  • Another Solvent % \(\leq\) 2* Famous Salt %

Constraints

  • Famous Solvent % \(\leq\) 2* Famous Salt %

  • Another Solvent % \(\leq\) 2* Famous Salt %

  • additive % \(\leq\) Fixed Percentage

Constraints

  • Famous Solvent % \(\leq\) 2* Famous Salt %

  • Another Solvent % \(\leq\) 2* Famous Salt %

  • additive % \(\leq\) Fixed Percentage

  • salt % \(\leq\) Another Fixed Percentage

Constraints

  • Famous Solvent % \(\leq\) 2* Famous Salt %

  • Another Solvent % \(\leq\) 2* Famous Salt %

  • additive % \(\leq\) Fixed Percentage

  • salt % \(\leq\) Another Fixed Percentage

  • sum % = 100

Constraints

  • Famous Solvent % \(\leq\) 2* Famous Salt %

  • Another Solvent % \(\leq\) 2* Famous Salt %

  • additive % \(\leq\) Fixed Percentage

  • salt % \(\leq\) Another Fixed Percentage

  • sum % = 100

  • cycle life \(\geq\) Fixed Cycle Life

Problem statement

Problem statement

  • Create a Smooth/Polynomial regression model that uses all electrolyte ingredients along with their percentages to predict/infer Conductivity (mS/cm)

Problem statement

  • Create a Smooth/Polynomial regression model that uses all electrolyte ingredients along with their percentages to predict/infer Conductivity (mS/cm)

  • Use constraints to optimize the fitted polynomial model

Problem statement

  • Create a Smooth/Polynomial regression model that uses all electrolyte ingredients along with their percentages to predict/infer Conductivity (mS/cm)

  • Use constraints to optimize the fitted polynomial model

  • Find the arguments that maximize the Conductivity

Problem statement

  • Create a Smooth/Polynomial regression model that uses all electrolyte ingredients along with their percentages to predict/infer Conductivity (mS/cm)

  • Use constraints to optimize the fitted polynomial model

  • Find the arguments that maximize the Conductivity

  • Suggest a grid that chemically makes sense as experiments

Process workflow

Assumptions made

\[ \arg\max_{\theta} f(\theta) \approx \arg\max_{\theta} \hat{f}(\theta) \]

Assumptions made

\[ \arg\max_{\theta} f(\theta) \approx \arg\max_{\theta} \hat{f}(\theta) \]

Under ‘nice’ conditions

  • Uniform Convergence

  • Unique Global Maximum

Modeling

Features

Assume we have

  • n solvents
  • m salts
  • k additives

That is 2(n+m+k) features.

Categorical columns

Categorical columns

Solvents

  • NA, None, ““, N/A, NONE
  • 10 common values: simplified levels (regex)
  • Combined others

Categorical columns

Solvents

  • NA, None, ““, N/A, NONE
  • 10 common values: simplified levels (regex)
  • Combined others

Salts

  • NA, None, ““, N/A, NONE
  • 4 common values: simplified levels (regex)
  • combined others

Numerical columns

Numerical columns

  • 30%, 30 %, 30.0, 0.3, 30 perc, 30 percent

Numerical columns

  • 30%, 30 %, 30.0, 0.3, 30 perc, 30 percent

  • 70% –> 70

  • 25.6% –> 25.6

  • abc –> 0

  • NA –> 0

  • 0.3 –> 30

Numerical columns

Numerical columns

  • sum did not added up to 100

Numerical columns

  • sum did not added up to 100

  • scientists cleaned it up using their records

Raw Data

Raw Data

Constraints

Constraints

External constraints

  • Famous Solvent % \(\leq\) 2* Famous Salt %

  • Another Solvent % \(\leq\) 2* Famous Salt %

  • additive % \(\leq\) Fixed Percentage

  • salt % \(\leq\) Another Fixed Percentage

  • sum % = 100

Constraints

External constraints

  • Famous Solvent % \(\leq\) 2* Famous Salt %

  • Another Solvent % \(\leq\) 2* Famous Salt %

  • additive % \(\leq\) Fixed Percentage

  • salt % \(\leq\) Another Fixed Percentage

  • sum % = 100

Internal constraint

  • cycle life \(\geq\) Fixed Cycle Life

Internal constraint: cycle life

Internal constraint: cycle life

Internal constraint: cycle life

After cleanup

After cleanup

273 row

Conductivity

Conductivity

Further Feature engineering

poly_rec <- recipe(conductivity ~., elyte_data) |> 
  update_role(id, new_role = 'id') |> 
  # bin additives
  step_other(additive, other = 'others_combined', threshold = 0.05) |> 
  step_zv(all_predictors()) |> 
  # create squared columns
  step_poly(contains('p'), degree = 2, options = list(raw = TRUE)) |> 
  # create interactions between all numerical columns
  step_interact(terms = ~ ends_with("poly_1"):ends_with("poly_1")) 

Further Feature engineering

poly_rec <- recipe(conductivity ~., elyte_data) |> 
  update_role(id, new_role = 'id') |> 
  # bin additives
  step_other(additive, other = 'others_combined', threshold = 0.05) |> 
  step_zv(all_predictors()) |> 
  # create squared columns
  step_poly(contains('p'), degree = 2, options = list(raw = TRUE)) |> 
  # create interactions between all numerical columns
  step_interact(terms = ~ ends_with("poly_1"):ends_with("poly_1")) 

Further Feature engineering

poly_rec <- recipe(conductivity ~., elyte_data) |> 
  update_role(id, new_role = 'id') |> 
  # bin additives
  step_other(additive, other = 'others_combined', threshold = 0.05) |> 
  step_zv(all_predictors()) |> 
  # create squared columns
  step_poly(contains('p'), degree = 2, options = list(raw = TRUE)) |> 
  # create interactions between all numerical columns
  step_interact(terms = ~ ends_with("poly_1"):ends_with("poly_1")) 

Further Feature engineering

poly_rec <- recipe(conductivity ~., elyte_data) |> 
  update_role(id, new_role = 'id') |> 
  # bin additives
  step_other(additive, other = 'others_combined', threshold = 0.05) |> 
  step_zv(all_predictors()) |> 
  # create squared columns
  step_poly(contains('p'), degree = 2, options = list(raw = TRUE)) |> 
  # create interactions between all numerical columns
  step_interact(terms = ~ ends_with("poly_1"):ends_with("poly_1")) 

Further Feature engineering

poly_rec <- recipe(conductivity ~., elyte_data) |> 
  update_role(id, new_role = 'id') |> 
  # bin additives
  step_other(additive, other = 'others_combined', threshold = 0.05) |> 
  step_zv(all_predictors()) |> 
  # create squared columns
  step_poly(contains('p'), degree = 2, options = list(raw = TRUE)) |> 
  # create interactions between all numerical columns
  step_interact(terms = ~ ends_with("poly_1"):ends_with("poly_1")) 

Further Feature engineering

poly_rec <- recipe(conductivity ~., elyte_data) |> 
  update_role(id, new_role = 'id') |> 
  # bin additives
  step_other(additive, other = 'others_combined', threshold = 0.05) |> 
  step_zv(all_predictors()) |> 
  # create squared columns
  step_poly(contains('p'), degree = 2, options = list(raw = TRUE)) |> 
  # create interactions between all numerical columns
  step_interact(terms = ~ ends_with("poly_1"):ends_with("poly_1")) 

Coefficients

Coefficients

Optimization [with extrenal constraints]

library(nloptr)

# inequality constraints
eval_g_ineq <- function(x){
  return (x[1] - 2*x[7])
}

eval_g_ineq2 <- function(x){
  return (x[5] - 6)
}

eval_g_ineq3 <- function(x){
  return (x[6] - 6)
}

eval_g_ineq4 <- function(x){
  return (x[8] - 2)
}

eval_g_ineq5 <- function(x){
  return (x[9] - 2)
}

# equality constraint (sum of percentages must be 100)
eval_g_eq <- function(x){
  return ( sum(x)-100 )
}

Experiment suggestions

Experiment suggestions

Experiments

Measured Conductivity

Measured Conductivity

Was the experiment successful?

Was the experiment successful?

Results/Takeaways

Results/Takeaways

Results/Takeaways

  • Collect better CL data

Results/Takeaways

  • Collect better CL data

  • Optimize CL along with Conductivity

Results/Takeaways

  • Collect better CL data

  • Optimize CL along with Conductivity

  • ML model just as a predictive tool is valuable on itself

Results/Takeaways

  • Collect better CL data

  • Optimize CL along with Conductivity

  • ML model just as a predictive tool is valuable on itself

  • New business idea: Could we create ML platform?

Initiation of ML platform

Initiation of ML platform

Thanks!