Search All of the Math Forum:

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

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

 Messages: [ Previous | Next ]
 Alan Weiss Posts: 1,390 Registered: 11/27/08
Re: fminunc + transformation
Posted: Apr 3, 2013 1:58 PM

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
>
> 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');
>
>
> 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.
http://www.mathworks.com/help/optim/ug/writing-constraints.html#br9p_ry

Good luck,

Alan Weiss
MATLAB mathematical toolbox documentation

Date Subject Author