def icnet(self, max_iterations, gauss_stdev): """ICNET""" # init broker self.broker.set_initial_bid(self.estimated_transport_cost) # establish transporters self.set_transporters_initial_bids(gauss_stdev, self.transporters_icnet) nr_transporters_per_bid = random.randrange(1, self.nr_transporters) transporters = [] for iterator in range(nr_transporters_per_bid): transporters.append(random.choice(self.transporters_icnet)) bid_transporters = set(transporters) # establish cargo owner bid_cargo_owner = random.choice(self.cargo_owners) bid_data = Bid(bid_cargo_owner.id, self.estimated_transport_cost) # establishing the winner negotiation_success, list_of_accepting_transporters, nr_iterations = self.negociation( bid_transporters, max_iterations) if negotiation_success == True: winning_transporter, winner_price = self.determine_winning_transporter_icnet( list_of_accepting_transporters) winner_personality = winning_transporter.personality.get_personality( ) bid_data.accepted(winning_transporter.id, winner_personality, winner_price, nr_iterations) self.stats.bids_icnet.append(bid_data) self.personality_updates(bid_transporters, winning_transporter)
def aicnet(self, max_iterations, gauss_stdev, rank_method, rank_reverse): """AICNET""" # init broker self.broker.set_initial_bid(self.estimated_transport_cost) # establish transporters self.set_transporters_initial_bids(gauss_stdev, self.transporters_icnet) self.set_transporters_initial_bids(gauss_stdev, self.transporters_aicnet) nr_transporters_per_bid = random.randrange(1, self.nr_transporters) # establish transporters aux = [] bid_transporters_ids = [] for iterator in range(nr_transporters_per_bid): aux.append(random.randrange(1, self.nr_transporters)) bid_transporters_ids.extend(list(set(aux))) bid_transporters_icnet = [] bid_transporters_aicnet = [] for transporter in self.transporters_icnet: if transporter.id in bid_transporters_ids: bid_transporters_icnet.append(transporter) for transporter in self.transporters_aicnet: if transporter.id in bid_transporters_ids: bid_transporters_aicnet.append(transporter) # establish cargo owner bid_cargo_owner = random.choice(self.cargo_owners) # establish bid data bid_data_icnet = Bid(bid_cargo_owner.id, self.estimated_transport_cost) bid_data_aicnet = Bid(bid_cargo_owner.id, self.estimated_transport_cost) # establishing the winner and making the necessary personality updates negotiation_success, list_of_accepting_transporters, nr_iterations = self.negociation( bid_transporters_icnet, max_iterations) if negotiation_success == True: winning_transporter_icnet, winner_price = self.determine_winning_transporter_icnet( list_of_accepting_transporters) winner_personality = winning_transporter_icnet.personality.get_personality( ) bid_data_icnet.accepted(winning_transporter_icnet.id, winner_personality, winner_price, nr_iterations) self.stats.bids_icnet.append(bid_data_icnet) self.personality_updates(bid_transporters_icnet, winning_transporter_icnet) # establishing the winner and making the necessary personality updates negotiation_success, list_of_accepting_transporters, nr_iterations = self.negociation( bid_transporters_aicnet, max_iterations) if negotiation_success == True: winning_transporter_aicnet, rank = self.determine_winning_transporter_aicnet( list_of_accepting_transporters, rank_method, rank_reverse) winner_price2 = list_of_accepting_transporters[ winning_transporter_aicnet] winner_personality2 = winning_transporter_aicnet.personality.get_personality( ) bid_data_aicnet.accepted(winning_transporter_aicnet.id, winner_personality2, winner_price2, nr_iterations) self.stats.bids_aicnet.append(bid_data_aicnet) self.personality_updates(bid_transporters_aicnet, winning_transporter_aicnet)