how to use transformation with fminunc

3 ビュー (過去 30 日間)
Saad
Saad 2013 年 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 Center および File ExchangeQuadratic 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