Beispiel #1
0
# Define constraints
ocp.initial_constraint('h-h_0', 'm')
ocp.initial_constraint('theta', 'rad')
ocp.initial_constraint('v-v_0', 'm/s')
ocp.initial_constraint('t', 's')
ocp.terminal_constraint('h-h_f', 'm')
ocp.terminal_constraint('theta-theta_f', 'rad')

ocp.scale(m='h', s='h/v', kg='mass', rad=1)

bvp_solver = beluga.BVPSolver('spbvp')

guess_maker = beluga.GuessGenerator('auto',
                                    start=[50000, 0, 4000, -89 * pi / 180],
                                    control_guess=[0],
                                    direction='forward',
                                    costate_guess=-0.1)

continuation_steps = beluga.ContinuationList()

continuation_steps.add_step('bisection') \
                .num_cases(101) \
                .const('h_f', 0) \
                .const('theta_f', 0.01*pi/180)

continuation_steps.add_step('bisection') \
                .num_cases(11) \
                .const('theta_f', 5.0*pi/180) \

beluga.add_logger(file_level=logging.DEBUG, display_level=logging.INFO)
Beispiel #2
0
ocp.initial_constraint('i + i_0', 'a')
ocp.initial_constraint('t', 's')
ocp.terminal_constraint('i - i_0', 'a')
ocp.terminal_constraint('t-1', 's')

ocp.path_constraint('u', 'v', lower='u_min', upper='u_max', activator='eps1', method='utm')

ocp.scale(a='i', v='u_max', s='1', H='L', o='L')

bvp_solver_indirect = beluga.BVPSolver('spbvp')

guess_maker_indirect = beluga.GuessGenerator(
    'auto',
    start=[-i_0/10],
    direction='forward',
    costate_guess=-0.1,
    control_guess=[0],
    use_control_guess=True,
    time_integrate=0.1
)


beluga.add_logger(file_level=logging.DEBUG, display_level=logging.INFO)

continuation_steps = beluga.ContinuationList()

continuation_steps.add_step('bisection') \
    .num_cases(5) \
    .const('i_0', i_0)

continuation_steps.add_step('bisection') \
Beispiel #3
0
                    activator='epsilon1',
                    method='utm')
ocp.path_constraint('u3',
                    'rad/s**2',
                    lower='u_min',
                    upper='u_max',
                    activator='epsilon1',
                    method='utm')

ocp.scale(rad=1, kg=1, s=1, m=1)

bvp_solver = beluga.BVPSolver('spbvp')

guess_maker = beluga.GuessGenerator('auto',
                                    start=[w0[0], w0[1], w0[2]],
                                    direction='forward',
                                    costate_guess=0.1,
                                    control_guess=[-0.1, -0.1, -0.1])

continuation_steps = beluga.ContinuationList()

continuation_steps.add_step('bisection') \
                .num_cases(21) \
                .const('w1_f', 0) \
                .const('w2_f', 0) \
                .const('w3_f', 0)

continuation_steps.add_step('bisection') \
                .num_cases(160, 'log') \
                .const('epsilon1', 1e-6)
ocp.initial_constraint('v - v_0', '1')
ocp.initial_constraint('mass - mass_0', '1')
ocp.initial_constraint('t', 's')
ocp.terminal_constraint('v - v_f', '1')
ocp.terminal_constraint('mass - mass_f', '1')

ocp.path_constraint('thrust', '1', lower='T_min', upper='T_max', activator='eps', method='epstrig')

ocp.scale(m=1, s=1, kg=1, rad=1, nd=1)

bvp_solver = beluga.BVPSolver('spbvp')

guess_maker = beluga.GuessGenerator(
    'auto',
    start=[h_0, v_0, mass_0],    # Starting values for states in order
    costate_guess=-0.0001,
    control_guess=[pi/3],
    time_integrate=0.1,
)

continuation_steps = beluga.ContinuationList()

continuation_steps.add_step() \
    .num_cases(3) \
    .const('v_f', 0)

continuation_steps.add_step() \
    .num_cases(3, spacing='log') \
    .const('mass_f', tar_mass_f)

continuation_steps.add_step() \
Beispiel #5
0
ocp.initial_constraint('x - x_0', 'ft')
ocp.initial_constraint('y - y_0', 'ft')
ocp.initial_constraint('s', 'ft')

ocp.terminal_constraint('x - x_f', 'ft')
ocp.terminal_constraint('y - y_f', 'ft')
ocp.terminal_constraint('s - s_f', 'ft')

ocp.scale(ft='s', rad=1)

bvp_solver = beluga.BVPSolver('spbvp')

guess_maker = beluga.GuessGenerator('auto',
                                    start=[0, 0],
                                    costate_guess=-0.1,
                                    time_integrate=1.1,
                                    control_guess=[0],
                                    use_control_guess=True)

continuation_steps = beluga.ContinuationList()

continuation_steps.add_step('bisection') \
                .num_cases(6) \
                .const('x_f', 1) \
                .const('y_f', 0) \
                .const('s_f', 1.1)

continuation_steps.add_step('bisection') \
                .num_cases(6) \
                .const('x_f', 1) \
                .const('y_f', 0) \
Beispiel #6
0
ocp.path_constraint('bank',
                    'rad',
                    lower='-bmax',
                    upper='bmax',
                    activator='eps',
                    method='utm')

ocp.scale(ft='theta*re', s='theta*re/v', slug='mass', rad=1)

bvp_solver = beluga.BVPSolver('spbvp')

guess_maker = beluga.GuessGenerator('auto',
                                    start=[(h_0 - h_f) * 0.5 + h_f, 1, 1,
                                           v_0 * 0.25, gam_0, psi_0],
                                    direction='forward',
                                    costate_guess=[
                                        -1.30487794e-07, -1.00000000e+00, 0,
                                        -5.71719036e-06, -7.16743700e-03, 0.
                                    ],
                                    control_guess=[18. / 180 * np.pi, 0],
                                    time_integrate=25)

continuation_steps = beluga.ContinuationList()

continuation_steps.add_step('bisection') \
    .num_cases(20) \
    .const('theta_0', 0) \
    .const('phi_0', 0) \

continuation_steps.add_step('bisection') \
    .num_cases(201) \
    .const('h_f', h_f) \