range_lambda = np.array([0.001, 0.5, 1.0, 2.0, 4.0]) optimize_t = [True, True, True, True, True] num_sample_iter = 5 # -----------------------------------------------------------------------------# # initialize distributions # generate random robot species with fixed diversity if not load_data: rk = 0 print 'Computing Species-Trait matrix' while rk != desired_rank: species_traits, rk, s = generate_Q(num_species, num_traits) else: species_traits = pickle.load(open(load_prefix+"species_traits.p", "rb")) print species_traits random_transition = random_transition_matrix(num_nodes, max_rate/2) # Divide max_rate by 2 for the random matrix to give some slack. print 'Getting high enough starting error...' sys.stdout.flush() ratio_init = 0.0 while ratio_init < 0.25 and not load_data: # sample initial print ratio_init deploy_robots_init = np.random.randint(0, 100, size=(num_nodes, num_species))
num_iter = 1 QQ = np.zeros((num_traits*num_nodes+num_species, num_species*num_nodes)) QQ_rks = np.zeros((num_species,num_iter)) Q_rks = np.zeros((num_species,num_iter)) print "num rows: ", QQ.shape[0] print "num cols: ", QQ.shape[1] for it in range(num_iter): print it for ui in range(1,num_species+1): rk = 0 sys.stdout.flush() while rk!=ui: Q, rk, s = generate_Q(num_species, ui) #print Q # generate QQ QQ = np.zeros((ui*num_nodes+num_species, num_species*num_nodes)) QQ[0:ui*num_nodes,:] = sp.linalg.block_diag(*([Q.T]*num_nodes)) QQ[ui*num_nodes:,:] = np.concatenate([np.identity(num_species)]*num_nodes,axis=1) rk_QQ = np.linalg.matrix_rank(QQ) ind = ui-1 Q_rks[ind,it]= rk QQ_rks[ind,it] = rk_QQ coef = QQ_rks / Q_rks ind = 0