필터 지우기
필터 지우기

Optimizing a function with many many arguments

조회 수: 17 (최근 30일)
Giorgos Papakonstantinou
Giorgos Papakonstantinou 2013년 1월 25일
I have a function which has many outputs. I would like to find the minimum of one of the outputs by optimizing the function. Since I have many outputs I suspect that the optimization will not be successful. So my function is of the form:
function [A, B, C]=myfun(a,b,c)
and I would like to find the minimum only of the output A. Then since I the optimized values for a,b,c I would like to call again the function to find the values also of B and C.
So I would like to do:
[Amin, Bopt, Copt]=myfun(aopt, bopt, copt)
Do you know how can implement it?

답변 (3개)

Matt J
Matt J 2013년 1월 25일
편집: Matt J 2013년 1월 25일
Any of the solvers can do this, e.g.
fun=@(x) myfun(x(1), x(2), x(3));
initialpoint=[aguess,bguess, cguess];
x = fminsearch(fun , initialpoint);
[Amin, Bopt, Copt]=fun(x);
  댓글 수: 3
Matt J
Matt J 2013년 1월 25일
Inside my fun there is only one output which I would like to optimize and depends on the vector x. The thing is that myfun is saved in separate script and has lots of outputs. Since I want the minimization of only one of the outputs I guess that the way I showed is not correct.
As long as the first output of myfun is the value you are optimizing, and as long as you are not using the option 'GradObj'='on', it should be fine.
Matt J
Matt J 2013년 1월 25일
Well I could place it first but that is not what I am looking for.
Then wrap it in a function that does place it first.

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


Giorgos Papakonstantinou
Giorgos Papakonstantinou 2013년 1월 25일
Basically I would like from another script to execute the optimization. So the function is saved in another script. When I do the optimization I am creating a function handle with the following way:
a=3;
b=7;
c=10;
d=9;
f=@(x)myfun(x, a, b, c, d);
x0=[1, 2, 3];
A=zeros(1,3);
A(1,1)=2;
A(1,2)=0.5;
b=-1;
[xopt,fmin]=fmincon(p,x0,A,b)
I am passing parameters a,b,c,d. x is the variable vector. Inside my fun there is only one output which I would like to optimize and depends on the vector x. The thing is that myfun is saved in separate script and has lots of outputs. Since I want the minimization of only one of the outputs I guess that the way I showed is not correct.

Giorgos Papakonstantinou
Giorgos Papakonstantinou 2013년 1월 25일
Well I could place it first but that is not what I am looking for. Anyway thank you Matt.

카테고리

Help CenterFile 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!

Translated by