if unit_price < min_unit_price: pass else: for i in range(num_users): ws[i] = manager.users[i].w Es[i] = manager.users[i].E us[i] = manager.users[i].set_utility(Es[i], ws[i]) # print("user {}'s E_i : {}, w_i : {}, utility : {}".format(i, Es[i], ws[i], us[i])) new_utility = seller.compute_utility(E_sold, sum(ws)) # xs.append(E_sold) # utility_seller.append(new_utility) # utility_buyers.append(sum(us)/num_users) # unit_prices.append(unit_price) if seller.utility < new_utility: seller.utility = new_utility final_E = E_sold E_sold -= 1 bps_seller_utility = seller.utility ws_final = [] Es_final = [] us_final = [] manager.initialize(final_E) manager.KKT() for i in range(len(users)): ws_final.append(users[i].w) Es_final.append(users[i].E) us_final.append(users[i].set_utility(Es_final[-1], ws_final[-1]))