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