-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHw_4_Q1.m
49 lines (44 loc) · 1009 Bytes
/
Hw_4_Q1.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
clear;
clc;
u1 = -2;
u2 = -3;
n = 2;
x = zeros(n,1);
y = zeros(n,1);
P = [1,-.5;-.5, 2];
q = [-1;0];
A = [1, 2; 1, -4; -1, -1];
delta = [0; -.1; .1];
m = length(delta);
RHS = [u1; u2; 5];
cvx_begin quiet
variable y(n);
dual variable lambda_zero;
minimize(quad_form(y,P)+q'*y)
subject to
lambda_zero : A*y<=0;
cvx_end
p_star_zero=y'*P*y+q'*y
lambda_zero
for i=1:m
for j=1:m
perturb=[delta(i);delta(j);0];
cvx_begin quiet
variable x(n);
dual variable lambda;
minimize(quad_form(x,P)+q'*x)
subject to
lambda : A*x<=RHS+perturb;
cvx_end
delta_val=[delta(i),delta(j)]
x
lambda
p_star=x'*P*x+q'*x
p_star_pred = p_star_zero - lambda'*(RHS+perturb)
p_star_gap = p_star-p_star_pred
KKT_cond1 = 2*P*x+q+A'*lambda
KKT_cond2 = lambda'*(A*x-(RHS+perturb))
end
end
%KKT_cond1 = 2*P*x+q+A'*lambda
%KKT_cond2 = lambda'*(A*x-RHS)