working , rc release !

This commit is contained in:
2019-10-29 10:13:29 +01:00
parent f0580a988c
commit 51f719184d
4 changed files with 37 additions and 14 deletions

22
car.py
View File

@@ -1,3 +1,4 @@
import datetime
import math
import numpy as np
import random
@@ -10,6 +11,7 @@ from params import (
CAR_MAX_FITNESS,
CAR_SIZE,
CAR_STEERING_FACTOR,
MAX_RUN_TIME,
VISION_LENGTH,
VISION_SPAN,
THROTTLE_POWER,
@@ -59,6 +61,7 @@ class Car(pygame.sprite.Sprite):
self.probe_brain()
self.run = True
self.distance_run = 0
self.creation_dt = datetime.datetime.now()
def reset_car_pos(self):
self.rect.center = (
@@ -107,7 +110,9 @@ class Car(pygame.sprite.Sprite):
)
self.update_sensors()
self.distance_run += int(distance(old_center, self.rect.center))
self.brain.fitness = int(math.sqrt(self.distance_run))
self.brain.fitness = int(
math.sqrt(self.distance_run)
) # - 2 # penalize jittering
def probe_lines_proximity(self, lines):
# print(self.center_sensor, lines[0])
@@ -123,7 +128,7 @@ class Car(pygame.sprite.Sprite):
pygame.draw.circle(screen, (125, 125, 255), ip, 4, 2)
dist = int(distance(ip, self.rect.center))
self.probes[idx] = min(dist, self.probes[idx])
if dist < 1.2 * self.speed or self.speed < 0.01:
if dist < 1 * self.speed or self.speed < 0.01:
self.run = False
self.speed = 0
# print(f'Car {id(self)} crashed')
@@ -135,8 +140,8 @@ class Car(pygame.sprite.Sprite):
def probe_brain(self):
res = self.brain.predict(np.array(self.probes))
self.heading_change = res[0] * 15
self.throttle = res[1] * 10
self.heading_change = res[0] * 30
self.throttle = res[1] * 5
def update(self):
# rotate
@@ -145,7 +150,14 @@ class Car(pygame.sprite.Sprite):
self.rect = self.image.get_rect()
self.rect.center = old_center
self.update_position()
if self.speed < 0.01 or self.brain.fitness > CAR_MAX_FITNESS:
run_time = (datetime.datetime.now() - self.creation_dt).seconds
if run_time > MAX_RUN_TIME:
print("RUNTIME EXCEEDED")
if (
self.speed < 0.01
or self.brain.fitness > CAR_MAX_FITNESS
or run_time > MAX_RUN_TIME
):
self.run = False
print(f"Car {id(self)} crashed")
# print(