failure in initial objective function evaluation
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Sara
am 5 Sep. 2017
Kommentiert: Alan Weiss
am 6 Sep. 2017
Hello,
I want to solve an optimization problem by Matlab fmincon function. I defined my objective function as:
function f = objfun(x,p1,p2)
x1=x(1:24);
y1=x(25:48);
z1=x(48:end);
f=-mean(x1*(p1)'+y1*(p2)')+mean(z1*(p1)')
end
p1,p2 are 1x24 vectors which are calculated in the main file. I need to find the optimum values for x1, y1 and z1 which are 1x24 vectors (total 72 variables).
When I run the main code I get an error message about the objective function and then for fmincon by failure in initial objective unction evaluation. caused
Would you please advise how can I solve the problem? Thanks a lot!
2 Kommentare
Alan Weiss
am 5 Sep. 2017
Please show us your fmincon call, the complete copy-pasted error message, and the value of x0. The problem could be as simple as you having x0 as a row vector instead of a column vector, or p1 a row vector, but without seeing the inputs to the problem and the complete error message, we cannot know.
Alan Weiss
MATLAB mathematical toolbox documentation
Akzeptierte Antwort
Alan Weiss
am 5 Sep. 2017
Thank you for the complete error message. z1 should be defined as
z1 = x(49:end);
I believe that, as you have defined it, z1 has 25 elements.
I am not really sure that you gave us the code of your function. The mean statements do not do anything, as all of the entries x1*p1' and the others are scalars, and mean leaves scalars alone.
Alan Weiss
MATLAB mathematical toolbox documentation
2 Kommentare
Alan Weiss
am 6 Sep. 2017
The mean statement is superfluous. When you multiply, the matrix definition of multiply gives
x1*(p1') = x1(1)*p1(1) + x1(2)*p1(2) + ... + x1(24)*p1(24)
This is a scalar. To get the mean, you could divide by 24. But to optimize, the factor of 24 does not matter.
Alan Weiss
MATLAB mathematical toolbox documentation
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!