Optimization problem - reducing the time needed to solve
조회 수: 1(최근 30일)
표시 이전 댓글
sittmo 2014년 2월 12일
답변: Oliver Woodford 2014년 2월 13일
Attached is a code, CIMDO.m, which attempts to solve the following optimization problem for lambda_0, lambda_1, ..., lambda_n.
Note that in the following, n is a fixed (natural) number (depending on the data that I use). It varies from 2 to 33.
However, when running the code, I realise that as n gets big (e.g., when n exceeds 10), the code suffers from severe curse of dimensionality, that is, it takes many days to just solve for the lagrange multipliers. Adding on to this, I have many sets of values for P_1, P_2, ..., P_n that I would like to use.
Are there any ways to make the code run faster? I am sure it is as efficient as it can be. Or are there any other methods of solving this optimization problem?
Oliver Woodford 2014년 2월 13일
ConstLM.m looks very inefficient to me. I think those loops can be vectorized. Profile your code, and learn about vectorization.
However, this will not really address the problem, which is that the computational complexity of your optimization is exponential in the dimensionality, n. The only way round this is to use another approach for your integration, e.g. a Monte Carlo method.
Find more on Solver Outputs and Iterative Display in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!