On Sunday, August 14, 2016 at 3:49:03 PM UTC+1, aida wrote:
>
> Hello!
> Does anybody sees where is the probleme with this code:
>
> # Weights w and parameter B are given
> def MinDiameterSpanningSubgraph(G, B):
>     
>     
>     # ILP returns minimum diameter in a spanning subgraph
>     I = MixedIntegerLinearProgram(maximization = False)
>     # This part tells us if the edge uv is in subgraph G'
>     x = I.new_variable(binary = True)
>     # y[uv,ij] = 1,if the edge ij is on path from u to v
>     y = I.new_variable(binary = True)
>     # b[uv,k] = 1 if k is in the path from u to v 
>     b = I.new_variable(binary = True)
>     
>     d = I.new_variable()
>     
>     I.set_objective(d[0])
>     
>     # Edge uv is labeled with Set(  [u,v]) if u and v are adjacent
>     I.add_constraint( sum( x[ Set([u,v]) ]* w for u,v,w in G.edges()) <= B)
>     
>     for u,v in Combinations(G,2):
>         
>         for i,j in G.edges(labels=false):
>             I.add_constraint( y[ (Set([u,v]), Set([i,j])) ] <= x[ 
> Set([i,j]) ])
>             
>         
>         # Sum of the the adjacent vertexes to u = u', that are on the path 
> to v equals 1
>         I.add_constraint( sum (y[ ( Set([u,v]), Set([u,j])) ] for j in 
> G[u]) == 1)
>         # Sum of the the adjacent vertexes to v =v', that are on the path 
> to u equals 1
>         I.add_constraint( sum (y[ ( Set([u,v]), Set([v,j])) ] for j in 
> G[v]) == 1)
>         
>         for k in set(G) - set([u,v]):
>             # If vertex is on the path from u to v, the number of edges 
> from the vertex has to be 2, otherwise is 0 and it means the vertex is not 
> on the path
>             I.add_constraint ( sum( y[ (Set([u,v]), Set([k,l]) )] for l in 
> G[k]) == 2*b[Set([u,v]),k])
>         # d is the longest distance in graph
>         I.add_constraint( d[0] >= sum( y[(Set([u,v]), Set([i,j]))] for i,j 
> in G.edges(labels=false)) )
>         
>     return I,x
>
> #za G(n,r)
> for k in [4]:
>     number = 2^k
>     data = 'points-'+str(number)+'.txt'
>     for r in [0.7]:
>         G = Graph()
>         for line in open(data):
>             x,y = line.split(' ')
>             G.add_vertex( (float(x), float(y)) )
>         for x,y in Combinations(G, 2):
>             if sqrt ( (x[0]-y[0])^2 + (x[1]-y[1])^2) <= r:
>                 G.add_edge(x,y)
>         print G
>         P=MinDiameterSpanningSubgraph(G, 0.8 * len(G.edges()))
>         print 'Pisem za k in r', k , r
>         P.write_lp('MinDiameterSpanningSubgraph-' + str(number) + '-' 
> +str(r) + '-G(n,r)')
>
> I get the same error for every k and r I try.
>
It would help if you included that error message...
 

> Thank you for your help!
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to