fminunc for upper and lower bound variable definition ?
Show older comments
Isn't it possible to give upper and lower bound for the variables in the objective function while using fminunc ?
Thank you.
Accepted Answer
More Answers (1)
Bruno Luong
on 4 Nov 2020
Edited: Bruno Luong
on 4 Nov 2020
You could transform variables, x will be opened bounded by lo/hi
xfun = @(y) lo + (hi-lo).*sin(y).^2
...
y = fminunc(obj(xfun(y)), ...)
x = xfun(y)
Honestly I don't like those kind of transformation.
Use the right tool: fmincon as others have suggested.
9 Comments
Walter Roberson
on 4 Nov 2020
sin(y) could be negative though
Bruno Luong
on 4 Nov 2020
Good catch Walter, I correct it
Walter Roberson
on 4 Nov 2020
Could also use the midpoint plus half the difference times sine unsquared, taking advantage of the negative ;)
Bruno Luong
on 4 Nov 2020
I could. Just minimize the keyboard skrokes while editing the code. ;-)
Walter Roberson
on 5 Nov 2020
No, fmincon() is completely unsuited for finding the minimum of multiple functions at the same time. See gamultiobj()
Walter Roberson
on 5 Nov 2020
fun = @(x)[x1L;x2L;x3L]+([x1U;x2U;x3U]-[x1L;x2L;x3L]).*PRSopt_QN1(x(1,:),x(2,:),x(3,:))
Unless two of x1L, x2L, x3L are empty and the third is a scalar, then you can be sure that function is going to return something that is not a scalar. You do not take the mean() there.
Categories
Find more on Solver Outputs and Iterative Display in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!