How do I use multi-parameters in my optimization problem for fminunc?

조회 수: 5 (최근 30일)
So, right now, I am performing an optimization with respect to all elements of 'A' matrix using below command.
[Aopt,fopt]=fminunc(@(A)myObjective(A,N33,p1,v,limit,n),A0,options);
But now I want an extra parameter (x) to be used for optimization also. This will be a scalar. Is the code will look like this?
[Aopt,fopt]=fminunc(@(A,x)myObjective(A,x,N33,p1,v,limit,n),A0,x0,options);
Thanks in advance.

채택된 답변

Matt J
Matt J 2021년 10월 10일
편집: Matt J 2021년 10월 10일
You can do something like that in the problem-based framework.
A=optimvar('A',N,3);
x=optimvar('x',1);
fun=fcn2optimexpr( @(A,x)myObjective(A,x,N33,p1,v,limit,n) , A x)
sol0.A=... %initial A0
sol0.x=... %initial x0
sol=solve( optimproblem('Objective',fun) , sol0,options);
  댓글 수: 1
Satyajit Ghosh
Satyajit Ghosh 2021년 10월 26일
After implementing above code segment, I am getting this error.
Error using optim.internal.problemdef.ProblemImpl/solveImpl
Expected a string scalar or character vector for the parameter name
Error in optim.problemdef.OptimizationProblem/solve
Error in Optimization_FINAL.m (line 145)
sol=solve(optimproblem('Objective',fun),sol0,options);

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

추가 답변 (1개)

John D'Errico
John D'Errico 2021년 10월 9일
No. It won't look like that. fminunc cannot somehow magically know how you intend the inputs to be used. Computers cannot read your mind. Well, not yet, but the mind reading toolbox is still under beta test.
Functions assume the input paraneters are as they are defined in the help.
If you want to optimize both A and x, then you need to treat all parameters in one vector (or array). Split them apart inside your objective function.

카테고리

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

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by