Example #1
0
        nd_user = manager.users[num_users - 2]
        if E_sold <= 1 or nd_user.a * nd_user.b / (
                1 + nd_user.b *
                nd_user.Eo) < unit_price or unit_price > max_unit_price:
            # final_E = Emax_seller
            break

        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 = []