def solveforlocation(): sensorloc_array = create_sensorlocarray(ndim, no_sensors) target_loc = create_target(ndim) curr_arena = ar.arena(no_sensors, ndim, sensorloc_array,target_loc) # curr_arena = localize(no_sensors,np.load('psosolsens.npy')); # curr_arena = localize(no_sensors,np.load('gdssolsens.npy')); # curr_arena = localize(no_sensors,np.load('fr.npy')); # indx = 0; # lst_score = float("inf"); # pos_tracker = np.empty(np.shape(pso.current_pos)); # spread = 0; # centroid = np.empty(pso.no_dim); ExampleSolSpacePoint = np.random.random((1, ndim)) iterindx = 1 gdsolver = gds.GDS(curr_arena.get_score, curr_arena.gradient_score, ExampleSolSpacePoint) psosolver = psos.PSO(curr_arena.get_score, 10, ndim, 1, 1.5, 1, ExampleSolSpacePoint, [-10 * np.ones(ndim), 10 * np.ones(ndim)]) psodata = stlog.statelogger('localize_psodata', 'localize_psolog', np.vstack((psosolver.current_pos, curr_arena.sensor_loc, curr_arena.target_loc)), psosolver.centroid, psosolver.spread, psosolver.globalmin) # Plotter is just expecting these. # gddata = stlog.statelogger('gddata2', 'gdslog',np.vstack((gdsolver.new_point, curr_arena.sensor_loc, curr_arena.target_loc)), # gdsolver.new_point, 0,gdsolver.curr_arena.get_score(gdsolver.new_point)) #Combined position data of moving point sensors and sensor target, i.e the object to be localized, in the first vstack array. # Dummy gdsolver.new_point to replace centroid that the plotter is expecting in the second term. indx = 0 # while np.abs(np.amin(pso.curr_score)-lst_score)>.001: point = ExampleSolSpacePoint while indx < 300: psosolver.update_pos() psosolver.update_currscores() psosolver.update_selfmin() psosolver.update_globalmin() psosolver.update_velocities() (centroid, spread) = psosolver.calc_swarm_props() print('\n \n \n \n \n') print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \n') print("The running index is " + str(indx) + "\n") print(str(psosolver.globalminlocation)) indx += 1 if psosolver.no_particles < 20: psosolver.report() print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \n') curr_score = curr_arena.get_score(point) point = gdsolver.get_descented_point(point) descented_score = curr_arena.get_score(point) deltascore = descented_score - curr_score curr_score = descented_score gdsolver.report() psodata.add_state(np.vstack((psosolver.current_pos, curr_arena.sensor_loc, curr_arena.target_loc)), psosolver.centroid, psosolver.spread, psosolver.globalmin)
distancevector = np.array(buff) max_distance = np.max(distancevector) roadlength = 21.4; # targetloc = create_target() sensorloc = create_sensorlocarray(2,3) targetloc = create_target() curr_arena = arena.arena(3, 2, sensorloc, targetloc); def scorefunc_spline(dist): point =getpoint_spline(dist,tck) score = curr_arena.get_score(point) return score def convertpsotopos(psoobject): l = [] for pos in psoobject.current_pos: l.append(np.array(getpoint_spline(pos, tck) )) print (np.shape(np.array(l))) return np.vstack(l)
def solveforlocation(): sensorloc_array = create_sensorlocarray(ndim, no_sensors) target_loc = create_target(ndim) curr_arena = ar.arena(no_sensors, ndim, sensorloc_array, target_loc) # curr_arena = localize(no_sensors,np.load('psosolsens.npy')); # curr_arena = localize(no_sensors,np.load('gdssolsens.npy')); # curr_arena = localize(no_sensors,np.load('fr.npy')); # indx = 0; # lst_score = float("inf"); # pos_tracker = np.empty(np.shape(pso.current_pos)); # spread = 0; # centroid = np.empty(pso.no_dim); ExampleSolSpacePoint = np.random.random((1, ndim)) iterindx = 1 gdsolver = gds.GDS(curr_arena.get_score, curr_arena.gradient_score, ExampleSolSpacePoint) psosolver = psos.PSO(curr_arena.get_score, 10, ndim, 1, 1.5, 1, ExampleSolSpacePoint, [-10 * np.ones(ndim), 10 * np.ones(ndim)]) psodata = stlog.statelogger( 'localize_psodata', 'localize_psolog', np.vstack( (psosolver.current_pos, curr_arena.sensor_loc, curr_arena.target_loc)), psosolver.centroid, psosolver.spread, psosolver.globalmin) # Plotter is just expecting these. # gddata = stlog.statelogger('gddata2', 'gdslog',np.vstack((gdsolver.new_point, curr_arena.sensor_loc, curr_arena.target_loc)), # gdsolver.new_point, 0,gdsolver.curr_arena.get_score(gdsolver.new_point)) #Combined position data of moving point sensors and sensor target, i.e the object to be localized, in the first vstack array. # Dummy gdsolver.new_point to replace centroid that the plotter is expecting in the second term. indx = 0 # while np.abs(np.amin(pso.curr_score)-lst_score)>.001: point = ExampleSolSpacePoint while indx < 300: psosolver.update_pos() psosolver.update_currscores() psosolver.update_selfmin() psosolver.update_globalmin() psosolver.update_velocities() (centroid, spread) = psosolver.calc_swarm_props() print('\n \n \n \n \n') print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \n') print("The running index is " + str(indx) + "\n") print(str(psosolver.globalminlocation)) indx += 1 if psosolver.no_particles < 20: psosolver.report() print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \n') curr_score = curr_arena.get_score(point) point = gdsolver.get_descented_point(point) descented_score = curr_arena.get_score(point) deltascore = descented_score - curr_score curr_score = descented_score gdsolver.report() psodata.add_state( np.vstack((psosolver.current_pos, curr_arena.sensor_loc, curr_arena.target_loc)), psosolver.centroid, psosolver.spread, psosolver.globalmin)
(terrain_x, terrain_y, terrain_z) = np.load('simulationdata/visualize/subterrain.npy') (road_xcords, road_ycords) = np.load('simulationdata/visualize/road_cords.npy') (road_x, road_y) = (terrain_x[road_ycords, road_xcords], terrain_y[road_ycords, road_xcords]) r = terrain.road((road_xcords, road_ycords), (terrain_x, terrain_y, terrain_z)) print(r.maxdistance) # r.plotroad() sensor_loc = [[39, 82], [148, 158], [214, 57]] sensor_real_loc = np.array( [[r.x[ele[0], ele[1]], r.y[ele[0], ele[1]], r.z[ele[0], ele[1]]] for ele in sensor_loc]) target_dw = [600, 3] target_real_loc = r.dwtoxyz(target_dw[0], target_dw[1]) ar = arena.arena(3, 3, sensor_real_loc, target_real_loc) ssb = np.array([[10, -3], [r.maxdistance - 10, 3]]) pslr = psos.PSO(scorefunc, 2, searchspaceboundaries=ssb) pslr.solve_iters(10, verbose=True, out=True) sol = [] for i in range(10): sol.append(pslr.solve_convergence(0.001, checkiters=20, out=True)) sorted_sols = sorted(sol, key=lambda solution: solution['extremum value'])
def create_target(): targetdist = 5 return getpoint_spline(targetdist,tck) roadlength = 21.4; # targetloc = create_target() sensorloc = create_sensorlocarray(2, 3) targetloc = create_target() curr_arena = arena.arena(3, 2, sensorloc, targetloc); road_xpoints = np.linspace(0,10,1000) road_ypoints = interpolate.splev(road_xpoints,tck,der=0) plt.plot(road_xpoints,road_ypoints) plt.ion() plt.show() def scorefunc_spline(dist): point =getpoint_spline(dist,tck) score = curr_arena.get_score(point) return score # def gradscorefunc(dist): # point = getpoint(dist, distancevector, road_points) # dist_left = (np.roll(road_points==point,1))
# pdb.set_trace() (terrain_x,terrain_y,terrain_z) = np.load('simulationdata/visualize/subterrain.npy') (road_xcords,road_ycords) = np.load('simulationdata/visualize/road_cords.npy') (road_x,road_y) = (terrain_x[road_ycords,road_xcords],terrain_y[road_ycords,road_xcords]) r = terrain.road((road_xcords,road_ycords),(terrain_x,terrain_y,terrain_z)) print (r.maxdistance) # r.plotroad() sensor_loc = [[39,82],[148,158],[214,57]] sensor_real_loc = np.array([[r.x[ele[0],ele[1]],r.y[ele[0],ele[1]],r.z[ele[0],ele[1]]] for ele in sensor_loc]) target_dw = [600, 3] target_real_loc = r.dwtoxyz(target_dw[0],target_dw[1]) ar = arena.arena(3,3,sensor_real_loc,target_real_loc) ssb = np.array([[10,-3],[r.maxdistance-10,3]]) pslr = psos.PSO(scorefunc,2,searchspaceboundaries=ssb) pslr.solve_iters(10, verbose=True, out=True) sol = [] for i in range(10): sol.append(pslr.solve_convergence(0.001,checkiters=20,out=True)) sorted_sols = sorted(sol, key=lambda solution: solution['extremum value'])
# g = grid_matrix.flatten() g[[np.random.choice(np.arange(100), 83, replace=False)]] = 0 grid_matrix = g.reshape((10, 10)) grid_matrix[3, 4] = 0 grid_matrix[5, 5] = 0 grid_matrix[6, 7] = 0 grid_matrix[7, 7] = 0 np.save('grid.npy', grid_matrix) grid_matrix = np.load('grid.npy') grid_matrix /= 2.0 g2 = copy.deepcopy(grid_matrix) are = arena(grid_matrix, False) # are = arena(grid_matrix,True) a1 = Agent(0.42, .46, .25, 0, np.array([3, 4]), are) a1.load = False # a2 = Agent(0.2,3,4,3,np.array([5,5]),2,are) # a2.load = True a3 = Agent(.49, .2, .2, 2, np.array([6, 7]), are) a3.load = False a2 = Agent(.3, .25, .3, 0, np.array([7, 7]), are) a2.load = False # are.add_agents([a4,a2,a3,a1])