def compute_final_reward(self): """ 如果虚拟网络请求能够被成功映射,那么最终奖赏为收益减去成本;否则,最终奖赏为一个无穷小的值 """ node_map, link_map = {}, {} for i in range(self.vnr.number_of_nodes()): node_map.update({i: self.chosen_ids[i]}) link_map = Network.find_path(self.sub, self.vnr, node_map) if len(link_map) == self.vnr.number_of_edges(): requested = Evaluation.calculate_revenue(self.vnr) occupied = Evaluation.calculate_cost(self.vnr, link_map) return 1000 + requested - occupied else: return LIMIT