Previous Next kuhn_tucker_ok.m

ckbs_kuhn_tucker Example and Test

Source Code
 
function [ok] = kuhn_tucker_ok()
ok = true;
% -------------------------------------------------------------
% You can change these parameters
m    = 5; 
n    = 4;
N    = 3;
% -------------------------------------------------------------
rand('seed', 123);
p     = n * N;
r     = m * N;
mu    = 1.5;
s     = rand(r, 1);
y     = rand(p, 1);
u     = rand(r, 1);
b     = rand(r, 1);
d     = rand(p, 1);
Bdia  = rand(m, n, N);
Hdia  = rand(n, n, N);
Hlow  = rand(n, n, N);
B     = zeros(r, p);
H     = zeros(p, p);
blk_n = 1 : n;
blk_m = 1 : m;
for k = 1 : N
	B(blk_m, blk_n) = Bdia(:,:, k);
	H(blk_n, blk_n) = Hdia(:,:, k);
	blk_n           = blk_n + n;
	blk_m           = blk_m + m;
end
blk_n = 1 : n;
for k = 2 : N;
	blk_minus           = blk_n;
	blk_n               = blk_n + n;
	H(blk_n, blk_minus) = Hlow(:,:, k);
	H(blk_minus, blk_n) = Hlow(:,:, k)';
end 
% -------------------------------------
F = ckbs_kuhn_tucker(mu, s, y, u, b, d, Bdia, Hdia, Hlow);
% -------------------------------------
check = [ ...
	s + b + B * y; ...
	H * y + B' * u + d; ...
	s .* u - mu ...
];
ok    = ok & ( max(abs(F - check)) < 1e-10 );
return
end

Input File: example/kuhn_tucker_ok.m