-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwaypointrewardfunctioncode
More file actions
75 lines (61 loc) · 4.01 KB
/
Copy pathwaypointrewardfunctioncode
File metadata and controls
75 lines (61 loc) · 4.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
class Reward:
def __init__(self):
self.previous_steps = None
def the_reward_function(self, params):
#####################################################################################
# Start Waypoint Code #
#####################################################################################
center_variance = params["distance_from_center"] / params["track_width"]
left_lane = [8,9,10,11,12,13,14,15,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,85,86,87,88,89,90,91,92,139,140,141,142,143,144,145,146,147,148,149,150,151]
center_lane = [1,2,3,4,5,6,7,16,17,18,19,20,21,22,23,26,27,28,29,30,31,32,33,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,133,134,135,136,137,138,152,153,154]
right_lane = [24,25,120,121,122,123,124,125,126,127,128,129,130,131,132]
fast = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,141,142,143,144,145,146,147,148,149,150,151,152,153,154]
slow = [84,85,139,140]
reward = 21
if params["closest_waypoints"][1] in left_lane and params["is_left_of_center"]:
reward += 10
elif params["closest_waypoints"][1] in right_lane and not params["is_left_of_center"]:
reward += 10
elif params["closest_waypoints"][1] in center_lane and center_variance < 0.4:
reward += 10
else:
reward -= 10
if params["closest_waypoints"][1] in fast:
if params["speed"] == 3 :
reward += 10
else:
reward -= 10
elif params["closest_waypoints"][1] in slow:
if params["speed"] == 1 :
reward += 10
else:
reward -= 10
#####################################################################################
# Keeping Wheels on Track #
#####################################################################################
if params["all_wheels_on_track"]:
reward += 10
else:
reward -= 10
return float(reward)
def another_reward_function(self, params):
reward = 0
#####################################################################################
# Keep car from over steering #
#####################################################################################
steering_factor = 10
if abs(params['steering_angle']) > 14:
steering_factor = 7
#####################################################################################
# Set Reward #
#####################################################################################
reward += steering_factor
return float(reward)
def reward_function(self, params):
return float(self.the_reward_function(params) + self.another_reward_function(params))
#####################################################################################
# Instatiate Object #
#####################################################################################
reward_object = Reward()
def reward_function(params):
return reward_object.reward_function(params)