Effacer les filtres
Effacer les filtres

how to use transformation with fminunc

1 vue (au cours des 30 derniers jours)
Saad
Saad le 30 Mar 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 commentaires
Matt J
Matt J le 31 Mar 2013
Modifié(e) : Matt J le 31 Mar 2013
Do you really mean
C_bar = lamda*exp(C)/(1+ exp(C))
Saad
Saad le 31 Mar 2013
Sorry I did miss a parenthese, it is actually
C=lamda* (exp(C)/(1+ exp(C)));

Connectez-vous pour commenter.

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Problem-Based Optimization Setup dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by