Ejemplo n.º 1
0
def sim_greedy(M, min_f, max_f, debug):
    
    samples = np.random.randint(2, size=M*(M-1)/2)
    C = rd.random_compatibities(samples, M)
    F = []
    A = np.zeros((M), dtype=int)
    
    debugf(debug,'\nCompatibity matrix = \n%s\n', C)
        
    retry = 0
    f=min_f
    
    while sum(a==0 for a in A) <> 0:
        while (f in F):
            f = np.random.randint(min_f, max_f)
        
        F.append(f)
        gd.solve(A, C, F)
        retry += 1
        debugf(debug, '\nRetry count: %s\n', retry)
        debugf(debug, 'Frequencies = %s\n', F)
        debugf(debug, 'Assignment matrix = %s\n', A)

    if (debug):
        vf.verify_compatibility(A, C)
        #gp.color_graph(C, A, F)
        #gp.heatmap(A, F)
        #plt.show()
        
    return A, C, F, 1-(len(F)/(len(A)*1.0))
Ejemplo n.º 2
0
M = 20 # total stations
# samples = np.random.randint(2, size=M*(M-1)/2)
samples = [1,0,1,1,0,1,0,1,1,1,0,0,0,1,0,0,1,0,0,1,0,1,1,1,0,0,0,1,0,0,0,0,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,0,1,0,1,0,1,1,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,1,1,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,1,0,1,1]
print samples
C = rd.random_compatibities(samples, M)
print C
#print C.transpose()
#print C-C.transpose()
F = range(1,21)
#F = [np.random.randint(100, 1000)]
A = np.zeros((M), dtype=int)

printf('Assignment matrix =\n%s\n', A)
# print 'Compataility Matrix =\n%s\n' % C

# print '### Result ####\n'
# result = gd.solve(A, C, F)

while sum(a==0 for a in A) <> 0:
    #F.append(np.random.randint(100, 1000))
    result = gd.solve(A, C, F)
    printf('\nFrequencies = %s\n', F)
    printf('Assigned frequencies = %s\n', A)

print '\n### Summary ###\n'
printf('# reused ratio = %s / %s\n', len(A) - len(F), len(A))
printf('Efficiency = %1.3f\n', len(F)/(len(A)*1.0))

vf.verify_compatibility(A, C)
# gp.color_graph(C, A, [15, 16, 17, 18, 19, 20])
# gp.heatmap(A, F)
Ejemplo n.º 3
0
retry = 0
f=0
cost=0
F=[]
extended_frequencies = np.concatenate((neighbors_frequencies, filter(lambda f: f not in thai_frequencies and f not in neighbors_frequencies, navaids_frequencies)))

while sum(a==0 for a in A) <> 0 or cost > 0:
    print('\nRetried no.: %s\n') % retry
    
    A = [int(r.frequency) for r in radios]
    
    F.append(candidates_frequencies[retry])
    #np.append(F,navaids_frequencies[retry])
    
    cost = gd.solve(A, C, F)
    retry += 1
    
    #F = np.append(F,neighbors_frequencies)
    print('Frequencies = %s\n') % F
    
    print('Cost=%s\n') % cost
    print('Assignment matrix = %s\n') % A
    
    veri = vf.verify_compatibility(A, C)
    indexes = zip(*np.where(veri < 0))
    for i in indexes:
        print '%s,%s,%s,%s,%s,%sX' % (radios[i[0]].id, radios[i[0]].ident, radios[i[1]].id, radios[i[1]].ident, calc.geo_distance(radios[i[0]].latitude, radios[i[0]].longitude, radios[i[1]].latitude, radios[i[1]].longitude), radios[i[1]].frequency)

left_frequencies = filter(lambda f: f not in A, navaids_frequencies)
print left_frequencies