Пример #1
0
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
Пример #2
0
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
Пример #3
0
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)
Пример #4
0
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)