Перейти к содержанию

Примеры запуска Gymnasium сред

Ниже приведены короткие, запускаемые примеры для ключевых сред TensorAeroSpace на базе Gymnasium. Все примеры используют единый шаблон с корректным API reset() и step().

Общая подготовка

import numpy as np
import gymnasium as gym

from tensoraerospace.utils import generate_time_period
from tensoraerospace.signals.standard import unit_step

dt = 0.01
tp = generate_time_period(tn=20, dt=dt)
number_time_steps = len(tp)
reference_signals = np.reshape(
    unit_step(degree=5, tp=tp, time_step=10, output_rad=True),
    [1, -1]
)

Шаблон использования среды

env = gym.make(
    'ENV_ID',
    number_time_steps=number_time_steps,
    initial_state=INITIAL_STATE,
    reference_signal=reference_signals,
)

state, info = env.reset()
for _ in range(5):
    action = env.action_space.sample()
    state, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        break
env.close()

LinearLongitudinalF16-v0

env = gym.make(
    'LinearLongitudinalF16-v0',
    number_time_steps=number_time_steps,
    # По умолчанию state_space=["alpha", "q"], задаём начальное состояние под него
    initial_state=[[0], [0]],
    reference_signal=reference_signals,
)

state, info = env.reset()
for _ in range(5):
    action = env.action_space.sample()
    state, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        break
env.close()

LinearLongitudinalB747-v0

env = gym.make(
    'LinearLongitudinalB747-v0',
    number_time_steps=number_time_steps,
    # Полное начальное состояние модели: [u, w, q, theta]
    initial_state=[[0], [0], [0], [0]],
    reference_signal=reference_signals,
)

state, info = env.reset()
for _ in range(5):
    action = env.action_space.sample()
    state, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        break
env.close()

LinearLongitudinalF4C-v0

env = gym.make(
    'LinearLongitudinalF4C-v0',
    number_time_steps=number_time_steps,
    # state_space=['theta','q','alpha','V']
    initial_state=[[0], [0], [0], [0]],
    reference_signal=reference_signals,
)

state, info = env.reset()
for _ in range(5):
    action = env.action_space.sample()
    state, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        break
env.close()

LinearLongitudinalUAV-v0

env = gym.make(
    'LinearLongitudinalUAV-v0',
    number_time_steps=number_time_steps,
    # Полное начальное состояние модели: [u, w, q, theta]
    initial_state=[[0], [0], [0], [0]],
    reference_signal=reference_signals,
)

state, info = env.reset()
for _ in range(5):
    action = env.action_space.sample()
    state, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        break
env.close()

LinearLongitudinalX15-v0

env = gym.make(
    'LinearLongitudinalX15-v0',
    number_time_steps=number_time_steps,
    # Рекомендуем полное начальное состояние
    initial_state=[[0], [0], [0], [0]],
    reference_signal=reference_signals,
)

state, info = env.reset()
for _ in range(5):
    action = env.action_space.sample()
    state, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        break
env.close()

LinearLongitudinalELVRocket-v0

env = gym.make(
    'LinearLongitudinalELVRocket-v0',
    number_time_steps=number_time_steps,
    # Модель с 2 отслеживаемыми состояниями, используйте подходящее начальное состояние
    initial_state=[[0], [0]],
    reference_signal=reference_signals,
)

state, info = env.reset()
for _ in range(5):
    action = env.action_space.sample()
    state, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        break
env.close()

LinearLongitudinalMissileModel-v0

env = gym.make(
    'LinearLongitudinalMissileModel-v0',
    number_time_steps=number_time_steps,
    initial_state=[[0], [0]],
    reference_signal=reference_signals,
)

state, info = env.reset()
for _ in range(5):
    action = env.action_space.sample()
    state, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        break
env.close()

GeoSat-v0

env = gym.make(
    'GeoSat-v0',
    number_time_steps=number_time_steps,
    initial_state=[[0], [0], [0]],
    reference_signal=reference_signals,
)

state, info = env.reset()
for _ in range(5):
    action = env.action_space.sample()
    state, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        break
env.close()

ComSat-v0

env = gym.make(
    'ComSat-v0',
    number_time_steps=number_time_steps,
    initial_state=[[0], [0], [0]],
    reference_signal=reference_signals,
)

state, info = env.reset()
for _ in range(5):
    action = env.action_space.sample()
    state, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        break
env.close()