Optimizing a function with a vector as input

Hi everyone,
I have a function with an input of 6 values (6 periods of power) and only one output, the price. I would like to optimize the output value (minimize it) changing the input, but I have found no information about how to optimize with a vector as an imput instead of an scalar. I already tried with fminsearch or optimproblem, but none worked.
Thank you in advance!

 采纳的回答

There is no reason why an OptimizationVariable can't be vector-valued, e.g.,
P=optimvar('P',[6,1]);
size(P)
ans = 1×2
6 1

5 个评论

Then the problem should be in how I call the function: (being P a vector 1x6)
prob.Objective = function(P);
but I don't see why there should be a problem there
the error is the following:
The following error occurred converting from optim.problemdef.OptimizationExpression to single:
Conversion to single from optim.problemdef.OptimizationExpression is not possible.
I don't know what your revised code looks like, but you definitely can't do things like this:
P=optimvar('P',[6,1]);
single(P)
Error using single
Conversion to single from optim.problemdef.OptimizationVariable is not possible.
You also can't insert OptimizationVariables into numeric matrices, as in:
P=optimvar('P');
C=zeros(1,3,'single');
C(1)=P;
Unable to perform assignment because value of type 'optim.problemdef.OptimizationVariable' is not convertible to 'single'.

Caused by:
Error using single
Conversion to single from optim.problemdef.OptimizationVariable is not possible.
To be honest, I'm not sure why you are using optimvar at all, as opposed to the solver-based framework. Your constraints are not very complicated, and your objective function is. That's exactly the opposite of when the problem-based framework is useful.
How can I write then the prob.Objective function? Let's say you want to minimize a function f output (which is a scalar), and the input is that: P=optimvar('P',[6,1]); Wouldn't it be:
prob = optimproblem('Objective',@function(P);
[x, fval] = solve(prob)
Thank you Matt!
You have much more freedom in the way you write the objective function if you use the solver-based framework

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Get Started with Optimization Toolbox 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by