5 from sensor_msgs.msg
import LaserScan
7 from std_msgs.msg
import Empty
8 from gazebo_msgs.msg
import ModelStates
10 from neural_car_driver
import *
13 MAX_EPISODE_LENGTH = 5000
14 INITIAL_RANDOM_POPULATION_SIZE = 250
15 CONTINUE_TRAINING =
True 22 rospy.Subscriber(TOPIC_CRASH, Empty, self.
on_crash)
33 for i
in range(POPULATION_SIZE):
36 self.untested_population.append(driver)
44 self.current_driver.drive(message)
69 reset_car.reset_random(0, 0, self.
generation % 2 == 0)
72 self.population.sort(key=
lambda driver: driver.fitness, reverse=
True)
74 for i
in range(POPULATION_SIZE):
77 rospy.loginfo(
"Generation {:d}: Fitness of the population: {:s}".format(
79 ", ".join(str(int(driver.fitness))
for driver
in self.
population)
84 for _
in range(POPULATION_SIZE - SURVIVOR_COUNT):
86 offspring = parent.mutate()
87 self.untested_population.append(offspring)
97 rospy.init_node(
'evolutionary_training', anonymous=
True)
98 reset_car.register_service()
def on_complete_generation(self)
def on_receive_laser_scan(self, message)
def on_complete_test(self)