fmincon using only gradient vector, without scalar function

I would like to use MATLAB function fmincon using the gradient vector alone (without scalar function f). But I have trouble with it. For instance, I have tried the following, but it doesn't work. Any help please? Thanks in advance!
x0 = [-1,2];
A = [];
b = [];
Aeq = [];
beq = [];
lb = [-2,-2];
ub = [2,2];
x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub)
function [grad] = myfun(x)
grad = [-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1));
200*(x(2)-x(1)^2)];
end

1 comentario

The concept of optimization problem does not make sense without an objective function. What does the gradient even mean in that case? Can you tell me what you are trying to do here?

Iniciar sesión para comentar.

 Respuesta aceptada

Walter Roberson
Walter Roberson el 27 de Sept. de 2020
That is not supported by fmincon. You must return a scalar value as the first output.
If you have set the appropriate option in the option structure, you can also return the gradient as the second output.

3 comentarios

The functions with that gradient are
100*X^4 + X^2 - 2*X + 100*Y^2 - 200*X^2*Y + c
for all finite constants c.
The value of c will not change the location of the minima, so you might as well use 0.
HAT
HAT el 28 de Sept. de 2020
Thanks. But my plan was to get the solution without the objective function (only using the gradient vector). For instance, if the gradient vector is lager in size, converting into the original function may be challenging (it may take more computational time).
fmincon does not support that. As far as I recall, none of the Mathworks minimizers support that.

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Preguntada:

HAT
el 27 de Sept. de 2020

Comentada:

el 1 de Oct. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by