Exemplo n.º 1
0
 def r(f, h: LinearRestrictions):
     """
     r(x, ν) = (∇f(x) + A.T ν, Ax − b)
     """
     return lambda x, ν: concatenate([[
         ConstrainedNewtonInfeasible.r_primal(f, h, x, ν)
     ], [ConstrainedNewtonInfeasible.r_dual(h, x)]])
Exemplo n.º 2
0
    def b(self):
        x = self.x
        f = self.f
        A = self.h.A
        b = self.h.b
        ν = self.ν

        return -concatenate([[f.gradient(x) + A.T @ ν], [A @ x - b]])
Exemplo n.º 3
0
    def b(self):
        x = self.x
        f = self.f
        A = self.h.A

        zeros_shape = A.shape[0]
        zeros = np.zeros((zeros_shape, 1))

        return -concatenate([[f.gradient(x)], [zeros]])
Exemplo n.º 4
0
    def A(self):
        A = self.h.A
        H = self.f.hessian(self.x)

        zeros_shape = A.shape[0]
        zeros = np.zeros((zeros_shape, zeros_shape))

        return concatenate([
            [H, A.T],
            [A, zeros],
        ])
Exemplo n.º 5
0
def kkt_elimination(A, b, matrix):
    """
    :param A: A da matriz KKT
    :param b: b da matriz KKT
    :param matrix: matriz Kkt
    :return:
    """
    x = matrix.x
    A = matrix.h.A  # A matriz 'A' utilizada é a matriz de restrições
    H = matrix.f.hessian(x)
    H_inv = np.linalg.inv(H)

    # Extract 'g' and 'h' from -b
    g, h = np.split(-b, [x.shape[0]])

    w = np.linalg.solve(A @ H_inv @ A.T, h - A @ H_inv @ g)
    v = np.linalg.solve(H, -(g + A.T @ w))

    return concatenate([[v], [w]])