Ejemplo n.º 1
0
    E_sold = Emax_seller  # 맨 처음으로는 가지고 있는 모든 에너지를 판다.
    seller = Seller(a_seller, b_seller, E_sold, Emax_seller)

    # 시장거래를 위한 manager 생성
    manager = Manager(E_sold, users)

    # 파는 E (E_sold)에 따른 유저별 w,E,utility를 임시 저장하기 위한 배열 생성
    ws = [None] * num_users
    Es = [None] * num_users
    us = [None] * num_users
    final_E = E_sold

    # E_sold를 -1씩 감소시키면서 utility_seller를 관찰
    while True:
        manager.initialize(E_sold)
        E = manager.KKT()
        unit_price = manager.unit_price
        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])
Ejemplo n.º 2
0
Es = [None] * num_users
us = [None] * num_users

# 파는 E (E_sold)에 따른 seller의 utility를 저장할 배열 생성 (figure 0 마지막 그래프)
utility_seller = []
utility_buyers = []
unit_prices = []
trading_user_count = []
xs = []
# initialize final_E. final_E는 seller의 utility가 최대가 되는 E_sold가 될 예정
final_E = E_sold

# E_sold를 -1씩 감소시키면서 utility_seller를 관찰
while True:
    manager.initialize(E_sold)
    E = manager.KKT()
    unit_price = manager.unit_price
    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])