コード例 #1
0
def test_cluster_add_remove():
    n = Node()
    n.production[RESOURCE] = lambda: 0
    c = Cluster(resource=RESOURCE)

    def not_added():
        return c.parts() == set() and n.cluster(RESOURCE) is None

    def added():
        return c.parts() == {n} and n.cluster(RESOURCE) is c

    assert not_added()
    c.add_part(n)
    assert added()
    c.add_part(n)

    c.remove_part(n)
    assert not_added()
    c.remove_part(n)
    
    n.set_cluster(c)
    assert added()
    assert_raises(fs.InsanityError, n.set_cluster, c)

    n.unset_cluster(c)
    assert not_added()
    assert_raises(fs.InsanityError, n.unset_cluster, c)
コード例 #2
0
def test_cluster_balance_constraint():
    n = Node()
    n.production[RESOURCE] = lambda: 0
    assert len(n.constraints()) == 1
    c = Cluster(n, resource=RESOURCE)
    assert len(n.constraints()) == 0
    c.remove_part(n)
    assert len(n.constraints()) == 1
コード例 #3
0
ファイル: test_cluster.py プロジェクト: plopp/friendlysam
def test_cluster_balance_constraint():
    n = Node()
    n.production[RESOURCE] = lambda idx: 0
    index = 0
    assert len(n.constraints.make(index)) == 1
    c = Cluster(n, resource=RESOURCE)
    assert len(n.constraints.make(index)) == 0
    c.remove_part(n)
    assert len(n.constraints.make(index)) == 1
コード例 #4
0
ファイル: test_cluster.py プロジェクト: plopp/friendlysam
def test_cluster_add_remove():
    n = Node()
    n.production[RESOURCE] = lambda: 0
    c = Cluster(resource=RESOURCE)

    def not_added():
        return c.children == set() and n.cluster(RESOURCE) is None

    def added():
        return c.children == {n} and n.cluster(RESOURCE) is c

    assert not_added()
    c.add_part(n)
    assert added()
    c.add_part(n)

    c.remove_part(n)
    assert not_added()
    c.remove_part(n)

    n.set_cluster(c)
    assert added()
    assert_raises(fs.InsanityError, n.set_cluster, c)

    n.unset_cluster(c)
    assert not_added()
    assert_raises(fs.InsanityError, n.unset_cluster, c)
コード例 #5
0
def test_state_vars():
    consumption = lambda t: t * 1.5

    p = Producer(name='Producer')
    c = Consumer(consumption, name='Consumer')
    cl = Cluster(p, c, resource=RESOURCE, name='Cluster')

    m = fs.models.MyopicDispatchModel(t0=0, step=3, horizon=7)
    m.add_part(cl)
    m.solver = default_solver
    m.advance()
    m.advance()
コード例 #6
0
def check_variant(variant):
    times = list(range(5))
    consumption = lambda t: t * 1.5

    p = Producer(name='Producer')
    c = Consumer(consumption, variant)
    cl = Cluster(p, c, resource=RESOURCE, name='Cluster')

    prob = fs.Problem()
    prob.add_constraints(chain(*(cl.constraints(t) for t in times)))

    prob.objective = fs.Minimize(sum(p.cost(t) for t in times))

    solution = default_solver.solve(prob)

    for t in times:
        c.activity(t).take_value(solution)
        p.activity(t).take_value(solution)

    for t in times:
        assert approx(p.production[RESOURCE](t).value, consumption(t))
        assert approx(c.consumption[RESOURCE](t).value, consumption(t))
コード例 #7
0
def check_variant(variant):
    times = list(range(5))
    consumption = lambda t: t * 1.5

    p = Producer(name='Producer')
    c = Consumer(consumption, variant)
    cl = Cluster(p, c, resource=RESOURCE, name='Cluster')

    prob = fs.Problem()
    prob.add_constraints(chain(*(cl.constraints(t) for t in times)))

    prob.objective = fs.Minimize(sum(p.cost(t) for t in times))

    solution = default_solver.solve(prob)

    for t in times:
        c.activity(t).take_value(solution)
        p.activity(t).take_value(solution)

    for t in times:
        assert approx(p.production[RESOURCE](t).value, consumption(t))
        assert approx(c.consumption[RESOURCE](t).value, consumption(t))
コード例 #8
0
def test_state_vars():
    times = list(range(1, 4))

    consumption = lambda t: t * 1.5

    p = Producer(name='Producer')
    c = Consumer(consumption, name='Consumer')
    cl = Cluster(p, c, resource=RESOURCE, name='Cluster')

    prob = fs.Problem()
    prob.add_constraints(chain(*(cl.constraints(t) for t in times)))

    prob.objective = fs.Minimize(sum(p.cost(t) for t in times))

    solution = default_solver.solve(prob)

    for t, part in product(times, cl.parts()):
        for v in part.state_variables(t):
            v.take_value(solution)

    for t in times:
        assert approx(p.production[RESOURCE](t).value, consumption(t))
        assert approx(c.consumption[RESOURCE](t).value, consumption(t))
コード例 #9
0
def test_state_vars():
    times = list(range(1,4))

    consumption = lambda t: t * 1.5

    p = Producer(name='Producer')
    c = Consumer(consumption, name='Consumer')
    cl = Cluster(p, c, resource=RESOURCE, name='Cluster')

    prob = fs.Problem()
    prob.add_constraints(chain(*(cl.constraints(t) for t in times)))

    prob.objective = fs.Minimize(sum(p.cost(t) for t in times))

    solution = default_solver.solve(prob)

    for t, part in product(times, cl.parts()):
        for v in part.state_variables(t):
            v.take_value(solution)

    for t in times:
        assert approx(p.production[RESOURCE](t).value, consumption(t))
        assert approx(c.consumption[RESOURCE](t).value, consumption(t))
コード例 #10
0
def test_cluster_insanity():
    n = Node()
    Cluster(n, resource=RESOURCE)
    Cluster(n, resource=RESOURCE)
コード例 #11
0
def non_callable_constraint():
    cl = Cluster(resource=RESOURCE)
    cl.constraints += fs.Variable() == 3