Optimization problem - reducing the time needed to solve

조회 수: 5 (최근 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?

답변 (1개)

Oliver Woodford
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.


Help CenterFile Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기



Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by