in Vehicle Routing Problem/src/vrp_environment.py [0:0]
def __update_driver_parameters(self, action_type, translated_action, relevant_order_index):
if action_type == 'wait':
pass # no action
elif action_type == 'accept':
# if order accept it
if self.o_status[relevant_order_index] == 1:
self.o_status[relevant_order_index] = 2
self.reward += self.reward_per_order[relevant_order_index] / 3 # Give some reward for accepting
elif action_type == 'pickup':
self.__update_dr_xy(translated_action)
rix = self.o_res_map[relevant_order_index]
if [self.dr_x, self.dr_y] == [self.res_x[rix], self.res_y[rix]]:
if self.o_status[relevant_order_index] == 2:
self.o_status[relevant_order_index] = 3
self.dr_used_capacity += 1
self.reward += self.reward_per_order[relevant_order_index] / 3 # Give some reward for pickup
elif action_type == 'deliver':
self.__update_dr_xy(translated_action)
# Check for deliveries
for o in range(self.n_orders):
# If order is picked up by driver and driver is at delivery location, deliver the order
if self.o_status[o] == 3 and (self.dr_x == self.o_x[o] and self.dr_y == self.o_y[o]):
if self.o_time[o] <= self.order_promise:
self.reward += self.reward_per_order[o] / 3 # Rest of the reward was given in accept and pickup
self.dr_used_capacity -= 1
self.__reset_order(o)
elif action_type == 'return':
self.__update_dr_xy(translated_action)
else:
raise Exception(
'Misaligned action space and driver update function: {}, {}, {}'.format(action_type, translated_action,
relevant_order_index))