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)