예제 #1
0
 def __init__(self):
     self.moveFirst = False
     self.firstOffer = False
     self.currIter = 0
     self.otherNegoWants = {}
     self.visited = []
     self.threshold = 0
     BaseNegotiator.__init__(self)
예제 #2
0
 def initialize(self, preferences, iter_limit):
     BaseNegotiator.initialize(self, preferences, iter_limit)
     self.counter = 0
     self.offer = []
     self.our_offers = []
     self.opponent_offers = []
     self.opponent_utilities = []
     self.penalty = -1 * len(preferences)
     self.histogram = [ [0 for i in range(0, len(preferences))] for i in range(0, len(preferences)) ]
     self.opt_util = 0
예제 #3
0
파일: zws3mb.py 프로젝트: zws3mb/CS4710HW3
 def __init__(self):
     BaseNegotiator.__init__(self)
     self.round_count=0
     self.first=False
     self.their_offers=[]
     self.their_utilities=[]
     self.our_score=0
     self.their_score=0
     self.last_offer=None
     self.encounter=0
     self.agreed=False
예제 #4
0
 def __init__(self):
     BaseNegotiator.__init__(self)
     self.given_results = []
     self.going_first = False
     self.aggressiveness = randint(40,60)
     self.currentPts = 0
     self.currentPtsOpponent = 0
     self.is_opponent_jerk = False
     self.stubborn_opponent = False
     self.stubborn_count = 0
     self.numRounds = 0
예제 #5
0
파일: dummyN.py 프로젝트: zws3mb/CS4710HW3
 def initialize(self, preferences, iter_limit):
     BaseNegotiator.initialize(self, preferences, iter_limit)
     self.round_count = 0
     self.first = False
     self.their_offers = []
     self.their_utilities = []
     self.our_score = 0
     self.their_score = 0
     self.offer_space()
     self.last_offer = None
     self.encounter = 0
예제 #6
0
파일: dummyN.py 프로젝트: zws3mb/CS4710HW3
 def initialize(self, preferences, iter_limit):
     BaseNegotiator.initialize(self,preferences,iter_limit)
     self.round_count=0
     self.first=False
     self.their_offers=[]
     self.their_utilities=[]
     self.our_score=0
     self.their_score=0
     self.offer_space()
     self.last_offer=None
     self.encounter=0
예제 #7
0
 def __init__(self):
     ##set up window here
     self.window = Tk()
     self.window.geometry("500x500+300+100")
     self.window.title("Human Negotiator")
     self.buttonlist = []
     self.madeoffer = False
     BaseNegotiator.__init__(self)
     self.checkstate = []
     self.currUtility = StringVar()
     self.lastOffer = StringVar()
     self.theirUtility = "0"
예제 #8
0
 def __init__(self):
     ##set up window here
     self.window = Tk()
     self.window.geometry("500x500+300+100")
     self.window.title("Human Negotiator")
     self.buttonlist = []
     self.madeoffer = False
     BaseNegotiator.__init__(self)
     self.checkstate = []
     self.currUtility = StringVar()
     self.lastOffer = StringVar()
     self.theirUtility = "0"
예제 #9
0
 def make_offer(self, offer):
     self.offer = offer
     if random() < 0.125 and offer is not None:
         self.offer = BaseNegotiator.set_diff(self)
         return self.offer
     else:
         ordering = self.preferences
         ourOffer = []
         for item in ordering.keys():
             if random() < 0.2:
                 ourOffer = ourOffer + [item]
         self.offer = ourOffer
         self.offer = BaseNegotiator.set_diff(self)
         return self.offer
예제 #10
0
 def __init__(self):
     BaseNegotiator.__init__(self)
     self.turn_counter = 0
     self.their_last_offer_utility = 0
     self.results = 0
     self.is_first = False
     # time at which we think we have a reasonable grasp on their offer
     self.turn_model_becomes_accurate = self.iter_limit * .20
     # container of probabilities
     self.mastermind_probabilities = []
     self.their_previous_offer_utility = 0
     self.current_guess = []
     self.optimal_solution_guess = []
     self.last_guess = []
예제 #11
0
 def initialize(self, preferences, iter_limit):
     BaseNegotiator.initialize(self,preferences, iter_limit)
     self.offer = self.preferences[:]
     self.num_iters = iter_limit
     temp_options = list(itertools.permutations(self.offer,len(self.offer)))
     #print (temp_options)
     for option in temp_options:
         temp_util = int(round(self.evaluate(option),0))
         if(temp_util not in self.options.keys()):
             self.options[temp_util] = []
         self.options[temp_util].append(option)
     #print (self.options)
     self.util_levels = sorted(self.options.keys(), reverse = True)
     self.current_level = 0
     self.stepsize = math.ceil( iter_limit / len(self.util_levels))
     self.step = self.stepsize
