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);

    By = ckbs_blkdiag_mul(Bdia, y);
    Btu = ckbs_blkdiag_mul_t(Bdia, u);
    Hy = ckbs_blktridiag_mul(Hdia, Hlow, y);

    % -------------------------------------
    F = ckbs_kuhn_tucker(mu, s, y, u, b, d, Bdia, Hdia, Hlow);
    % -------------------------------------
    check = [ ...
        s + b + By; ...
        Hy + Btu + d; ...
        s .* u - mu ...
        ];
    ok    = ok & ( max(abs(F - check)) < 1e-10 );
    return
end

Input File: example/kuhn_tucker_ok.m