openaigym月球自杀性烧伤的模拟研究

2024-10-17 08:36:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想模拟suicide burn来学习和理解火箭着陆。OpenAI健身房已经有了一个LunarLander环境,用于训练强化学习代理。我正在使用这个环境来模拟python中的自杀式燃烧。我已经从这个环境的状态向量的前两个值中提取了坐标。根据这些数值,以y坐标为高度,我用这些方程计算了坠落着陆器的速度和加速度

velocity(v) = delta_y/ delta_t
acceleartion(a) = delta_v/delta_t

由于模拟是逐步递增的,时间差delta_t取1。找不到LunarLander的重力参数,我给了它一个默认值g=1。然后使用下面这个reddit comment的公式

altitude to start suicide burn = [ (current altitude)(acceleration of gravity) + (1/2)(current velocity)2 ] / (acceleration of engines)

我试着计算开始自杀性燃烧的高度。这是我完整的python代码。我只计划使用四个可能的操作中的两个操作0(不执行任何操作)和2(启动主机)。你知道吗

import gym
env = gym.make('LunarLander-v2')
env.seed(0)

g = 1
delta_t = 1
action = 0

state = env.reset()

# x0 = state[0]
y0 = state[1]
v0 = 0

for t in range(3000):
    state, reward, done, _  = env.step(action)
    y = state[1]
    if done or y <0:
        break
    v = (y-y0)/delta_t  # velocity
    a = (v - v0)/delta_t # acceleration

    # (altitude to start suicide burn) = [ (current altitude)(acceleration of gravity) + (1/2)(current velocity)2 ] / (acceleration of engines)
    alt_burn = [y*g+0.5*v*v]/a

    v0 = v
    y0 = y

    print(" y",round(y,5)," v",round(v,5)," a",round(a,5)," Alt_burn",round(alt_burn[0],5))

输出结果如下所示

 y 1.41542  v 0.00196  a 0.00196  Alt_burn 722.35767
 y 1.41678  v 0.00136  a -0.0006  Alt_burn -2362.78166
 y 1.41754  v 0.00076  a -0.0006  Alt_burn -2362.63867
 y 1.4177  v 0.00016  a -0.0006  Alt_burn -2362.43506
 y 1.41726  v -0.00044  a -0.0006  Alt_burn -2362.64046
 y 1.41622  v -0.00104  a -0.0006  Alt_burn -2359.03148
 y 1.41458  v -0.00164  a -0.0006  Alt_burn -2358.17355
 y 1.41233  v -0.00224  a -0.0006  Alt_burn -2353.50518
 y 1.40949  v -0.00284  a -0.0006  Alt_burn -2349.24118
 y 1.40605  v -0.00344  a -0.0006  Alt_burn -2343.51016
 y 1.40201  v -0.00404  a -0.0006  Alt_burn -2336.31535
 y 1.39737  v -0.00464  a -0.0006  Alt_burn -2329.04954

如果我们看海拔高度(y),它是一个非常小的值小于1.5,而计算出的开始自杀燃烧的海拔高度是非常高的。我怎样才能解决这个问题?你知道吗

在reddit的评论中,他们只提到了启动引擎,而不是结束引擎。有人知道动态关闭引擎的数学吗?你知道吗


Tags: ofenv环境currentaltdeltastatealtitude