#    |- Reward
rewarding = {'serve': Rs, 'wait': Rw, 'fail': Rf}

# load from processed data
session_df = pd.read_csv(
    filepath_or_buffer='../data/trace_dh3.dat',
    parse_dates=['startTime_datetime', 'endTime_datetime'])

te = TrafficEmulator(session_df=session_df,
                     time_step=time_step,
                     head_datetime=head_datetime,
                     tail_datetime=tail_datetime,
                     rewarding=rewarding,
                     verbose=2)

ts = TrafficServer(cost=(Co, Cw), verbose=2)

agent = Phi_QAgentNN(
    phi_length=phi_length,
    dim_state=dim_state,
    range_state=range_state,
    f_build_net=None,
    batch_size=batch_size,
    learning_rate=learning_rate,
    momentum=momentum,
    reward_scaling=reward_scaling,
    reward_scaling_update=reward_scaling_update,
    rs_period=rs_period,
    update_period=update_period,
    freeze_period=freeze_period,
    memory_size=memory_size,
    session_df['totalBytes'] = session_df['bytesByDomain'].apply(lambda x: x.split(';')).map(lambda x: sum(map(float, x)))  # sum bytes across domains
    session_df['totalRequests'] = session_df['requestsByDomain'].apply(lambda x: x.split(';')).map(lambda x: sum(map(float, x)))  # sum requests across domains
    session_df.sort(['startTime_datetime'], ascending=True, inplace=True)  # get it sorted
    session_df['interArrivalDuration_datetime'] = session_df.groupby('location')['startTime_datetime'].diff()  # group-wise diff
    session_df['interArrivalDuration_ms'] = session_df.groupby('location')['startTime_unix'].diff()  # group-wise diff
    print "Complete!"
    return session_df


# Setting up data
session_df = set_up_data("../data/net_traffic_nonull_sample.dat")

# Setting up Emulation
print "Setting up Emulation environment..."
te = TrafficEmulator(session_df=session_df, time_step=pd.Timedelta(minutes=30), verbose=1)
ts = TrafficServer(verbose=2)
actions = [(True, None), (False, 'serve_all')]
phi_length = 3
range_state_slice = [(0, 10), (0, 10), (0, 10), (0, 1), (0, 1)]
agent = QAgentNNPhi(
        phi_length=phi_length,
        dim_state=(1, phi_length, 3+2),
        range_state=[[range_state_slice]*phi_length],
        actions=actions,
        learning_rate=0.01, reward_scaling=10, batch_size=100,
        freeze_period=50, memory_size=200, num_buffer=2,
        alpha=0.5, gamma=0.5, explore_strategy='epsilon', epsilon=0.02,
        verbose=2)
c = QController(agent=agent)
emu = Emulation(te=te, ts=ts, c=c)
import numpy as np
import pandas as pd
import json
from sleep_control.traffic_server import TrafficServer
pd.set_option('mode.chained_assignment', None)

# Initialize
ts = TrafficServer()

byteSent_req_domain_list = [{'111.com': {1: 2}, '222.com': {1: 3}},
                            {'333.com': {1: 2}, '444.com': {1: 3}},
                            {'555.com': {1: 2}, '666.com': {1: 3}}
                            ]
traffic_df = pd.DataFrame(columns=['sessionID', 'uid', 'bytesSent_per_request_domain'],
                          data={'sessionID': pd.Series([0, 1, 2]),
                                'uid': pd.Series([0, 1, 2]),
                                'bytesSent_per_request_domain': pd.Series([json.dumps(brd) for brd in byteSent_req_domain_list])
                                }
                          )

print ts.observe(traffic_df=traffic_df)
control = False, 'queue_all'
print ts.get_service_and_cost(control=control)

print ts.observe(traffic_df=traffic_df)
control = False, 'serve_all'
print ts.get_service_and_cost(control=control)

print ts.observe(traffic_df=traffic_df)
control = False, 'random_serve_and_queue'
print ts.get_service_and_cost(control=control)
Example #4
0
import sys
sys.path.append('../..')

import numpy as np
import pandas as pd
import json
from sleep_control.traffic_server import TrafficServer
pd.set_option('mode.chained_assignment', None)

# Initialize
ts = TrafficServer()

byteSent_req_domain_list = [{
    '111.com': {
        1: 2
    },
    '222.com': {
        1: 3
    }
}, {
    '333.com': {
        1: 2
    },
    '444.com': {
        1: 3
    }
}, {
    '555.com': {
        1: 2
    },
    '666.com': {
# env Model
model_type, traffic_window_size = 'IPP', 50
stride, n_iter, adjust_offset = 2, 3, 1e-22
eval_period, eval_len = 4, 100
n_belief_bins, max_queue_len = 5, 20
Rs, Rw, Rf, Co, Cs = 1.0, -1.0, -10.0, -5.0, -0.5
num_sim = 10

# Build entities
rewarding = {'serve': Rs, 'wait': Rw, 'fail': Rf}
te = TrafficEmulator(session_df=session_df,
                     time_step=time_step,
                     rewarding=rewarding,
                     verbose=1)

ts = TrafficServer(verbose=2, cost=(Co, Cs))

traffic_params = (model_type, traffic_window_size, stride, n_iter,
                  adjust_offset, eval_period, eval_len, n_belief_bins)
queue_params = (max_queue_len, )
reward_params = (Rs, Rw, Rf, Co, Cs, None)
env_model = SJTUModel(traffic_params, queue_params, reward_params, verbose=1)

agent = DynaQAgent(env_model=env_model,
                   num_sim=num_sim,
                   actions=actions,
                   alpha=0.5,
                   gamma=0.5,
                   explore_strategy='epsilon',
                   epsilon=0.1,
                   verbose=2)