def __set_l_sum(self, l, constraints): l_sum = 0 for i in range(self.n - 1): l_sum += l[i] with gp.SignomialsEnabled(): constraints.append((l_sum >= self.length))
def get_pattern_constraints(X, Y, var_dict=None, D_=None, D=None, d_attr=None, c1=None, c2=None): def get_r(assignments): r = 1 for attr, val in assignments: key = (attr, val, D_) r *= var_dict[key] key = (attr, val, D) r *= (1 / var_dict[key]) return r rx = get_r(X) ry = var_dict[(d_attr, D_)] / var_dict[(d_attr, D)] ry *= get_r(Y) constraints = [] with gpkit.SignomialsEnabled(): constraints.append(c1 * rx * ry - c2 * ry - rx * (ry**2) <= 1) constraints.append(-c2 * rx * ry + c1 * ry - rx * (ry**2) <= 1) return constraints
def test_persistence(self): x = gpkit.Variable("x") y = gpkit.Variable("y") ymax = gpkit.Variable("y_{max}", 0.1) with gpkit.SignomialsEnabled(): m = gpkit.Model(x, [x >= 1 - y, y <= ymax]) m.substitutions[ymax] = 0.2 self.assertAlmostEqual(m.localsolve(verbosity=0)["cost"], 0.8, 3) m = gpkit.Model(x, [x >= 1 - y, y <= ymax]) self.assertAlmostEqual(m.localsolve(verbosity=0)["cost"], 0.9, 3)
"""Adapted from t_SP in tests/t_geometric_program.py""" import gpkit # Decision variables x = gpkit.Variable('x') y = gpkit.Variable('y') # must enable signomials for subtraction with gpkit.SignomialsEnabled(): constraints = [x >= 1 - y, y <= 0.1] # create and solve the SP m = gpkit.Model(x, constraints) print m.localsolve(verbosity=0).summary() assert abs(m.solution(x) - 0.9) < 1e-6