Example #1
0
def bad_eq_lp_problem():
    LE_A = -1 * torch.DoubleTensor([
        [1, 0, 0, 1],  # >= 1
        [0, 1, 0, 1],  # >= 1
        [1, 0, 0, 0],
        [0, 1, 0, 0],
        [0, 0, 1, 0],
        [0, 0, 0, 1],
    ])

    LE_B = -1 * torch.DoubleTensor([1, 1, 0, 0, 0, 0])

    EQ_A = torch.DoubleTensor([
        [1, 1, 0, 0],  #==1
        [1, 1, 0, 0],  #==2
    ])

    EQ_B = torch.DoubleTensor([1, 2])

    OBJ_C = torch.DoubleTensor([2, 3, 1, 5])

    eq = LinearEqConstraints(EQ_A, EQ_B)
    le = LinearLeConstraints(LE_A, LE_B)
    obj = LinearObjective(OBJ_C)

    _vars = ["x_%s" % i for i in range(4)]
    return Problem(_vars, obj, le, eq)
Example #2
0
def easy_qp_problem():
    LE_A = -1 * torch.DoubleTensor([[1, 1, 0, 0], [0, 0, 1, 1]])
    LE_B = -1 * torch.DoubleTensor([1, 1])

    # EQ_A = -1 * torch.DoubleTensor([[0,0,0,0],
    #                            [0,0,1,1]])
    # EQ_B = -1 * torch.DoubleTensor([1,1])

    OBJ_A = torch.DoubleTensor(np.diag([1, 1, 1, 1]))
    OBJ_B = torch.DoubleTensor([1, 1, 1, 1])

    eq = None
    # eq = LinearEqConstraints(EQ_A,EQ_B)
    le = LinearLeConstraints(LE_A, LE_B)
    obj = QuadraticObjective(OBJ_A, OBJ_B)

    _vars = ["x_%s" % i for i in range(4)]
    x = torch.ones(4).double()
    print("obj:", obj(x))

    return Problem(_vars, obj, le, eq)