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 Center および File ExchangeSolver Outputs and Iterative Display についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by