On 3/30/2013 5:26 PM, Saad wrote: > 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 > > S
It looks to me as if C_bar is a multidimensional variable constrained to be between 0 and 1. Is that right?
You can certainly include this transformation in a MATLAB statement:
C_bar = lamda.*(exp(C)./(1+exp(C));
The ./ and .* statements mean componentwise division and multiplication.