How to use patternsearch to optimize two control vectors of a function; optimizing both variables instead of passing one of them?
1 view (last 30 days)
Show older comments
Yaser Khojah
on 4 Jan 2018
Commented: Yaser Khojah
on 4 Jan 2018
Dear Alan, I have an optimization problem where my function has two control variables as the following
function [NetPV,finalSupply] = OptimizedRate (Weights,NRates)
Weights and NRates are vectors as: Weights = [x1 x2 x3] and NRates = [y1 y2 y3]
I want to optimized Weights and NRates not just passing one of them. I have seen some examples like: https://uk.mathworks.com/help/optim/ug/passing-extra-parameters.html
and tried them. However this pass NRates variable instead of optimizing it. [x,fval,exitflag,output] = patternsearch(@(Weights)OptimizedRate(Weights,NRates),x0,[],[],Aeq,beq,LB,UB,options);
I'm looking for away to optimize Weights and NRates variables jointly.
Thanks for your help!
0 Comments
Accepted Answer
Sean de Wolski
on 4 Jan 2018
patternsearch(@(x)OptimizedRate(x(1),x(2)), [weight0 nRate0], ...
Index into one variable that is passed to the objective function.
More Answers (1)
Alan Weiss
on 4 Jan 2018
I think that the simplest way is to combine your variables into one vector, x = [Weights,NRates], which is what any optimization solver needs. See Compute Objective Function.
For example,
function [NetPV,finalSupply] = mynewfun(x)
Weights = x(1:3);
NRates = x(4:6);
[NetPV,finalSupply] = OptimizedRate(Weights,NRates);
Optimize mynewfun instead of OptimizedRate. Be sure to give your initial point x0 as a 6-element vector.
Alan Weiss
MATLAB mathematical toolbox documentation
3 Comments
Alan Weiss
on 4 Jan 2018
The linear constraints should be written in terms of the 6-D variable x.
Alan Weiss
MATLAB mathematical toolbox documentation
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!