def generateDomain(self): self.nLocs = (self.numberOfLines * self.nPrivatePerLine) + self.nShared self.maxLocationsPerLine = int(math.ceil(float(self.nShared * self.maxLinesPerSharedLocation) / float(self.numberOfLines))) self.maxLocationsPerLine += self.nPrivatePerLine; self.auction = [-1] * self.nLocs self.sharedSites = [] self.agentWiseLines = [] print "Experiment: ", self.experiment print "Theta: ", self.theta print "gamma: ", self.gamma print "initialx: ", self.initialxval print "alpha: ", self.alpha print "beta: ", self.beta print "deltaFinal: ", self.deltaFinal print "\nagents: ", self.agents print "Number of Lines: ", self.numberOfLines print "PrivatePerLine: ", self.nPrivatePerLine print "nShared: ", self.nShared print "nLocs: ", self.nLocs print "Agent Max: ", self.maxLocationsPerLine for i in xrange(0, self.numberOfLines): lst = Line(i) for j in xrange(0, self.nPrivatePerLine): num = random.randint(0, self.nLocs - 1) while self.auction[num] != -1: num = random.randint(0, self.nLocs - 1) self.auction[num] = i lst.locations.append(num) self.lines.append(lst) stores = numpy.array([self.maxLocationsPerLine]*self.numberOfLines) for i in xrange(0, self.nLocs): if self.auction[i] != -1: print "Location " + str(i) + " Auctioned to: " + str(self.auction[i]) continue tobesharedbetween = random.randint(self.minLinesPerSharedLocation, self.maxLinesPerSharedLocation) assert tobesharedbetween >= self.minLinesPerSharedLocation assert tobesharedbetween <= self.maxLinesPerSharedLocation setOfLines = set() sort_index = numpy.argsort(-stores) for j in xrange(0, tobesharedbetween): line = sort_index[j] setOfLines.add(line) stores[line] -= 1 for line in setOfLines: self.lines[line].locations.append(i) self.lines[line].sharedLocations.append(i) assert len(setOfLines) == tobesharedbetween self.auction[i] = setOfLines print "Location " + str(i) + " Auctioned to: " + str(setOfLines) self.sharedSites.append(i) print "Auctioned: ", self.auction print "SharedSites: ", self.sharedSites line_to_give = 0 for i in xrange(0, self.agents): num = line_to_give self.lines[num].owners.append(i) self.agentWiseLines.append(self.lines[num]) line_to_give += 1 if line_to_give % self.numberOfLines == 0: line_to_give = 0 print "\n=====LINES=====" for line in self.lines: print line print "\n==== AGENT WISE LINE =====" for i in xrange(0, self.agents): print "Agent "+str(i)+" : Line : "+ str(self.agentWiseLines[i].index) self.actionTimes = [] self.rewardCollection = [] self.creward = [] totalPow = random.randint(self.minT, self.maxT) self.T = 2 ** totalPow for i in xrange(0, self.agents): t = 2 ** random.randint(self.minTaction, self.maxTaction) self.actionTimes.append(t) for i in xrange(0, self.agents): lst = [] nlocs = self.agentWiseLines[i].getNumberOfLocations() locsact = self.agentWiseLines[i].locations for j in xrange(0, nlocs): rew = random.randint(self.rmi, self.rma) lst.append(rew) self.rewardCollection.append(lst) for x in self.sharedSites: rew = random.randint(2.0 * self.rma, 3.0 * self.rma) self.creward.append(rew) #Scaling rewards print "\n\nTotalTime: ", self.T print "Action: ", self.actionTimes print "MDPRew: ", self.rewardCollection print "ConsReward: ", self.creward self.R_min = min(self.creward) self.R_max = max(self.creward) for i in xrange(0, self.agents): mmin = min(self.rewardCollection[i]) mmax = max(self.rewardCollection[i]) if mmin < self.R_min: self.R_min = mmin if mmax > self.R_max: self.R_max = mmax print "Rmin: ", self.R_min print "Rmax: ", self.R_max self.writeConfig()