def main(): 'main function' E, A, B, C = get_benchmark() dae_sys = construct_dae_automaton(E, A, B, C) dae_auto = convert_to_auto_dae(dae_sys) adm_projs = get_admissible_projectors(dae_auto) print "\nindex of the peec benchmark is: {}".format(len(adm_projs)) decoupled_dae = decouple_auto_dae(dae_auto) basic_matrix = generate_consistent_basic_matrix(decoupled_dae) init_set = construct_init_set(basic_matrix) totime = 10.0 num_steps = 1000 solver_names = ['vode', 'zvode', 'lsoda', 'dopri5', 'dop853'] # print spaceex model spaceex_printer(decoupled_dae, init_set, totime, 0.01, 'peec') unsafe_set = construct_unsafe_set(dae_auto) veri_res = verify_safety(dae_auto, init_set, unsafe_set, totime, num_steps, solver_names[3]) for vr in veri_res: if vr.status == 'unsafe': Plot().plot_unsafe_trace(vr) Plot().plot_output_reachset_vs_time( vr, dae_auto.matrix_c.todense()) # plot state x_478 (output) reach set
def main(): 'main function' E, A, B, C = get_benchmark() 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 = 10.0 num_steps = 1000 solver_names = ['vode', 'zvode', 'lsoda', 'dopri5', 'dop853'] # print spaceex model spaceex_printer(decoupled_dae, init_set, totime, 0.01, 'interconnected_rotating_masses') unsafe_set = construct_unsafe_set(dae_auto) veri_res = verify_safety(dae_auto, init_set, unsafe_set, totime, num_steps, solver_names[3]) reachset = veri_res[0].reach_set list_of_line_set_list = get_line_set(reachset, dae_auto.matrix_c.todense()) plot_vline_set(list_of_line_set_list, totime, num_steps) plot_boxes(list_of_line_set_list) plot_boxes_vs_time(list_of_line_set_list, totime, num_steps) if veri_res[0].status == 'unsafe': plot_unsafe_trace(veri_res[0]) Plot().plot_state_reachset_vs_time(veri_res[0])
def main(): 'main function' print "\n############################################################" print "\nVERIFY/FALSIFY SAFETY PROPERTY OF A DAMPED-MASS-SPRING SYSTEM" E, A, B, C = get_benchmark(5) 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 = 100.0 num_steps = 1000 solver_names = ['vode', 'zvode', 'lsoda', 'dopri5', 'dop853'] # similar to ode45 mathlab # print spaceex model spaceex_printer(decoupled_dae, init_set, totime, 0.1, 'damped_mass_spring') unsafe_set = construct_unsafe_set(dae_auto) veri_res = verify_safety(dae_auto, init_set, unsafe_set, totime, num_steps, solver_names[3]) for vr in veri_res: if vr.status == 'unsafe': Plot().plot_unsafe_trace(vr)
def main(): 'main function' E, A, B, C = get_benchmark() dae_sys = construct_dae_automaton(E, A, B, C) dae_auto = convert_to_auto_dae(dae_sys) # It is interesting that the index of this example is 3 not 2 as other MNA examples decoupled_dae = decouple_auto_dae(dae_auto) basic_matrix = generate_consistent_basic_matrix(decoupled_dae) init_set = construct_init_set(basic_matrix) totime = 1.0 num_steps = 100 solver_names = ['vode', 'zvode', 'lsoda', 'dopri5', 'dop853'] # print spaceex model spaceex_printer(decoupled_dae, init_set, totime, 0.01, 'mna4') unsafe_set = construct_unsafe_set(dae_auto) veri_res = verify_safety(dae_auto, init_set, unsafe_set, totime, num_steps, solver_names[4]) for vr in veri_res: if vr.status == 'unsafe': Plot().plot_unsafe_trace(vr) Plot().plot_output_reachset_vs_time(vr, dae_auto.matrix_c.todense()) # plot state x_478 (output) reach set
def main(): 'main function' E, A, B, C = get_benchmark() 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 = 10.0 num_steps = 1000 solver_names = ['vode', 'zvode', 'lsoda', 'dopri5', 'dop853'] # print spaceex model spaceex_printer(decoupled_dae, init_set, totime, 0.01, 'RLC_circuit') unsafe_set = construct_unsafe_set(dae_auto) veri_res = verify_safety(dae_auto, init_set, unsafe_set, totime, num_steps, solver_names[3]) for vr in veri_res: if vr.status == 'unsafe': Plot().plot_unsafe_trace(vr)