Global Optimizationproblem using Global Search
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Daniela Würmseer
am 7 Jan. 2022
Kommentiert: Daniela Würmseer
am 13 Jan. 2022
Hello, i am trying to use the globalSearch function to solve the following Optimization Problem:
min - x(3)
s.t. -x(1) -x(2) <= 0
-10*x(1)+x(1)^2-4*x(2)+x(2)^2+x(3) <= 0
3x(1) + x(2) <= 12
2x(1) + x(2) <= 9
x(1) + 2x(2) <= 12
x(1), x(2) >= 0
If you try a bit out you see that x(1) = 4, x(2) = 0, x(3) = 24 is the optimal solution.
But my Matlab Code gives a different solution and i do not know why.
Here my Code:
f=@(x)-x(3);
x0 = [0,0,0];
lb = [0,0,-Inf];
gs = GlobalSearch;
A = [-1 -1 0;
3 1 0;
2 1 0;
1 2 0];
b = [0; 12; 9; 12];
nonlincon = @constr;
problem = createOptimProblem('fmincon','x0',x0,'objective',f,'lb',lb,'Aineq',A,'bineq',b,'nonlcon',nonlincon)
x = run(gs,problem)
I would be thankful if someone could tell me if I did a mistake somewhere.
7 Kommentare
Torsten
am 8 Jan. 2022
function main
f=@(x)-x(3);
x0 = [0,0,0];
lb = [0,0,-Inf];
A = [-1 -1 0;
3 1 0;
2 1 0;
1 2 0];
b = [0; 12; 9; 12];
nonlcon = @constr;
sol = fmincon (f, x0, A, b, [], [], lb, [], nonlcon)
end
function [c,ceq] = constr(x)
c = -10*x(1)+x(1)^2-4*x(2)+x(2)^2+x(3);
ceq = [];
end
Akzeptierte Antwort
Matt J
am 8 Jan. 2022
We can verify that Torsten's solution is feasible as below. Since it gives a better objective function value than your experimental solution, your solution cannot be the correct one.
A = [-1 -1 0;
3 1 0;
2 1 0;
1 2 0];
b = [0; 12; 9; 12];
constr = @(x) -10*x(1)+x(1)^2-4*x(2)+x(2)^2+x(3);
x=[3.5000 1.5000 26.5000]';
b-A*x
constr(x)
6 Kommentare
Matt J
am 13 Jan. 2022
Bearbeitet: Matt J
am 13 Jan. 2022
i still dont get the right solution and I dont know why
What do you mean "still"? I thought we established that you were getting the right solution all along.
That seems to be the case here again. The soluton you've shown is very close to x = (0,0,0,0).
Weitere Antworten (1)
Matt J
am 8 Jan. 2022
Bearbeitet: Matt J
am 8 Jan. 2022
In fact, the problem can also be solved with quadprog, since it is equivalent to,
min -10*x(1)+x(1)^2-4*x(2)+x(2)^2
s.t.
3x(1) + x(2) <= 12
2x(1) + x(2) <= 9
x(1) + 2x(2) <= 12
x(1), x(2) >= 0
and since the objective function of the reformulated problem is srictly convex, it establishes that the solution is also unique:
f=@(x)-x(3);
x0 = [0,0,0];
lb = [0,0];
A =[3 1;
2 1;
1 2];
b = [12; 9; 12];
H=2*eye(2);
f=[-10;-4];
[x12,x3]=quadprog(H,f,A,b,[],[]);
x=[x12;-x3]'
0 Kommentare
Siehe auch
Kategorien
Mehr zu Linear Least Squares finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!