Optimization of multivariable function using fminunc

조회 수: 2 (최근 30일)
Sushovit Adhikari
Sushovit Adhikari 2015년 6월 9일
편집: Walter Roberson 2015년 6월 11일
Hi, I have a function of the form H = X*matrix(A) + Y*matrix(B) and matrix(A) and (B) are fixed. I need to optimize X and Y simultaneously, how can I do it?
For example: if I just had H=X*matrix(A) + matrix(B), I could have used fminunc. I could have created a function handle for H and pass it as an argument in fminunc. I know how to do it for single variable, but I just don't know how to do it in multiple variable. I looked up many resources, including many old post, but I got more confused. Any help would be appreciated. Thank You
  댓글 수: 1
Walter Roberson
Walter Roberson 2015년 6월 10일
are X and Y matrices or vectors? If they are matrices then H is a matrix, and in that case you need to define what it means to "optimize" H. Lowest trace? Smallest sum-of-squares?

댓글을 달려면 로그인하십시오.

답변 (1개)

Drew Davis
Drew Davis 2015년 6월 10일
Define your function handle like so:
f = @(x) x(1:a) * A + x(a+1:end) * B
where:
X = x(1:a) , Y = x(a+1:end)
then
x = fminunc(f , x0);
where:
X0 = x0(1:a) , Y0 = x0(a+1:end)
Note 'a' is the number of elements in the 'X' vector.
  댓글 수: 4
Drew Davis
Drew Davis 2015년 6월 11일
fminunc will take row vectors (depends on initial points as you suggested). Try the following:
fminunc(@(x) x(1)^2 + 0.1 * x(2)^2 , [1,1])
Walter Roberson
Walter Roberson 2015년 6월 11일
편집: Walter Roberson 2015년 6월 11일
Okay, but we still end up with problems with the output size. The only non-trivial case of this form that fminunc can deal with has a trivial solution of letting some of the components go to infinity or negative infinity. This then gets back to the question I posed earlier about what about the matrix is to be "minimized", such as possibly the trace.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Problem-Based Nonlinear Optimization에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by