how to use transformation with fminunc

3 views (last 30 days)
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 Comments
Matt J
Matt J on 31 Mar 2013
Edited: Matt J on 31 Mar 2013
Do you really mean
C_bar = lamda*exp(C)/(1+ exp(C))
Saad
Saad on 31 Mar 2013
Sorry I did miss a parenthese, it is actually
C=lamda* (exp(C)/(1+ exp(C)));

Sign in to comment.

Accepted Answer

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

Sign in to comment.

More Answers (0)

Categories

Find more on Quadratic Programming and Cone Programming in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!