Optimise a loop with interpolation
조회 수: 3 (최근 30일)
이전 댓글 표시
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
채택된 답변
Vanshika Vaishnav
2023년 4월 12일
Setting the matrix as persistent will resolve the issue, however most of the time will be consumed by the interpolation.
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Get Started with Optimization Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!