Esempio n. 1
0
    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
Esempio n. 3
0
    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)
Esempio n. 4
0
"""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