Exemplo n.º 1
0
def construct_unsafe_set(dae_auto):
    'construct unsafe set'

    # unsafe set: x_478 >= 0.05
    C1 = dae_auto.matrix_c.todense()
    C = -C1[0]
    d = np.array([[-0.05]])  # safe
    print "\nunsafe_set 1:  matrix C = {}".format(C)
    print "\nunsafe_set 1:  vector d = {}".format(d)
    unsafe_set1 = LinearPredicate(C, d)
    d = np.array([[-0.01]])  # unsafe
    print "\nunsafe_set 2:  matrix C = {}".format(C)
    print "\nunsafe_set 2:  vector d = {}".format(d)
    unsafe_set2 = LinearPredicate(C, d)
    unsafe_set = [unsafe_set1, unsafe_set2]  # list of unsafe set

    return unsafe_set
Exemplo n.º 2
0
def construct_unsafe_set(dae_auto):
    'construct unsafe set'

    C = np.array([[-1, 0, -1, 0, 0]])  # x(0) + x(2) >= 0.2
    d = np.array([[-0.2]])
    print "\nunsafe_set 1:  matrix C = {}".format(C)
    print "\nunsafe_set 1:  vector d = {}".format(d)
    unsafe_set1 = LinearPredicate(C, d)

    C = np.array([[0, 0, 0, 1, 0]])  # x(3) <= -0.1
    d = np.array([[-0.3]])
    print "\nunsafe_set 2:  matrix C = {}".format(C)
    print "\nunsafe_set 2:  vector d = {}".format(d)
    unsafe_set2 = LinearPredicate(C, d)

    unsafe_set = [unsafe_set1, unsafe_set2]  # list of unsafe set

    return unsafe_set
Exemplo n.º 3
0
def verify_large_stokes_equation(N):
    'verify a large stokes equation'

    E, A, B, C = get_benchmark(1.0, N)
    dae_sys = construct_dae_automaton(E, A, B, C)
    dae_auto = convert_to_auto_dae(dae_sys)
    decoupled_dae = decouple_auto_dae(dae_auto)
    basic_matrix = generate_consistent_basic_matrix(decoupled_dae)
    init_set = construct_init_set(basic_matrix)

    totime = 0.4
    num_steps = 100
    solver_names = ['vode', 'zvode', 'lsoda', 'dopri5',
                    'dop853']  # similar to ode45 mathlab

    # unsafe set: - vcx - vcy <=
    c_mat = dae_auto.matrix_c.todense()
    C1 = c_mat[0]
    C2 = c_mat[1]
    C = -C1 - C2
    d = np.array([[0.04]])  # unsafe
    print "\nunsafe_set 1:  matrix C = {}".format(C)
    print "\nunsafe_set 1:  vector d = {}".format(d)
    unsafe_set1 = LinearPredicate(C, d)
    C = -C1
    d = np.array([[-0.2]])  # safe vcx >= 0.2
    print "\nunsafe_set 2:  matrix C = {}".format(C)
    print "\nunsafe_set 2:  vector d = {}".format(d)
    unsafe_set2 = LinearPredicate(C, d)
    unsafe_set = [unsafe_set1, unsafe_set2]  # list of unsafe set

    # verify the safety of the system'
    n = len(unsafe_set)
    ver_res = []
    for i in xrange(0, n):
        us = unsafe_set[i]
        vr = Verifier().check_safety(
            dae_auto, init_set, us, totime, num_steps, solver_names[3],
            'vr_dimension_{}_case_{}'.format(E.shape[0], i))
        ver_res.append(vr)

    return ver_res
Exemplo n.º 4
0
def construct_unsafe_set(dae_auto):
    'construct unsafe set'

    # unsafe set: p_c >= 1.0 and v_c >= 1.5, the middle mass position
    c_mat = dae_auto.matrix_c.todense()
    C = -c_mat
    d = np.array([[-1.0], [-1.5]])
    print "\nunsafe_set 1:  matrix C = {}".format(C)
    print "\nunsafe_set 1:  vector d = {}".format(d)
    unsafe_set1 = LinearPredicate(C, d)

    C = -c_mat[1]  # v_c <= -0.2
    d = np.array([[0.2]])
    print "\nunsafe_set 2:  matrix C = {}".format(C)
    print "\nunsafe_set 2:  vector d = {}".format(d)
    unsafe_set2 = LinearPredicate(C, d)

    unsafe_set = [unsafe_set1, unsafe_set2]  # list of unsafe set

    return unsafe_set
Exemplo n.º 5
0
def construct_unsafe_set(dae_auto):
    'construct unsafe set'

    n = dae_auto.matrix_a.shape[0]
    In = np.eye(n)
    C = In[0:2, :]    # first and second state variables
    d = np.array([[-0.2], [-0.1]])
    print "\nunsafe_set 1:  matrix C = {}".format(C)
    print "\nunsafe_set 1:  vector d = {}".format(d)
    unsafe_set1 = LinearPredicate(C, d)

    C = -In[0:1, :]    # first state variable
    d = np.array([[-0.2]])
    print "\nunsafe_set 2:  matrix C = {}".format(C)
    print "\nunsafe_set 2:  vector d = {}".format(d)
    unsafe_set2 = LinearPredicate(C, d)

    unsafe_set = [unsafe_set1, unsafe_set2]    # list of unsafe set

    return unsafe_set
Exemplo n.º 6
0
def construct_unsafe_set(dae_auto):
    'construct unsafe set'

    # unsafe set: x_1 >= 0.03
    C1 = dae_auto.matrix_c.todense()
    C = -C1[0]
    d = np.array([[-0.03]])  # safe
    # d = np.array([[-0.01]])    # unsafe
    print "\nunsafe matrix C = {}".format(C)
    print "\nunsafe vector d = {}".format(d)
    unsafe_set = LinearPredicate(C, d)

    return unsafe_set
Exemplo n.º 7
0
def construct_unsafe_set1(dae_auto):
    'construct unsafe set'

    # unsafe set: - vcx - vcy <=
    c_mat = dae_auto.matrix_c.todense()
    C1 = c_mat[0]
    C2 = c_mat[1]
    C = -C1 - C2
    d = np.array([[0.04]])
    print "\nunsafe matrix C = {}".format(C)
    print "\nunsafe vector d = {}".format(d)
    unsafe_set = LinearPredicate(C, d)

    return unsafe_set