rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
SQP_kkt_check.m
1 function is_kkt=SQP_kkt_check(grad_J, H, grad_H, l_eq)
2 
3 % This function checks, if the current iterae is a KKT-point.
4 % returns 1 if the iterate is a KKT-point
5 % returns 0 if the iterate is not a KKT-point
6 %
7 
8 
9 %tol_grad_L = 1e-5;
10 %tol_H = 1e-10;
11 tol_grad_L = 1e-3;
12 tol_H = 1e-5;
13 
14 % check gradient of Lagrange-function
15 sum_grad_eq_constr = zeros(1,size(grad_H,2));
16 for k=1: length(l_eq)
17  sum_grad_eq_constr = sum_grad_eq_constr + l_eq(k)*grad_H(k,:);
18 end
19 grad_L = grad_J + sum_grad_eq_constr;
20 % \nabla L = 0 ???
21 if (max(grad_L) <= tol_grad_L && min(grad_L) >= -tol_grad_L)
22  is_kkt_L = 1;
23 else
24  is_kkt_L = 0;
25 end
26 
27 
28 % check the equality-constraints:
29 if (max(H) <= tol_H && min(H) >= -tol_H)
30  is_kkt_H = 1;
31 else
32  is_kkt_H = 0;
33 end
34 
35 % check if both conditions (grad_L=0 and h=0) are complied
36 if is_kkt_L==1 && is_kkt_H==1
37  is_kkt = 1;
38 else
39  is_kkt = 0;
40 end