Example #1
0
        unit_price += 0.001

    # market clearing E가 E_sold 이하로 들어오는 범위에서, (price, clearing E) tuple을 이용하여 seller의 utility를 측정
    unit_price = new_max_unit_price
    idx = unit_prices2.index(unit_price)

    utility_seller2 = []
    utility_buyers2 = []
    best_E_solds, best_utility_seller2 = [], []
    real_E_solds, real_utility_seller2 = [], []
    flag = 0
    impossible = []
    for i in range(idx, len(unit_prices2)):
        E_sold = market_clear_Es[i]
        new_utility = seller.compute_utility(E_sold, E_sold * unit_prices2[i])
        best_E_sold = seller.max_utility_arg(unit_prices2[i])
        best_utility = seller.compute_utility(best_E_sold,
                                              best_E_sold * unit_prices2[i])
        if best_E_sold < E_sold:
            real_utility = best_utility
            real_E_solds.append(best_E_sold)
        else:
            real_utility = new_utility
            real_E_solds.append(E_sold)
        best_E_solds.append(best_E_sold)
        if flag == 0 and best_E_sold >= E_sold:
            impossible = [unit_prices2[i], E_sold]
            flag = 1
        utility_seller2.append(new_utility)
        real_utility_seller2.append(real_utility)
        best_utility_seller2.append(best_utility)