Supplied objective function must return a scalar value

8 visualizzazioni (ultimi 30 giorni)
I have to minimize a function with FMINCON:
f = @(x,y) k*x.*(teta_in-y)
i create this script to apply fmincon:
x0 = [2000,10];
A = [1 0;0 -1];
b = [25;2273];
f = cell(2,1)
f{1} = @(x) k*x.*(teta_in-y)
f{2} = @(x) k*x.*(teta_in-y)
[xmin,fval] =fmincon(f,x0,A,b)
But the programme give me the error: Supplied objective function must return a scalar value
If you have a different way to minimize that function with fmincon i appreciate that
  2 Commenti
Dyuman Joshi
Dyuman Joshi il 8 Gen 2024
Modificato: Dyuman Joshi il 8 Gen 2024
What are the values of k and teta_in?
Why do you use the same function twice?
Also, share the mathematical definition of the objective function you have to minimize.
EDOARDO GELMI
EDOARDO GELMI il 8 Gen 2024
K and teta_in are two constants. Previously i had an error which said that i had to use a double in order to solve the problem with fmincon, so i created a cell (i searched on the internet but i wasn't sure about it).
What do you mean by "share the mathematical definition..."? I don't understand your request.
Thank you!

Accedi per commentare.

Risposta accettata

Star Strider
Star Strider il 8 Gen 2024
The function needs to return one parameter vector. One way to do that is to create a second function to map the inpouts to to such a vector:
ffcn = @(b)f(b(1),b(2));
Then, providing random values for the missing constants ‘k’ and ‘teta_in’ and running it produces —
k = rand
k = 0.0666
teta_in = rand
teta_in = 0.3083
f = @(x,y) k*x.*(teta_in-y);
ffcn = @(b)f(b(1),b(2));
x0 = [2000,10];
A = [1 0;0 -1];
b = [25;2273];
[xmin,fval] =fmincon(ffcn,x0,A,b)
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
xmin = 1×2
1.0e+07 * 0.0000 7.7169
fval = -1.2840e+08
.
  11 Commenti

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by