Global Optimizationproblem using Global Search

조회 수: 2 (최근 30일)
Daniela Würmseer
Daniela Würmseer 2022년 1월 7일
댓글: Daniela Würmseer 2022년 1월 13일
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
Daniela Würmseer
Daniela Würmseer 2022년 1월 8일
I used fmincon already before but the solution was not the right one so i tried GlobalSearch.
@Torsten could you tell me how your Code looks like to get this result? Iam new to matlab so perhaps i did something wrong?
Thank you for all of your answers.
Torsten
Torsten 2022년 1월 8일
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

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2022년 1월 8일
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
ans = 4×1
5.0000 0 0.5000 5.5000
constr(x)
ans = 0
  댓글 수: 6
Matt J
Matt J 2022년 1월 13일
편집: Matt J 2022년 1월 13일
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).
Daniela Würmseer
Daniela Würmseer 2022년 1월 13일
Sorry, i think the word "still" was misplaced here. I was just not sure about my Code but you are right i was not seeing the "10-10 x" in the solution and like this the solution is really close to x = (0,0,0,0,0).
Thank you for the help.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Matt J
Matt J 2022년 1월 8일
편집: Matt J 2022년 1월 8일
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,[],[]);
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.
x=[x12;-x3]'
x = 1×3
3.5000 1.5000 26.5000

카테고리

Help CenterFile Exchange에서 Linear Least Squares에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by