def test_simple_sage_1(self): """ Solve a simple SAGE relaxation for a signomial minimization problem. Do this without resorting to "Signomial" objects. """ alpha = np.array([[0, 0], [1, 0], [0, 1], [1, 1], [0.5, 0], [0, 0.5]]) gamma = cl.Variable(shape=(), name='gamma') c = cl.Expression([0 - gamma, 3, 2, 1, -4, -2]) expected_val = -1.8333331773244161 # with presolve cl.presolve_trivial_age_cones(True) con = cl.PrimalSageCone(c, alpha, None, 'test_con_name') obj = gamma prob = Problem(cl.MAX, obj, [con]) status, val = prob.solve(solver='ECOS', verbose=False) assert abs(val - expected_val) < 1e-6 v = con.violation() assert v < 1e-6 # without presolve cl.presolve_trivial_age_cones(False) con = cl.PrimalSageCone(c, alpha, None, 'test_con_name') obj = gamma prob = Problem(cl.MAX, obj, [con]) status, val = prob.solve(solver='ECOS', verbose=False) assert abs(val - expected_val) < 1e-6 v = con.violation() assert v < 1e-6
def primal_sage_cone(sig, name, X, expcovers=None): con = cl.PrimalSageCone(sig.c, sig.alpha, X, name, covers=expcovers) return con