def verification_of_successors(s, list_of_states, option="mild"): if option == "heavy": Q = polytope(PI(s.n), np.ones((2 * s.n, 1))) for state_X in list_of_states: state_X.successor_flag = {} state_X.successor_flag["Boolean-H"] = subset_polytope( post_polytope(s, state_X), state_X.successor[0].polytope) state_X.successor_flag["Epsilon"] = successor_check(s, state_X) i = state_X.mode T = np.dot(s.A[i], state_X.G) + np.dot(s.B[i], state_X.successor[2]) d = np.dot(s.A[i], state_X.x) + np.dot( s.B[i], state_X.successor[1]) + s.c[i] state_X.successor_flag["Boolean-Td"] = subset_transformed_polytope( T, d, Q, state_X.successor[0].polytope) state_X.successor_flag["Td in H"] = subset_transformed_polytope( state_X.G, state_X.x, Q, state_X.polytope) elif option == "mild": Q = polytope(PI(s.n), np.ones((2 * s.n, 1))) for state_X in list_of_states: state_X.successor_flag = {} i = state_X.mode T = np.dot(s.A[i], state_X.G) + np.dot(s.B[i], state_X.successor[2]) d = np.dot(s.A[i], state_X.x) + np.dot( s.B[i], state_X.successor[1]) + s.c[i] state_X.successor_flag["Boolean-Td"] = subset_transformed_polytope( T, d, Q, state_X.successor[0].polytope) state_X.successor_flag["Td in H"] = subset_transformed_polytope( state_X.G, state_X.x, Q, state_X.polytope)
for i in s.modes: s.F[i] = np.array([[1, -1]]).T s.f[i] = np.array([[4, 4]]).T s.Pi = np.array([[1, 0], [0, 1], [-1, 0], [0, -1]]) s.l[0] = np.array([-0.12, -1]).reshape(2, 1) s.u[0] = np.array([0.1, 1]).reshape(2, 1) s.l[1] = np.array([0.1, -1]).reshape(2, 1) s.u[1] = np.array([0.12, 1]).reshape(2, 1) s.l[2] = np.array([-0.12, -1]).reshape(2, 1) s.u[2] = np.array([-0.1, 1]).reshape(2, 1) s.vertices = vertices_cube(2) """ These are polytopes for each mode """ s.mode_polytope = {} for mode in s.modes: p = polytope(s.H[mode], s.h[mode]) p.anchor = anchor_point(p) s.mode_polytope[mode] = p s.weight = {} s.weight[0] = 100 / 12 s.weight[1] = 1 s.goal = state( np.array([0, 0]).reshape(2, 1), np.array([[0., 0], [0, 0.0]]), 0, 0, 0, 10)