def run(numOfConsumer, conCoeffA, conCoeffB, numOfPro, proCoeffAList, proCoeffBList, maxSlot): consumerList = [] for i in range(numOfConsumer): valueDict = {} valueDict[1] = randint(10,60) valueDict[2] = valueDict[1] + randint(10,60) valueDict[3] = valueDict[2] + randint(10,60) valueDict[4] = valueDict[3] + randint(10,60) valueDict[5] = valueDict[4] + randint(10,60) #print(valueDict) consumer = Consumer(i, valueDict) consumer.set_bidList(conCoeffA, conCoeffB) consumerList.append(consumer) propertyDict = {1:[], 2:[], 3:[], 4:[], 5:[]} numOfPro = 20 for n in range(numOfPro): star = randint(1,5) if star == 1: cost = randint(10,40) elif star == 2: cost = randint(30,100) elif star == 3: cost = randint(50,160) elif star == 4: cost = randint(70, 220) elif star == 5: cost = randint(90,280) #print(cost) pro = Property(n, star, cost, randint(1,5)) pro.set_priceList(proCoeffAList, proCoeffBList, maxSlot) propertyDict[star].append(pro) priceline = NYOP() priceline.compute(consumerList, propertyDict) #print("priceline's profit", priceline.profit) aveConU = sum(c.utility for c in consumerList)/numOfConsumer #print("average consumer utility", aveConU) sumProProfit = 0 for k in propertyDict.keys(): sumProProfit += sum(p.profit for p in propertyDict[k]) aveProProfit = sumProProfit/numOfPro #print("average property profit", aveProProfit) return (priceline.profit, aveConU, aveProProfit)