how to use transformation with fminunc

3 次查看(过去 30 天)
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 个评论
Matt J
Matt J 2013-3-31
编辑:Matt J 2013-3-31
Do you really mean
C_bar = lamda*exp(C)/(1+ exp(C))
Saad
Saad 2013-3-31
Sorry I did miss a parenthese, it is actually
C=lamda* (exp(C)/(1+ exp(C)));

请先登录,再进行评论。

采纳的回答

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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Quadratic Programming and Cone Programming 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by