def get_fitness( self ): if ( self._fitness != -1 ): return self._fitness else: GeneticCode.surface.fill( (0,0,0) ) self.draw_onto_surface( GeneticCode.surface ) pixelArray = convertToPixelArray( GeneticCode.surface ) euclideanDist = euclideanDistance( pixelArray , IMG_PIXEL_ARRAY ) self._fitness = -(log10( euclideanDist ) - log10(norm( pixelArray ) + IMG_PIXEL_ARRAY_NORM ) ) return self._fitness
def get_fitness(self): if (self._fitness != -1): return self._fitness else: GeneticCode.surface.fill((0, 0, 0)) self.draw_onto_surface(GeneticCode.surface) pixelArray = convertToPixelArray(GeneticCode.surface) euclideanDist = euclideanDistance(pixelArray, IMG_PIXEL_ARRAY) self._fitness = -(log10(euclideanDist) - log10(norm(pixelArray) + IMG_PIXEL_ARRAY_NORM)) return self._fitness
def determine_dir(self): v2center = self.vect_to_target(self.position) d2center = norm(v2center) ennemy_velocity = 1.3 * norm( self._target[2:]) # Permet d'anticiper jusqu'à 30% de la vitesse max adverse connue self.target_max_known_speed = max(self.target_max_known_speed, ennemy_velocity) intercept_range_self = d2center * Jog.MAX_WHEEL_SPEED / self.target_max_known_speed v2prerob = self.allies[0] - self.position d2prerob = norm(v2prerob) intercept_range_pre = d2prerob * Jog.MAX_WHEEL_SPEED / self.target_max_known_speed v2postrob = self.allies[1] - self.position d2postrob = norm(v2postrob) intercept_range_post = d2postrob * Jog.MAX_WHEEL_SPEED / self.target_max_known_speed p = d2prerob - intercept_range_pre - intercept_range_self q = d2postrob - intercept_range_post - intercept_range_self targ_dir = [0, 0] # algorithmes de regulation des intercepteurs autour de l'ennemi if (p < -Jog.SAFETY_MARGIN) and (q < -Jog.SAFETY_MARGIN): targ_dir = v2center / d2center elif p <= q and ((q > - Jog.SAFETY_MARGIN) != (p > -Jog.SAFETY_MARGIN)): targ_dir = v2postrob / d2postrob elif p > q and ((q > - Jog.SAFETY_MARGIN) != (p > -Jog.SAFETY_MARGIN)): targ_dir = v2prerob / d2prerob else: if norm(self.vect_to_target(self.allies[1])) > d2center: targ_dir = v2postrob / d2postrob if norm(self.vect_to_target(self.allies[0])) < d2center: targ_dir = v2prerob / d2prerob return [Jog.NORMAL_SPEED, atan2(targ_dir[1], targ_dir[0])]
def bhattacharyya(x, y, Sx, Sy, K_factor=5): BIG_L = TOM_SAPS.BIG_L (_, m) = x.shape (_, n) = y.shape M = np.zeros((m, n)) dist = M.copy() S = (Sx + Sy) / 2.0 Si = np.linalg.inv(S) lnS = 0.5 * log( np.linalg.det(S) / sqrt(np.linalg.det(Sx) * np.linalg.det(Sy))) for i in range(m): for j in range(n): dx = x[:, i] - y[:, j] dist[i, j] = norm(dx) d = np.dot(np.dot(dx.T, Si), dx) ## NOTE: matrix multiplication M[i, j] = d + lnS if sqrt(d) > K_factor: M[i, j] = BIG_L return (M, dist)
''' Created on Sep 12, 2015 @author: mjchao ''' import pygame from Utils import convertToPixelArray, norm #list of global parameter constants P = 100 N = 1 K = 1 T = 500000 E = 500000 #---Change when image changes---# IMG = pygame.image.load( "../html/mona_lisa.bmp" ) OUTPUT_DIR = "tmp" IMG_WIDTH = 32 IMG_HEIGHT = 32 #--------------------------# IMG_PIXEL_ARRAY = convertToPixelArray( IMG ) IMG_PIXEL_ARRAY_NORM = norm( IMG_PIXEL_ARRAY )