Global Optimizationproblem using Global Search
    3 views (last 30 days)
  
       Show older comments
    
    Daniela Würmseer
 on 7 Jan 2022
  
    
    
    
    
    Commented: Daniela Würmseer
 on 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 Comments
  Torsten
      
      
 on 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
Accepted Answer
  Matt J
      
      
 on 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 Comments
  Matt J
      
      
 on 13 Jan 2022
				
      Edited: Matt J
      
      
 on 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).
More Answers (1)
  Matt J
      
      
 on 8 Jan 2022
        
      Edited: Matt J
      
      
 on 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 Comments
See Also
Categories
				Find more on Linear Least Squares in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


