How to use patternsearch to optimize two control vectors of a function; optimizing both variables instead of passing one of them?
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Sean de Wolski
2018-1-4
patternsearch(@(x)OptimizedRate(x(1),x(2)), [weight0 nRate0], ...
Index into one variable that is passed to the objective function.
更多回答(1 个)
Alan Weiss
2018-1-4
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 个评论
Alan Weiss
2018-1-4
The linear constraints should be written in terms of the 6-D variable x.
Alan Weiss
MATLAB mathematical toolbox documentation
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Surrogate Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!