예제 #12
0
 def initialize(self, preferences, iter_limit):
     ##add all items to window
     self.preferences = preferences
     latestOffer = Label(self.window, textvariable = self.lastOffer).pack()
     currentUtility = Label(self.window, textvariable=self.currUtility).pack()
     self.currUtility.set("Your Share's Utility: 0")
     self.lastOffer.set("None")
     i = 0
     for x in self.preferences:
         y = self.preferences.get(x,0)
         print str(y)
         buttonvar = IntVar()
         self.buttonlist.append(buttonvar)
         newCheckbutton = Checkbutton(self.window, text = str(x) + " = " + str(y),variable = self.buttonlist.__getitem__(i), command = self.updateItem).pack()
         i+=1
     sendButton = Button(self.window, text = "Send Offer",command = self.sendoffer).pack()
     BaseNegotiator.initialize(self, preferences, iter_limit)
예제 #13
0
파일: ceh4ws.py 프로젝트: jakerose27/ai_hw3
 def __init__(self):
     BaseNegotiator.__init__(self)
     self.results = {}
     self.successful_results = []
     self.best_threshold = 0.5
     self.enemy_first_offer = []
     self.enemy_avg_slope = 0
     self.enemy_greed_slope = 0
     self.last_enemy_util = 0
     self.our_last_offer = []
     self.first = False
     self.enemy_util_slope = []
     self.init_enemy_util = 0
     self.enemy_util = []
     self.last_util = 0
     self.THRESHOLD = 0.9
     self.max_utility = 0
     self.threshold_increment = 0.1
     self.offers_made = []
     self.round = 1
예제 #14
0
 def make_offer(self, offer):
     self.offer = offer
     self.currIter+=1
     if self.currIter == self.iter_limit+1:
         self.offer = BaseNegotiator.set_diff(self)
         return self.offer
     if random() < 0 and offer is not None:
         # Very important - we save the offer we're going to return as self.offer
         print "I agree that you can take " + str(self.offer)
         self.offer = BaseNegotiator.set_diff(self)
         print "I will take: " + str(self.offer)
         return self.offer
     else:
         ordering = self.preferences
         ourOffer = []
         for item in ordering.keys():
             if random() < .5:
                 ourOffer = ourOffer + [item]
         self.offer = ourOffer
         return self.offer
예제 #15
0
파일: ceh4ws.py 프로젝트: jakerose27/ai_hw3
 def __init__(self):
     BaseNegotiator.__init__(self)
     self.results = {}
     self.successful_results = []
     self.best_threshold = 0.5
     self.enemy_first_offer = []
     self.enemy_avg_slope = 0
     self.enemy_greed_slope = 0
     self.last_enemy_util = 0
     self.our_last_offer = []
     self.first = False
     self.enemy_util_slope = []
     self.init_enemy_util = 0
     self.enemy_util = []
     self.last_util = 0
     self.THRESHOLD = 0.9
     self.max_utility = 0
     self.threshold_increment = 0.1
     self.offers_made = []
     self.round = 1
예제 #16
0
 def initialize(self, preferences, iter_limit):
     ##add all items to window
     self.preferences = preferences
     latestOffer = Label(self.window, textvariable=self.lastOffer).pack()
     currentUtility = Label(self.window,
                            textvariable=self.currUtility).pack()
     self.currUtility.set("Your Share's Utility: 0")
     self.lastOffer.set("None")
     i = 0
     for x in self.preferences:
         y = self.preferences.get(x, 0)
         print str(y)
         buttonvar = IntVar()
         self.buttonlist.append(buttonvar)
         newCheckbutton = Checkbutton(
             self.window,
             text=str(x) + " = " + str(y),
             variable=self.buttonlist.__getitem__(i),
             command=self.updateItem).pack()
         i += 1
     sendButton = Button(self.window,
                         text="Send Offer",
                         command=self.sendoffer).pack()
     BaseNegotiator.initialize(self, preferences, iter_limit)
예제 #17
0
 def make_offer(self, offer):
     self.offer = offer
     if random() < 0.2 and offer is not None:
         # Very important - we save the offer we're going to return as self.offer
         print("I agree that you can take " + str(self.offer))
         self.offer = BaseNegotiator.set_diff(self)
         print("I will take: " + str(self.offer))
         return self.offer
     else:
         ordering = self.preferences
         ourOffer = []
         for item in ordering.keys():
             if random() < .5:
                 ourOffer = ourOffer + [item]
         self.offer = ourOffer
         return self.offer
