Esempio n. 1
0
    g.add_node(2, pos='"2,0!"', demand=0)
    g.add_node(4, pos='"4,2!"', demand=0)
    g.add_node(6, pos='"6,4!"', demand=0)

    g.add_node(5, pos='"6,0!"', demand=0)
    g.add_node(7, pos='"8,2!"', demand=-4, label='(1, -4)')
    g.add_edge(1, 3, cost=0, capacity=2, label='(0, 2)')
    g.add_edge(1, 2, cost=0, capacity=2, label='(0, 2)')
    g.add_edge(3, 4, cost=1, capacity=1, label='(1, 1)')
    g.add_edge(3, 6, cost=2, capacity=2, label='(2, 2)')
    g.add_edge(2, 4, cost=3, capacity=1, label='(3, 1)')
    g.add_edge(2, 5, cost=5, capacity=1, label='(5, 1)')
    g.add_edge(4, 6, cost=1, capacity=3, label='(1, 3)')
    g.add_edge(4, 7, cost=4, capacity=2, label='(4, 2)')
    g.add_edge(4, 5, cost=1, capacity=1, label='(3, 1)')
    g.add_edge(6, 7, cost=0, capacity=2, label='(0, 2)')
    g.add_edge(5, 7, cost=0, capacity=2, label='(0, 2)')
    g.set_display_mode('pygame')
    g.display()

    #    g.cycle_canceling('pygame')
    g.min_cost_flow(algo='cycle_canceling')
    #    g.max_flow(1, 7)

    nl = list(int(n) for n in g.get_node_list())
    nl.sort()
    for n in nl:
        for m in nl:
            if g.check_edge(n, m):
                print(n, m, g.get_edge_attr(n, m, 'flow'))
Esempio n. 2
0
        T._incumbent_value = sum(IS)
        print 'Heuristic solution value: ', T._incumbent_value

        T.VARIABLES = []
        T.CONSTRAINTS = []
        T.OBJ = {}
        T.RHS = {}
        T.MAT = {}
        T.branch_on_fractional = True
        T.branch_strategy = b_rule
        for i in nodes:
            T.VARIABLES.append(i)
            T.OBJ[i] = 1
            for j in nodes:
                if G.check_edge(i, j):
                    constraint_label = 'C_' + str(i) + '_' + str(j)
                    T.CONSTRAINTS.append(constraint_label)
                    for k in nodes:
                        T.MAT.update([((constraint_label, k), 0)
                                      for k in nodes])
                    T.MAT[(constraint_label, i)] = 1
                    T.MAT[(constraint_label, j)] = 1
                    T.RHS[constraint_label] = 1

        opt, optval, node_count = T.BranchAndBound()

        for i in opt:
            if opt[i] >= 0.5:
                G.set_node_attr(i, 'style', 'filled')
                G.set_node_attr(i, 'fillcolor', 'red')
Esempio n. 3
0
    g.add_node(2,pos='"2,0!"', demand=0)
    g.add_node(4,pos='"4,2!"', demand=0)
    g.add_node(6,pos='"6,4!"', demand=0)

    g.add_node(5,pos='"6,0!"', demand=0)
    g.add_node(7,pos='"8,2!"', demand=-4, label='(1, -4)')
    g.add_edge(1, 3, cost=0, capacity=2, label='(0, 2)')
    g.add_edge(1, 2, cost=0, capacity=2, label='(0, 2)')
    g.add_edge(3, 4, cost=1, capacity=1, label='(1, 1)')
    g.add_edge(3, 6, cost=2, capacity=2, label='(2, 2)')
    g.add_edge(2, 4, cost=3, capacity=1, label='(3, 1)')
    g.add_edge(2, 5, cost=5, capacity=1, label='(5, 1)')
    g.add_edge(4, 6, cost=1, capacity=3, label='(1, 3)')
    g.add_edge(4, 7, cost=4, capacity=2, label='(4, 2)')
    g.add_edge(4, 5, cost=1, capacity=1, label='(3, 1)')
    g.add_edge(6, 7, cost=0, capacity=2, label='(0, 2)')
    g.add_edge(5, 7, cost=0, capacity=2, label='(0, 2)')
    g.set_display_mode('pygame')
    g.display()
    
#    g.cycle_canceling('pygame')
    g.min_cost_flow(algo='cycle_canceling')
#    g.max_flow(1, 7)

    nl = list(int(n) for n in g.get_node_list())
    nl.sort()
    for n in nl:
        for m in nl:
            if g.check_edge(n, m):
                print n, m, g.get_edge_attr(n, m, 'flow')