Global Optimizationproblem using Global Search
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Daniela Würmseer
 el 7 de En. de 2022
  
    
    
    
    
    Comentada: Daniela Würmseer
 el 13 de En. de 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 comentarios
  Torsten
      
      
 el 8 de En. de 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
Respuesta aceptada
  Matt J
      
      
 el 8 de En. de 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 comentarios
  Matt J
      
      
 el 13 de En. de 2022
				
      Editada: Matt J
      
      
 el 13 de En. de 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).
Más respuestas (1)
  Matt J
      
      
 el 8 de En. de 2022
        
      Editada: Matt J
      
      
 el 8 de En. de 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 comentarios
Ver también
Categorías
				Más información sobre Linear Least Squares en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!