F

#### Francesc Segura

values at python.

I get the following error:

Traceback (most recent call last):

File "C:\edge-bc (2).py", line 168, in <module>

if (costGG <= cost + T0):

TypeError: unsupported operand type(s) for +: 'float' and 'tuple'

I'm working with networkx and my program is this one:

import networkx as NX

import pylab as P

from math import exp, log

import random

try:

import matplotlib.pyplot as plt

except:

raise

##N=27

N=30

ITERATIONS = 60

T0 = 0.5

RO = 0.99

NK = 20

def costG(G):

bc = NX.edge_betweenness_centrality(G,normalized=True)

edges = NX.edges(G)

for i in range(len(edges)):

total = 0

cost = 0

factor = 1

liedges = list(edges

*)*

linode1 = list(liedges[0])

linode2 = list(liedges[1])

distance = (((linode2[0]-linode1[0])%N)^2)+(((linode2[1]-

linode1[1])%N)^2)

edgecentrality = bc[edges

linode1 = list(liedges[0])

linode2 = list(liedges[1])

distance = (((linode2[0]-linode1[0])%N)^2)+(((linode2[1]-

linode1[1])%N)^2)

edgecentrality = bc[edges

*]*

factor = (distance-19790)*(-0.000055586)

cost = distance*edgecentrality*factor

total = total + cost

return(total)

def avedistance(G):

return (AvgDist)

def costGeasy(G):

bc = NX.edge_betweenness_centrality(G,normalized=True)

total = 0

for i in range(len(bc)):

total=total+bc.values()factor = (distance-19790)*(-0.000055586)

cost = distance*edgecentrality*factor

total = total + cost

return(total)

def avedistance(G):

return (AvgDist)

def costGeasy(G):

bc = NX.edge_betweenness_centrality(G,normalized=True)

total = 0

for i in range(len(bc)):

total=total+bc.values()

return (total)

G = NX.grid_2d_graph(N,N,True)

for i in range(N):

for j in range(N):

G.add_edge((i,j),((i+1) % N ,(j+1) % N))

G.add_edge((i,j),((i-1) % N ,(j+1) % N))

NODES=NX.number_of_nodes(G)

nod=NX.nodes(G)

EDGES=NX.number_of_edges(G)

edg=NX.edges(G)

pos={}

for i in range(NODES):

pos[nodreturn (total)

G = NX.grid_2d_graph(N,N,True)

for i in range(N):

for j in range(N):

G.add_edge((i,j),((i+1) % N ,(j+1) % N))

G.add_edge((i,j),((i-1) % N ,(j+1) % N))

NODES=NX.number_of_nodes(G)

nod=NX.nodes(G)

EDGES=NX.number_of_edges(G)

edg=NX.edges(G)

pos={}

for i in range(NODES):

pos[nod

*]=(nod**[0]/(N*1.0),nod**[1]/(N*1.0))*

NX.draw(G,pos,node_color='r',node_size=20,with_labels=False,width=1)

plt.title("Inicial graph, Toroidal 27x27, degree 8")

plt.savefig("initial_grid_malla.png")

plt.show()

pos=NX.spring_layout(G,iterations=100)

NX.draw(G,pos,node_color='r',node_size=20,with_labels=False,width=1)

plt.title("Inicial graph, Toroidal 27x27, degree 8")

plt.savefig("initial_grid_tor.png")

plt.show()

initGr = G

best_graph = G

best_cost = costG(G)

average_distance = avedistance(G)

initCost = best_cost

initGHist = NX.degree_histogram(G)

##print NX.info(initGr)

##print 'Diameter = %f ' % (NX.diameter(G))

##print 'Avg Clust Coeff. NetworkX = %-6.4f ' %

(NX.average_clustering(G))

##print 'Avg Dist. NetworkX = %-6.4f ' % (average_distance)

##print 'Distribucio de Graus'

##print initGHist

##print 'Cost inicial'

##print initCost

T0 = initCost*0,1

for y in range(NK):

for x in range(ITERATIONS):

cost = costG(G)

if (cost < (best_cost)):

best_graph = G

best_cost = cost

GG = G

u = random.randint(0,NODES-1)

while GG.degree(nodNX.draw(G,pos,node_color='r',node_size=20,with_labels=False,width=1)

plt.title("Inicial graph, Toroidal 27x27, degree 8")

plt.savefig("initial_grid_malla.png")

plt.show()

pos=NX.spring_layout(G,iterations=100)

NX.draw(G,pos,node_color='r',node_size=20,with_labels=False,width=1)

plt.title("Inicial graph, Toroidal 27x27, degree 8")

plt.savefig("initial_grid_tor.png")

plt.show()

initGr = G

best_graph = G

best_cost = costG(G)

average_distance = avedistance(G)

initCost = best_cost

initGHist = NX.degree_histogram(G)

##print NX.info(initGr)

##print 'Diameter = %f ' % (NX.diameter(G))

##print 'Avg Clust Coeff. NetworkX = %-6.4f ' %

(NX.average_clustering(G))

##print 'Avg Dist. NetworkX = %-6.4f ' % (average_distance)

##print 'Distribucio de Graus'

##print initGHist

##print 'Cost inicial'

##print initCost

T0 = initCost*0,1

for y in range(NK):

for x in range(ITERATIONS):

cost = costG(G)

if (cost < (best_cost)):

best_graph = G

best_cost = cost

GG = G

u = random.randint(0,NODES-1)

while GG.degree(nod

__) <= 1:__

u = random.randint(0,NODES-1)

v = random.randint(0,GG.degree(nodu = random.randint(0,NODES-1)

v = random.randint(0,GG.degree(nod

__)-1)__

GG.remove_edge(nodGG.remove_edge(nod

__,GG[nod____].keys()[v])__

a = random.randint(0,NODES-1)

b = random.randint(0,NODES-1)

adj=G.adjacency_list()

while ((noda = random.randint(0,NODES-1)

b = random.randint(0,NODES-1)

adj=G.adjacency_list()

while ((nod

**in adj[a]) or (b == a)):**

a = random.randint(0,NODES-1)

b = random.randint(0,NODES-1)

GG.add_edge(nod[a],noda = random.randint(0,NODES-1)

b = random.randint(0,NODES-1)

GG.add_edge(nod[a],nod

**)**

while (NX.is_connected(GG) == 0):

GG = G

u = random.randint(0,NODES-1)

while GG.degree(nodwhile (NX.is_connected(GG) == 0):

GG = G

u = random.randint(0,NODES-1)

while GG.degree(nod

__) <= 1:__

u = random.randint(0,NODES-1)

v = random.randint(0,GG.degree(nodu = random.randint(0,NODES-1)

v = random.randint(0,GG.degree(nod

__)-1)__

GG.remove_edge(nodGG.remove_edge(nod

__,GG[nod____].keys()[v])__

a = random.randint(0,NODES-1)

b = random.randint(0,NODES-1)

adj=GG.adjacency_list()

while ((noda = random.randint(0,NODES-1)

b = random.randint(0,NODES-1)

adj=GG.adjacency_list()

while ((nod

**in adj[a]) or (b == a)):**

a = random.randint(0,NODES-1)

b = random.randint(0,NODES-1)

GG.add_edge(nod[a],noda = random.randint(0,NODES-1)

b = random.randint(0,NODES-1)

GG.add_edge(nod[a],nod

**)**

costGG = costG(GG)

if (costGG <= cost):

G = GG

else:

if (costGG <= cost + T0):

G = GG

T0 = T0 * RO

print 'IT %d' % y

print 'BEST %f ' % best_cost

best_graph = G

print NX.info(best_graph)

print 'Diameter = %f ' % (NX.diameter(best_graph))

print 'Avg Clust Coeff. NetworkX = %-6.4f ' %

(NX.average_clustering(best_graph))

average_distance = avedistance(best_graph)

print 'Avg Dist. NetworkX = %-6.4f ' % (average_distance)

print 'Distribucio de Graus'

print NX.degree_histogram(best_graph)

print 'Millor Cost'

print best_cost

NX.write_edgelist(best_graph,'optimal-graph.dat')

pos={}

for i in range(NODES):

pos[nodcostGG = costG(GG)

if (costGG <= cost):

G = GG

else:

if (costGG <= cost + T0):

G = GG

T0 = T0 * RO

print 'IT %d' % y

print 'BEST %f ' % best_cost

best_graph = G

print NX.info(best_graph)

print 'Diameter = %f ' % (NX.diameter(best_graph))

print 'Avg Clust Coeff. NetworkX = %-6.4f ' %

(NX.average_clustering(best_graph))

average_distance = avedistance(best_graph)

print 'Avg Dist. NetworkX = %-6.4f ' % (average_distance)

print 'Distribucio de Graus'

print NX.degree_histogram(best_graph)

print 'Millor Cost'

print best_cost

NX.write_edgelist(best_graph,'optimal-graph.dat')

pos={}

for i in range(NODES):

pos[nod

*]=(nod**[0]/(N*1.0),nod**[1]/(N*1.0))*

NX.draw(best_graph,pos,node_color='r',node_size=20,with_labels=False,width=1)

plt.title("Final graph, Toroidal 27x27, degree 8")

plt.savefig("final_grid_malla.png")

plt.show()

pos=NX.spring_layout(G,iterations=100)

NX.draw(best_graph,pos,node_color='r',node_size=20,with_labels=False,width=1)

plt.title("Final graph, Toroidal 27x27, degree 8")

plt.savefig("final_grid_tor.png")

plt.show()NX.draw(best_graph,pos,node_color='r',node_size=20,with_labels=False,width=1)

plt.title("Final graph, Toroidal 27x27, degree 8")

plt.savefig("final_grid_malla.png")

plt.show()

pos=NX.spring_layout(G,iterations=100)

NX.draw(best_graph,pos,node_color='r',node_size=20,with_labels=False,width=1)

plt.title("Final graph, Toroidal 27x27, degree 8")

plt.savefig("final_grid_tor.png")

plt.show()