Esempio n. 1
0
def test_interval(client):

    tol = 1e-3
    I_integral_ideal = [0.77272105923056, 46.639683900497, 6.80452330242669]
    I_terminal_ideal = 8.99891199975
    phase_errors_ideal = [34784.1137839443, 5.62296778644782e-07, 0.0]
    controller_variance_ideal = [4.0, 0.0, 0.0]
    terminal_error = 1e-3

    parameters = {
        'u1_0': Interval.from_value(5),
        'u1_1': Interval.from_value(6),
        'u1_2': Interval.from_value(7),
        'u2_0': Interval.from_value(2),
        'u2_1': Interval.from_value(2),
        'u2_2': Interval.from_value(2),
        'u2_3': Interval.from_value(2),
        'a': Interval.from_value(5)
    }

    url = '/process_request?field=sim&scope=interval'
    for k, v in parameters.items():
        url += '&{0}={1}'.format(k, json.dumps(v))

    response = client.get(url)
    error = Interval.from_dict(json.loads(response.data)).middle_point

    assert response.status_code == 200
    assert math.fabs(error - (sum(I_integral_ideal) + I_terminal_ideal +
                              terminal_error + sum(phase_errors_ideal) +
                              sum(controller_variance_ideal))) < tol
Esempio n. 2
0
def convert(e, points=np.linspace(0, 1, 11)):
    coeffs = dict([(kvp['key'], Interval.from_dict(kvp['value'])) for kvp in e['IntervalVector']['elements']])
    u1 = lambda t: coeffs['a1'] + coeffs['b1'] * t + coeffs['c1'] * t * t
    u2 = lambda t: coeffs['a2'] + coeffs['b2'] * t + coeffs['c2'] * t * t
    u3 = lambda t: coeffs['a3'] + coeffs['b3'] * t + coeffs['c3'] * t * t
    u = {'u1': u1, 'u2': u2, 'u3': u3}
    new_coeffs = []
    for i, p in enumerate(points):
        for u_name, u_func in u.items():
            new_coeffs.append({'key': '{0}_{1}'.format(u_name, i), 'value': u_func(p)})
    new_e = e.copy()
    new_e['IntervalVector']['elements'] = new_coeffs
    return new_e
Esempio n. 3
0
def test_interval_f(client):
    data = {
        'x': Interval(1, 2),
        'y': Interval(2, 3),
        'z': Interval(3, 4)
    }
    url = '/process_request?field=f&scope=interval'
    for k, v in data.items():
        url += '&{0}={1}'.format(k, json.dumps(v))

    response = client.get(url)
    output = Interval.from_dict(json.loads(response.data))

    assert response.status_code == 200
    assert output == Interval(36.0, 70.0)
Esempio n. 4
0
 def convert_interval_vector(dict):
     v = {}
     for kvp in dict['IntervalVector']['elements']:
         v[kvp['key']] = Interval.from_dict(kvp['value'])
     return v