예제 #18
0
    def make_offer(self, offer):
        self.offer = offer


        if random() < 0.1 and offer is not None:
            # Very important - we save the offer we're going to return as self.offer
            print "[RN]Random Negotiator agree that you can take " + str(self.offer)
            self.offer = BaseNegotiator.set_diff(self)
            print "[RN]Random Negotiator will take: " + str(self.offer)
            return self.offer
        else:
            ordering = self.preferences
            ourOffer = []
            for item in ordering.keys():
                if random() < 0.5:
                    ourOffer = ourOffer + [item]
            print "[RN]Random Negotiator made an offer" + str(ourOffer)
            self.offer = ourOffer
            return self.offer
예제 #19
0
 def __init__(self):
     BaseNegotiator.__init__(self)
     self.going_first = False
예제 #20
0
 def utility(self):
     x = BaseNegotiator.utility(self)
     return x
예제 #21
0
 def receive_results(self, results):
     BaseNegotiator.receive_results(self, results)
예제 #22
0
 def __init__(self):
     self.moveFirst = False
     self.currIter = 0
     BaseNegotiator.__init__(self)
예제 #23
0
 def receive_results(self, results):
     BaseNegotiator.receive_results(self, results)
예제 #24
0
    def make_offer(self, offer):
        modifiedOffers = []
        if self.threshold == 0:
            # will generate threshold from .4 - .5 based on num of items
            self.threshold = .5 - (len(self.preferences)/10000.0)
        # init dictionary
        if len(self.otherNegoWants) == 0:
            for item in self.preferences:
                self.otherNegoWants[item] = 0

        # init total util
        if "total_util" not in locals():
            self.get_total_util()

        # init moveFirst
        if offer is None:
            self.moveFirst = True
        # update dictionary
        else:
            for item in offer:
                self.otherNegoWants[item] = self.otherNegoWants[item] + 1


        self.currIter+=1
        self.offer = offer
        #print "Current Iter: " + str(self.currIter)
        #print "Offers: " + str(offers)
        #print "Modified Offer: " + str(modifiedOffers)
        #print "offer given:" + str(offer)
        
        # almost all or nothing - final offer
        if self.moveFirst and self.currIter == self.iter_limit:
            ignore_item = self.get_lowest_item(None)
            final_offer = []
            items = self.preferences
            for item in items:
                if item != ignore_item:
                    final_offer = final_offer + [item]
            print "Making last offer: " + str(final_offer)
            self.offer = final_offer
            return self.offer
        if self.currIter == self.iter_limit:
            print "Last Accept Offer: " + str(BaseNegotiator.set_diff(self)) + str(self.offer)
            # TODO
            self.offer = BaseNegotiator.set_diff(self)
            return self.offer





        # evaluate offer
        print "Expected val: " + str(.5 * self.total_util)
        if self.offer is not None:
            print "Offered val: " + str(self.get_offer_util(BaseNegotiator.set_diff(self)))
        if self.moveFirst and self.offer is not None and self.get_offer_util(BaseNegotiator.set_diff(self)) > (.5 * self.total_util):
            self.offer = BaseNegotiator.set_diff(self)
            return self.offer
            
        elif self.offer is not None and self.get_offer_util(BaseNegotiator.set_diff(self)) >= (self.threshold*self.total_util):
            self.offer = BaseNegotiator.set_diff(self)
            return self.offer

        # make offer
        offers = self.generate_offers()
        print "All offers: " + str(offers)
        # will try best offer first, rest will be random
        choice = 0
        while choice in self.visited: 
            choice = randint(0, len(offers)-1)
        self.visited += [choice]
        # if we've visited all, empty
        if len(self.visited) == len(offers):
            self.visited = []
        self.offer = offers[choice]

        print "Current Iter: " + str(self.currIter)
        print "Current Offer: " + str(self.offer)
      

        return self.offer
예제 #25
0
파일: zws3mb.py 프로젝트: zws3mb/CS4710HW3
 def initialize(self, preferences, iter_limit):
     BaseNegotiator.initialize(self,preferences,iter_limit)
     self.offer_space()
예제 #26
0
 def initialize(self, preferences, iter_limit):
     BaseNegotiator.initialize(self, preferences, iter_limit)
     self.counter = 0
     self.penalty = -1 * len(preferences)
     self.offer = []
예제 #27
0
파일: rv5rr.py 프로젝트: rupalivohra/CS4710
 def initialize(self, preferences, iter_limit):
     BaseNegotiator.initialize(self,preferences, iter_limit)
     self.offer = self.preferences[:]
     self.max_util = round(self.utility(), 5)
     self.calculate_combos(self.preferences)
     self.set_up_weighted_avg()
