Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

高度奖励函数与新目标设置的问题 #37

Open
ASh-en opened this issue Apr 24, 2024 · 0 comments
Open

高度奖励函数与新目标设置的问题 #37

ASh-en opened this issue Apr 24, 2024 · 0 comments

Comments

@ASh-en
Copy link

ASh-en commented Apr 24, 2024

在heading任务中,新目标的设置与高度奖励函数可能存在一定的冲突,导致在训练好的模型出现恶化情况

# 在UnreachHeading类中
    self.increment_size = [0.2, 0.4, 0.6, 0.8, 1.0] + [1.0] * 10
    delta = self.increment_size[env.heading_turn_counts]
    delta_altitude = env.np_random.uniform(-delta, delta) * self.max_altitude_increment
    new_altitude = env.agents[agent_id].get_property_value(c.target_altitude_ft) + delta_altitude
# 随着heading_turn_counts的增大,delta_altitude的范围也会变大,导致new_altitude有大概率低于设置的安全海拔safe_altitude和,危险海拔danger_altitude
# 在AltitudeReward类中
    Pv = 0.
    if ego_z <= self.safe_altitude:
        Pv = -np.clip(ego_vz / self.Kv * (self.safe_altitude - ego_z) / self.safe_altitude, 0., 1.)
    PH = 0.
    if ego_z <= self.danger_altitude:
        PH = np.clip(ego_z / self.danger_altitude, 0., 1.) - 1. - 1.
    new_reward = Pv + PH
# 这会导致任务目标要求飞机维持在new_altitude,但是维持在这个高度会导致new_reward始终为负,
# 而保持航向的其他奖励又不足以弥补这个负奖励,所以我猜测飞机可能会避免到高转向数heading_turn_counts的状态,
# 这样避免碰到这种“必损”的任务要求。

我的训练过程也佐证了这一点,在经过一定训练后,平均奖励和平均转向数先是上升,当平均转向数大于5后,按200s计算,应该是有大量环境已经是由Timeout终结了,按情况后面平均转向数应该会逼近6的极限值,平均奖励应该是上升的。
但是在这之后,平均奖励与平均转向都开始下降(平均奖励几乎降为个位数,平均转向到还维持在4左右),我的分析是因为较好的模型使得大量环境能维持到长时间的状态,也就使得出现“必损”的任务要求的情况增大了,模型选择了某种止损的方法:“比如碰到该任务要求就直接选择以某种方法终止环境”,所有使得环境很难维持到Timeout。
我觉得这应该不是作者特意这么设计的,所以希望你们确认一下,谢谢!!!!

Jackory added a commit that referenced this issue Oct 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant