Ejemplo n.º 1
0
def simulate():
	random.seed(1234)
	#num_neighbors_options = [3, 10, 20]
	num_neighbors_options = [3, 10, 20]
	# reverse order because of plot_error_history
	#num_iterations_options = [1000, 200, 20]
	num_iterations_options = [1000]
	runs_per_config = 3

	total_runs = len(num_neighbors_options) * len(num_iterations_options) * runs_per_config
	runs_done = 0
	rerr = [None]*(len(num_neighbors_options)*len(num_iterations_options))
	error_history = [None]*(len(num_neighbors_options)*len(num_iterations_options))
	conf = [None]*(len(num_neighbors_options)*len(num_iterations_options))
	curr_conf = 0
	move_length_history = [None]*(len(num_neighbors_options)*len(num_iterations_options))

	for num_neighbors in num_neighbors_options:
		for num_iterations in num_iterations_options:
			c = Configuration(num_nodes, num_neighbors, num_iterations)

			conf_rerr = [0]*num_nodes
			conf_error_history = [0]*num_iterations
			conf_move_len = [0]*num_iterations

			conf[curr_conf] = "K: {}, i: {}".format(num_neighbors, num_iterations)
			update_runs_completed(runs_done, total_runs)
			for run in xrange(runs_per_config):
				v = Vivaldi(init_graph, c)
				v.run()
				predicted = v.getRTTGraph()
				temp_rerr = v.getRelativeError(predicted)

				listadd(conf_rerr, temp_rerr)
				listadd(conf_error_history, v.error_history)
				listadd(conf_move_len, v.move_len_history)

				runs_done += 1
				update_runs_completed(runs_done, total_runs)

			listdiv(conf_rerr, runs_per_config)
			listdiv(conf_error_history, runs_per_config)
			listdiv(conf_move_len, runs_per_config)

			rerr[curr_conf] = conf_rerr
			error_history[curr_conf] = conf_error_history
			move_length_history[curr_conf] = conf_move_len

			curr_conf += 1

	finish_runs_completed(runs_per_config)
	return {
		'rerr' : rerr,
		'error_history': error_history,
		'move_length_history': move_length_history
	}, conf
Ejemplo n.º 2
0
    infile.close()
    
    # These parameters are part of the Configuration.
    # Modify them according to your need.
    num_neighbors = 20
    num_iterations = 200

    # build a configuration and load the matrix into the graph
    c = Configuration(num_nodes, num_neighbors, num_iterations)
    init_graph = buildgraph(rows)

    print "Running Vivaldi on a %d size matrix" % num_nodes
    print "Num neighbors = %d " % num_neighbors 
    print "Num iterations = %d " % num_iterations
    
    v = Vivaldi(init_graph, c)

    v.run()
    
    # get predicted graph
    predicted = v.getRTTGraph()
    # get relative errors (one value per node)
    rerr = v.getRelativeError(predicted)
    
    # average of node movements
    average = sum(v.movements) / len(v.movements)
    # variance of node movements
    variance = sum((average - value) ** 2 for value in v.movements) / len(v.movements)
    
    print "Position variation:"
    print "Maximum: %.2f"%max(v.movements)
Ejemplo n.º 3
0
	num_neighbors  = 10
	num_iterations = 200
	num_dimension = 3
	
	# build a configuration and load the matrix into the graph
	c = Configuration(num_nodes, num_neighbors, num_iterations, d=num_dimension)
	init_graph = buildgraph(rows)

	print "Running Vivaldi on a %d size matrix" % num_nodes
	print "Num dimensions = %d " % c.num_dimension
	print "Num neighbors = %d " % num_neighbors 
	print "Num iterations = %d " % num_iterations
	
	# run vivaldi: here, only the CDF of the relative error is retrieved. 
	# Modify to retrieve what's requested.
	v = Vivaldi(init_graph, c)
	v.run()

	predicted = v.getRTTGraph()
	rerr = v.getRelativeError(predicted)
	table([100*x for x in rerr], "RELATIVE ERROR (%)")
	# print predicted
	# print rerr

	# for i in v.positions:
	# 	print "%4d %4d" % (int(i[0]), int(i[1]))

	# Example (using pylab plotting function):
	# x = [i[0] for i in v.positions]
	# y = [i[1] for i in v.positions]