Optimise a loop with interpolation
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Fabian Haslwanter
il 9 Apr 2023
Risposto: Vanshika Vaishnav
il 12 Apr 2023
Hello dear forum:
I am working on an battary optimization problem. As part of the problem, an electrical resistance should be dependent on T, C-Rate and SOC. I have a lot of sample values in between which it should be interpolated. Because the optimization problem is designed as a shortest path model, it iterates around 200 million times. My current approach is shown below and is currently very slow due to the interpolation. I used the griddata-command for interpolation.
Is there a faster way? My ideas:
- Interpolate a lot of values in the first rotation and then only select the closest one etc.
- Turn the sample values into a function. (I have heard about this but didnt find it).
I am glad for any suggestions!
Thank you and merry easter.
Here my current function:
function R = calculateResistance_neu_neu(R0,I,SOC,T,Q)
T = T;
C_Rate = I/Q;
SOC = SOC;
matrix = [5, 0.5, 0.1, 2.25, 135;
.....
45, 3, 0.8, 1, 60;
45, 3, 0.9, 1, 60];
Multiplikator = griddata(matrix(:,1),matrix(:,2),matrix(:,3),matrix(:,4),T,C_Rate,SOC);
R = R0*Multiplikator;
4 Commenti
Risposta accettata
Vanshika Vaishnav
il 12 Apr 2023
Setting the matrix as persistent will resolve the issue, however most of the time will be consumed by the interpolation.
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Get Started with Optimization Toolbox in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!