Filter löschen
Filter löschen

how to use transformation with fminunc

1 Ansicht (letzte 30 Tage)
Saad
Saad am 30 Mär. 2013
Dear all,
I am replicating a paper who recommends using fminunc to do a "constrained" optimization through a transformation. I have tried to use directly fmincon (with different algorithms) but the function doesnt optimize, thats the reason I would like to follow the paper advice and use a transformation as follows:
C_bar = lamda*(exp(C)/1+ exp(C))
where lamda is a constant, C is the unconstrained variable and C_bar is the constrained variable. I would really appreciate if you could show me how I could use the transformation in matlab. Do I have to create a seperate function? How can I link it to the optimizer please?
Here is my code
C=[1; 1; 1 ; 1; 1; 1; 1; 1; 1];
options=optimset('Diagnostics','on','Display','iter','TolX',0.001,'TolFun',0.001,'LargeScale','off','HessUpdate','bfgs');
[beta,fval,exitflag,output,grad,hessian] =fminunc(@mll,C,options)
Thanks a lot for your help
Best Regards
SB
  2 Kommentare
Matt J
Matt J am 31 Mär. 2013
Bearbeitet: Matt J am 31 Mär. 2013
Do you really mean
C_bar = lamda*exp(C)/(1+ exp(C))
Saad
Saad am 31 Mär. 2013
Sorry I did miss a parenthese, it is actually
C=lamda* (exp(C)/(1+ exp(C)));

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Matt J
Matt J am 31 Mär. 2013
Cbar=@(C) lamda*exp(C)/(1+ exp(C));
fminunc(@(C) mll(Cbar(C)) ,C,options)
  3 Kommentare
Matt J
Matt J am 31 Mär. 2013
Probably because of
'TolX',0.001,'TolFun',0.001
These look like very generous tolerances.
Saad
Saad am 31 Mär. 2013
thats true. I will tighten the tolerances a bit and see if it helps the optimizer. Thanks Matt

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Problem-Based Optimization Setup finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by