이제 각 모델들을 테스트 하며 선발전에 참여할 모델들을 생성

AWS DeepRacer 모델 정리

모델명 주요 전략 / 특징 평균 속도 완주율 Best Lap 장점 한계점
pray14 중심선 유지 + 속도 보완 1.8~2.2 95% 8.2초 안정적 완주 커브에서 일부 off-track
pray14-safe-v1 조향 최소화, 완주율 최우선 1.2~1.8 100% 8.7초 안정성 최고, off-track 0% 속도가 낮아 랩타임 길어짐
pray14-smartcurve 커브 구간 감속 + 직선 가속 1.0~2.5 90% 8.1초 커브 안정성 강화 일부 커브에서 여전히 off-track
pray14-smartcurve-v2 smartcurve 개선 버전 1.0~2.5 90% 내외 8.0~8.1초 커브 인식 정확도 소폭 향상 고속 직선 안정성 낮음
pray16 중심선 + 속도 + 조향 균형 1.5~2.0 95% 7.9초 속도·조향 밸런스 양호 일부 구간에서 불안정
pray18 직선 가속 극대화 + 커브 감속 2.0~2.5 90% 7.6초 랩타임 단축 우수 완주율 하락, 오프트랙 증가
pray25 기존 전략 고속화 버전 2.0+ - - 목표: 속도 상승 결과 미기록
pray26 커브 안정성 보완형 - - 7.8초 속도/완주 균형 예상 커브에서 일부 이탈 보고
pray28 완주율 90%+ 목표 세팅 - 90%+ 7초대 목표 안정성 유지하며 랩타임 단축 결과 미확인
pray14-safe-v1 (재학습) safe-v1 재훈련, 안정성 유지 - 100% 8.7초 안정성 재확인 속도 개선 없음

pray14 모델 세팅

보상 함수 주요 구조

요소 설계 방식 효과
all_wheels_on_track 이탈 시 즉시 1e-3 안정성 확보
distance_from_center 중심 가까울수록 3.0까지 보상 최적 주행선 유도
speed 2.4 이상 시 보상 1.8배 고속 주행 유도 (핵심!)
steering 20도 이하일 때만 보상 강화 부드러운 조향 유도

보상 함수 코드

def reward_function(params):
all_wheels_on_track = params['all_wheels_on_track']
distance_from_center = params['distance_from_center']
track_width = params['track_width']
speed = params['speed']
steering = abs(params['steering_angle'])
if not all_wheels_on_track:
    return 1e-3

# 중심선 거리 보상
marker_1 = 0.1 * track_width
marker_2 = 0.25 * track_width
marker_3 = 0.4 * track_width

if distance_from_center <= marker_1:
    reward = 3.0
elif distance_from_center <= marker_2:
    reward = 2.0
elif distance_from_center <= marker_3:
    reward = 1.0
else:
    return 1e-3

# 속도 보상 (느리게 시작 가능, 고속 유도)
if speed >= 2.4:
    reward *= 1.8
elif speed >= 2.0:
    reward *= 1.3
elif speed >= 1.5:
    reward *= 1.1
else:
    reward *= 0.8

# 조향 보상 (부드러운 주행 유도)
if steering > 25:
    reward *= 0.8
elif steering > 20:
    reward *= 0.9
else:
    reward *= 1.1

return float(reward)

세팅

하이퍼파라미터


결과

image.png

image.png

pray14는 안전성이 높고 9초대 초반으로 들어와 이 코드로 보상값만 바꾸고 여러번 재학습 실행