示例#1
0
    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)
示例#2
0
    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)