- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想模拟suicide burn学习和理解火箭着陆。 OpenAIgym 已经有一个 LunarLander 环境,用于训练强化学习代理。我正在使用这个环境来模拟Python中的自杀烧伤。我已经从该环境的状态向量的前两个值中提取了坐标(x,y)
。根据这些值,将 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 评论中,他们只提到启动引擎,但没有提到结束它。有人知道动态终止引擎的数学原理吗?
最佳答案
您的代码有两个问题:
delta_t
根据 lunar_lander
source 应为 1.0/50.0
FPS = 50
#...
self.world.Step(1.0/FPS, 6*30, 2*30)
Box2D
documentation 表示典型的时间步长
# [...]Typically we use a time step of 1/60 of a
# second (60Hz) and 6 velocity/2 position iterations. This provides a
# high quality simulation in most game scenarios.
timeStep = 1.0 / 60
alt_burn = [y*g+0.5*v*v]/a
但在引擎的插入下,将 here 定义为
MAIN_ENGINE_POWER = 13.0
着陆器的质量未在 creation of the lander body 中指定,而是使用
env.lander.mass
我们可以发现质量为4.82
。鉴于此,发动机的正确加速度由1
alt_burn = (y * g + 0.5 * v*v) / (13.0 / env.lander.mass * 0.5)
如果我们运行经过上述修改的代码,
import gym
env = gym.make('LunarLander-v2')
env.seed(0)
g = 1.0
delta_t = 1.0/50.0
action = 0
state = env.reset()
y0 = state[1]
for t in range(3000):
state, reward, done, _ = env.step(action)
y = state[1]
v = (y - y0) / delta_t
y0 = y
if done or y < 0:
break
alt_burn = (y*g+0.5*v*v)/(13.0 / env.lander.mass * 0.5)
print(" y",round(y,5)," v",round(v,5)," Alt_burn",round(alt_burn,5))
我们对燃烧高度得到了更合理的答案:
y 1.41542 v 0.09797 Alt_burn 1.05242
y 1.41678 v 0.06799 Alt_burn 1.05158
y 1.41754 v 0.03799 Alt_burn 1.05097
y 1.4177 v 0.00799 Alt_burn 1.05057
y 1.41726 v -0.02201 Alt_burn 1.0504
y 1.41622 v -0.05202 Alt_burn 1.05045
y 1.41458 v -0.08202 Alt_burn 1.05073
y 1.41233 v -0.11202 Alt_burn 1.05123
y 1.40949 v -0.14202 Alt_burn 1.05194
y 1.40605 v -0.17202 Alt_burn 1.05289
y 1.40201 v -0.20202 Alt_burn 1.05405
y 1.39737 v -0.23202 Alt_burn 1.05544
y 1.39213 v -0.26203 Alt_burn 1.05705
y 1.38629 v -0.29202 Alt_burn 1.05887
...
y 0.56683 v -1.58312 Alt_burn 1.34863
y 0.53456 v -1.61311 Alt_burn 1.36025
y 0.5017 v -1.64311 Alt_burn 1.37209
y 0.46824 v -1.67311 Alt_burn 1.38416
y 0.43418 v -1.70311 Alt_burn 1.39644
y 0.39951 v -1.73311 Alt_burn 1.40895
y 0.36425 v -1.76311 Alt_burn 1.42168
y 0.32839 v -1.79311 Alt_burn 1.43463
y 0.29193 v -1.82311 Alt_burn 1.44781
y 0.25487 v -1.85311 Alt_burn 1.46121
y 0.2172 v -1.88311 Alt_burn 1.47483
y 0.17894 v -1.91311 Alt_burn 1.48867
y 0.14008 v -1.94311 Alt_burn 1.50274
y 0.10062 v -1.97311 Alt_burn 1.51702
y 0.06055 v -2.00311 Alt_burn 1.53154
y 0.01989 v -2.03311 Alt_burn 1.54626
自杀式燃烧的执行2现在很简单,我们只需要在着陆器低于燃烧高度时启动发动机,并在着陆器低于截止高度时停用发动机。
import gym
env = gym.make('LunarLander-v2')
env.seed(0)
g = 1.0
delta_t = 1.0/50.0
action = 0
state = env.reset()
y0 = state[1]
v0 = 0
cut_off = 0.01
for t in range(3000):
env.render()
state, reward, done, _ = env.step(action)
y = state[1]
v = (y - y0)/delta_t
if done or y < 0 or v == 0.001:
break
alt_burn = (y*g+0.5*v*v)/(13.0 / env.lander.mass * 0.5)
v0 = v
y0 = y
if y < alt_burn and y > cut_off:
action = 2
else:
action = 0
print(" y",round(y,5)," v",round(v,5)," Alt_burn",round(alt_burn,5))
着陆器将悬停猛击:
<小时/>1可耻的是,我找不到这个方程的来源。我拥有应用物理学学位,主修天体物理学,并且学习了超过 1000 小时的 KSP - 所以我绝对确定这个方程是正确的,但我一辈子都不记得我从哪里得到它。
2这种自杀式烧伤也称为hoverslam。 SpaceX 创造了这个术语,因为当猎鹰 9 号助推器着陆时,一台发动机在最小推力下产生的 TWR 大于 1.00,这意味着没有能力容纳 Apollo 任务使用的 Powered Descent。因此,只有瞬时悬停 - 因此悬停。
关于python - openai-gym 的 LunarLander 中的自杀烧伤模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59589776/
我收到以下错误:模块“openai”没有属性“ChatCompletion” 我检查了其他帖子。都在说升级OpenAI Python包或者升级Python。我都做了,但没有修复它。 Python:3.
我收到以下错误:模块“openai”没有属性“ChatCompletion” 我检查了其他帖子。都在说升级OpenAI Python包或者升级Python。我都做了,但没有修复它。 Python:3.
我有一个用例,非常需要来自 OpenAI API 的完全确定性响应。然而,玩弄温度似乎无法产生完全的决定论。 import openai openai.organization = "org-..."
OpenAI api 包含一个微调服务,将任务分为“提示”和“完成” https://platform.openai.com/docs/guides/fine-tuning 文档说准确度指标是根据完成
我通过openai的text-davinci-003可以正常返回对话信息,但是目前无法实现上下文关联功能。我搜索了一下,发现有一个“conversation_id”参数,但是添加该参数后,API返回“
我有一个用例,非常需要来自 OpenAI API 的完全确定性响应。然而,玩弄温度似乎无法产生完全的决定论。 import openai openai.organization = "org-..."
OpenAI api 包含一个微调服务,将任务分为“提示”和“完成” https://platform.openai.com/docs/guides/fine-tuning 文档说准确度指标是根据完成
我通过openai的text-davinci-003可以正常返回对话信息,但是目前无法实现上下文关联功能。我搜索了一下,发现有一个“conversation_id”参数,但是添加该参数后,API返回“
我想使用 openai.embeddings_utils import get_embeddings所以已经安装了openai Name: openai Version: 0.26.5 Summary
当我使用 GPT3 的 playground 时,我经常得到带有编号列表和段落格式的结果,如下所示: Here's what the above class is doing: 1. It creat
当我使用 GPT3 的 playground 时,我经常得到带有编号列表和段落格式的结果,如下所示: Here's what the above class is doing: 1. It creat
我想使用 openai.embeddings_utils import get_embeddings所以已经安装了openai Name: openai Version: 0.26.5 Summary
OpenAI/chat GPT也支持docx/pdf文件上传吗?。我想上传多个文件到openAI/chatGPT。我在https://platform.openai.com/docs/api-refe
openAI/chatGPT也支持docx/pdf文件上传吗? 我想上传多个文件到 openAI/chatGPT。我尝试了 https://platform.openai.com/docs/api-r
openAI/chatGPT也支持docx/pdf文件上传吗? 我想上传多个文件到 openAI/chatGPT。我尝试了 https://platform.openai.com/docs/api-r
如果我们查看环境的预览,它们会在右下角的动画中显示剧集的增加。 https://gym.openai.com/envs/CartPole-v1/ .是否有明确显示的命令? 最佳答案 我认为 Ope
是否有人从使用 text-embedding-ada-002 的 Azure OpenAI 嵌入部署中获得的结果与 OpenAI 的结果不同?相同的文本,相同的模型,结果在向量空间中相差相当远。 对于
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在学习gpt微调 我成功运行了这个命令:pip install --upgrade openai 我无法运行此命令:export OPENAI_API_KEY="sk-xxxxxxxxxxxxxx
如何解决Openai API 不断输出的问题,比如让gpt api 写一篇文章。如果内容中断,可以继续提问,从而继续输出以上内容。这在ChatGPT中很容易做到,但是Openai API加上上面的提示
我是一名优秀的程序员,十分优秀!