The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Software » comp.soft-sys.matlab

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: fminunc + transformation
Replies: 5   Last Post: Apr 12, 2013 1:37 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Alan Weiss

Posts: 1,430
Registered: 11/27/08
Re: fminunc + transformation
Posted: Apr 3, 2013 1:58 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

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.

However, I think you could avoid this complicated and (it seems to me)
fragile transformation by simply setting bounds on fmincon and using the
interior-point or sqp algorithms, which respect bounds.

Good luck,

Alan Weiss
MATLAB mathematical toolbox documentation

Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.