Exemple #1
0
def create_env(task_index):
    """ Creates and returns an Environment which contains a single
    sender-receiver connection. The environment is run inside mahimahi
    shells. The environment knows the best cwnd to pass to the expert policy.
    """

    best_cwnds_file = path.join(project_root.DIR, 'dagger', 'best_cwnds.yml')
    best_cwnd_map = yaml.load(open(best_cwnds_file))

    if task_index == 0:
        trace_path = path.join(project_root.DIR, 'env', '0.57mbps-poisson.trace')
        mm_cmd = 'mm-delay 28 mm-loss uplink 0.0477 mm-link %s %s --uplink-queue=droptail --uplink-queue-args=packets=14' % (trace_path, trace_path)
        best_cwnd = 5
    elif task_index == 1:
        trace_path = path.join(project_root.DIR, 'env', '2.64mbps-poisson.trace')
        mm_cmd = 'mm-delay 88 mm-link %s %s --uplink-queue=droptail --uplink-queue-args=packets=130' % (trace_path, trace_path)
        best_cwnd = 40
    elif task_index == 2:
        trace_path = path.join(project_root.DIR, 'env', '3.04mbps-poisson.trace')
        mm_cmd = 'mm-delay 130 mm-link %s %s --uplink-queue=droptail --uplink-queue-args=packets=426' % (trace_path, trace_path)
        best_cwnd = 70
    elif task_index <= 18:
        bandwidth = [5, 10, 20, 50]
        delay = [10, 20, 40, 80]

        cartesian = [(b, d) for b in bandwidth for d in delay]
        bandwidth, delay = cartesian[task_index - 3]

        uplink_trace, downlink_trace = prepare_traces(bandwidth)
        mm_cmd = 'mm-delay %d mm-link %s %s' % (delay, uplink_trace, downlink_trace)
        best_cwnd = best_cwnd_map[bandwidth][delay]
    elif task_index == 19:
        trace_path = path.join(project_root.DIR, 'env', '100.42mbps.trace')
        mm_cmd = 'mm-delay 27 mm-link %s %s --uplink-queue=droptail --uplink-queue-args=packets=173' % (trace_path, trace_path)
        best_cwnd = 500
    elif task_index == 20:
        trace_path = path.join(project_root.DIR, 'env', '77.72mbps.trace')
        mm_cmd = 'mm-delay 51 mm-loss uplink 0.0006 mm-link %s %s --uplink-queue=droptail --uplink-queue-args=packets=94' % (trace_path, trace_path)
        best_cwnd = 690
    elif task_index == 21:
        trace_path = path.join(project_root.DIR, 'env', '114.68mbps.trace')
        mm_cmd = 'mm-delay 45 mm-link %s %s --uplink-queue=droptail --uplink-queue-args=packets=450' % (trace_path, trace_path)
        best_cwnd = 870
    elif task_index <= 29:
        bandwidth = [100, 200]
        delay = [10, 20, 40, 80]

        cartesian = [(b, d) for b in bandwidth for d in delay]
        bandwidth, delay = cartesian[task_index - 26]

        uplink_trace, downlink_trace = prepare_traces(bandwidth)
        mm_cmd = 'mm-delay %d mm-link %s %s' % (delay, uplink_trace, downlink_trace)
        best_cwnd = best_cwnd_map[bandwidth][delay]

    env = Environment(mm_cmd)
    env.best_cwnd = best_cwnd

    return env
def load_task(filename: str, render: bool, fallback: bool) -> Environment:
    """Загружает параметры задачи из json-файла filename"""
    with open(filename, 'r') as fp:
        td: TaskData = json.load(fp, object_hook=task_json_parse)

    E = Environment(render, fallback)
    E.load_task(td)

    log()['PYBULLET'].log('environment loaded successfully')

    return E
Exemple #3
0
def create_env(task_index):
    bandwidth = int(np.linspace(30, 60, num=4, dtype=np.int)[task_index])
    delay = 25
    queue = None

    uplink_trace, downlink_trace = prepare_traces(bandwidth)
    mm_cmd = ('mm-delay %d mm-link %s %s' %
              (delay, uplink_trace, downlink_trace))
    if queue is not None:
        mm_cmd += (' --downlink-queue=droptail '
                   '--downlink-queue-args=packets=%d' % queue)

    env = Environment(mm_cmd)
    env.setup()
    return env
Exemple #4
0
def create_env(task_index):
    bandwidth_list = [100, 200]
    delay_list = [5, 10, 20]
    # queue = [100,200,400]
    # loss = [0.0001,0.001,0.01]
    loss_list = [0.1, 0.001]

    cartesian = [(b, d, k) for b in bandwidth_list for d in delay_list
                 for k in loss_list]
    bandwidth, delay, loss = cartesian[task_index]

    # sys.stderr.write('\nhesy debug: env len is %d\n' % len(cartesian))

    uplink_trace, downlink_trace = prepare_traces(bandwidth)
    mm_cmd = 'mm-delay %d mm-loss uplink %f mm-link %s %s' % (
        delay, loss, uplink_trace, downlink_trace)
    """
    bandwidth = int(np.linspace(30, 60, num=4, dtype=np.int)[task_index]) 
    delay = 25
    queue = None

    uplink_trace, downlink_trace = prepare_traces(bandwidth)
    mm_cmd = ('mm-delay %d mm-link %s %s' %
              (delay, uplink_trace, downlink_trace))
    if queue is not None:
        mm_cmd += (' --downlink-queue=droptail '
                   '--downlink-queue-args=packets=%d' % queue)
    """
    env = Environment(mm_cmd)
    #env.setup()
    return env
Exemple #5
0
def create_env():
    uplink_trace = path.join(project_root.DIR, 'env', '12mbps.trace')
    downlink_trace = uplink_trace
    mahimahi_cmd = (
        'mm-delay 20 mm-link %s %s '
        '--downlink-queue=droptail --downlink-queue-args=packets=200' %
        (uplink_trace, downlink_trace))

    env = Environment(mahimahi_cmd)
    return env
Exemple #6
0
def load_task(filename, render, fallback):
    """Загружает параметры задачи из json-файла filename"""
    with open(filename, 'r') as fp:
        task_data = json.load(fp, object_hook=task_json_parse)

    # получение путей к urdf и sdf файлам

    urdf_filename = filename.parent / pathlib.Path(task_data['urdf_name'])
    if task_data['sdf_name'] is None:
        sdf_filename = None
    else:
        sdf_filename = filename.parent / pathlib.Path(task_data['sdf_name'])

    E = Environment(render, fallback,
                    None if sdf_filename is None else str(sdf_filename))

    E.set_endpoint(task_data['endpoint'])
    E.add_robot(filename=str(urdf_filename),
                eff_name=task_data['effector_name'],
                pos=task_data['pos'],
                orn=task_data['orn'],
                fixed=task_data['fixed_base'],
                kin_eps=task_data['eps'])

    if task_data['dofs'] is not None:
        E.robot.state = task_data['dofs']

    log()['PYBULLET'].log('environment loaded successfully')

    return E, task_data['endpoint'], task_data['emp_best']
Exemple #7
0
from fastapi import FastAPI
from ariadne.asgi import GraphQL
from gql import schema
from env.environment import Environment

env = Environment()
app = FastAPI()

app.mount("/graphql", GraphQL(schema, debug=True))