docs: def getUtility(self, decision, sample, aggregationMode = "avg"):
          """
          Get the utility of a given decision given a preference. 
  
          :ivar list<int> decision: Contains a list of integer representations of candidates in the 
              current decision.
          :ivar sample: A representation of a preference. We do not assume that it is of a certain 
              type here and merely pass it to the getUtilities() method.
          ivar str aggregationMode: Identifies the aggregation mode of the utility function when the
              decision selects more than one candidate. If the mode is "avg," the utility will be the
              averge of that of each candidate. If "min," the utility will be the minimum, and if 
              "max," the utility will xbe the maximum. By default the aggregation mode will be "avg."
          """
  
          utilities = self.getUtilities(decision, sample)
          if aggregationMode == "avg":
              utility = numpy.mean(utilities)
          elif aggregationMode == "min":
              utility = min(utilities)
          elif aggregationMode == "max":
              utility = max(utilities)
          else:
              print("ERROR: aggregation mode not recognized")
              exit()
          return utility