How do I use multi-parameters in my optimization problem for fminunc?
2 次查看(过去 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.
0 个评论
采纳的回答
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 个)
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.
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!