def simulate(init_states, max_time=5): '''simulate the automaton from each initial rect''' q_list = init_list_to_q_list(init_states, center=True, star=True, corners=True, rand=100) result = sim.simulate_multi(q_list, max_time) return result
def simulate(init_states, max_time=10): '''simulate the automaton from each initial rect''' q_list = init_list_to_q_list(init_states, center=True, star=True, corners=True, rand=100) result = sim.simulate_multi(q_list, max_time) return result
def simulate_multi_trajectory_time(ha, mode_names, points, time, min_steps=100, max_jumps=500, solver='vode'): '''simulates a hybrid automaton from a list of modes/points to a maximum time, with a minimum number of intermediate steps (which determines a max step size). returns the trajectories, separated by '|', where each trajectory is a semi-colon separated list of mode_name,point_dim_0,point_dim_1, ... , point_dim_m ''' assert len(mode_names) == len(points) max_step = float(time) / float(min_steps) q_list = [] for i in xrange(len(mode_names)): mode = mode_names[i] point = points[i] q_list.append((ha.modes[mode], point)) res_list = simulate_multi(q_list, time, max_jumps=max_jumps, max_step=max_step, solver_name=solver) rv_list = [] for res in res_list: traj = [] for mode_sim in res['traces']: mode = mode_sim.mode_name points = mode_sim.points for point in points: point_dims = [str(d) for d in point] point_str = ",".join(point_dims) traj.append(mode + "," + point_str) rv_list.append(';'.join(traj)) return '|'.join(rv_list)