예제 #28
0
    def make_offer(self, offer):
        self.offer = offer
        global maxTurns
        global oppo_dict
        # print the number of current turn
        # print self.make_offer.count
        # get the current turn
        currentTurn = self.make_offer.count

        # update opponent's offer in our tracker

        oppo_dict = self.oppoEstimation(offer)
        # print "oppo_dict: " + str(oppo_dict)

        if currentTurn is 1:
            if offer is None:
                # If going first, first turn decision = offer all positive util items
                maxTurns = ky2cg.getTurns(self) + 1
                # print "[SS}ss2cp starts first, incrementing the max turn by 1, max turns is " + str(maxTurns)
                # then there will be an extra chance to accept an offer in the end
                self.offer = self.positiveItems()
                # print "[SS]ss2cp will take: " + str(self.offer) + ". My utility will be " + str(self.utility())
                return self.offer

            if offer is not None:
                maxTurns = ky2cg.getTurns(self)
                # print "[SS}ss2cp starts second, max turns remains " + str(maxTurns)
                # then there will be no extra chance to accept an offer in the end

        # to see if it is the last turn, and accept what ever offer
        if currentTurn is maxTurns:
            if currentTurn > ky2cg.getTurns(self):
                # then you are to accept the final offer

                self.offer = offer
                self.offer = BaseNegotiator.set_diff(self)

                if (self.utility() >= (self.totalUtility() / 3)):
                    # print "[SS]Last chance to accept offer, will accept any offer more than 1/3 of my total utility: " + str(
                    #     self.offer) + " vs " + str(
                    #     offer) + ". My utility will be " + str(self.utility()) + ". total/3 is " + str(
                    #     self.totalUtility() / 3)
                    return self.offer

                else:
                    self.offer = BaseNegotiator.set_diff(self)
                    # print "You bad!!! I'd rather get negative leward!!!!"
                    return self.offer
            else:
                # then you are to give the final offer
                # print "[SS]Last chance to give offer, will take more than 2/3 of my total utility"
                # print "oppo_dict: " + str(oppo_dict)
                total = 0
                ourOffer = []
                # look at the nonoffered items first
                ordering = self.preferences
                for item in ordering.keys():
                    if not oppo_dict:
                        break
                    if (item not in oppo_dict and ordering.get(item) >= 0):
                        ourOffer = ourOffer + [item]
                        total += ordering.get(item)
                        # print "Found an item that opponent never wanted, " + str(
                        #     item) + ". It's value is positive, taking it. That give me total of " + str(total)
                        if (total >= (2 / 3 * self.totalUtility())):
                            self.offer = ourOffer
                            # print "[SS]ss2cp will take: " + str(ourOffer) + ". My utility will be " + str(
                            #     self.utility())
                            return self.offer

            while total < (2 / 3 * self.totalUtility()):
                min = min(oppo_dict, key=oppo_dict.get)
                ourOffer = ourOffer + min
                total += oppo_dict.get(min)
                del oppo_dict[min]
            self.offer = ourOffer
            # print "[SS]ss2cp will take: " + str(ourOffer) + ". My utility will be " + str(
            #     self.utility())
            return self.offer

        if offer is not None:
            # Very important - we save the offer we're going to return as self.offer
            self.offer = offer
            # If so, accept, negotiation is completed!
            if self.acceptableOffer() is True:
                # print("OFFER ACCEPTABLE!!! TAKING IT!!!!")
                # self.offer = BaseNegotiator.set_diff(self)
                # self.offer = self.positiveRemainingItems()
                return self.offer

            # Else, return more favorable offer to opponent
            else:  # Opponent offer currently takes more than half of total utilities
                # print("ARRANGING COUNTER OFFER!!!!!!!!!!")
                currOffer = offer  # Save opponent offer to modify
                self.offer = BaseNegotiator.set_diff(self)
                ourOffer = self.positiveRemainingItems(
                )  # Instantiate our offer, currently < 1/2 * total utilities
                ourOfferUtil = 0  # Track our offer's utility

                for s in ourOffer:
                    ourOfferUtil += self.preferences.get(s, 0)

                # Loop: while our offer is still < 2/3 of total utility
                while ourOfferUtil < (2 * self.totalUtility() / 3):
                    if len(currOffer) > 0:
                        maxItem = self.maxItem(currOffer)  # Find min item in opponent's offer
                        ourOffer = ourOffer + [maxItem]
                        ourOfferUtil += self.preferences.get(maxItem, 0)
                        currOffer.remove(maxItem)
                    else:
                        break

                # print("COUNTER OFFER: ")
                # for s in ourOffer:
                #     print(s)

                self.offer = ourOffer
                # print "[SS]ss2cp will take: " + str(self.offer) + ". My utility will be " + str(self.utility())
                return self.offer
예제 #29
0
 def utility(self):
     x = BaseNegotiator.utility(self)
     return x