Optimise a loop with interpolation
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Fabian Haslwanter
am 9 Apr. 2023
Beantwortet: Vanshika Vaishnav
am 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 Kommentare
Akzeptierte Antwort
Vanshika Vaishnav
am 12 Apr. 2023
Setting the matrix as persistent will resolve the issue, however most of the time will be consumed by the interpolation.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Get Started with Optimization Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!