B1: СП(лес)=1.0 — НормС трактуется как скорость смещения по среднему лесу
Решение Виктора: СП(лес) 0.5→1.0. Прежняя таблица учитывала лес дважды (в НормС и в СП) — подросток 14 лет за 3 часа получал 2.55 км вместо реалистичных 5.1. Согласуется с априором ПСО (94% находок в 3 км): радиусы стали верхне-перцентилями, не медианой. - terrain_map пересчитан относительно среднего леса: лес/простой лес/поле/ луг/город = 1.0; сложный/густой лес 0.5; болото 0.4; горы/овраг 0.6; дорога/тропа 0.8; дефолт 1.0. - Контрольные точки тестов пересчитаны (6 шт: 1.92→3.84, 0.33→0.665, 2.43→2.7, 5.4→10.8, 13.5→15.0, stats 0.5→1.0) + операционный тест подростка 5.1 км. - settlement_score пока НЕ тронут — на обдумывание (Виктор). 193 passed.
This commit is contained in:
@@ -126,6 +126,10 @@ def get_terrain_coefficient(terrain: str) -> float:
|
||||
"""
|
||||
Get terrain movement coefficient (СП).
|
||||
|
||||
Семантика (согласовано с Виктором, B1-ревью 2026-09-09): НормС — скорость
|
||||
СМЕЩЕНИЯ потерявшегося по СРЕДНЕМУ лесу, поэтому СП=1.0 — средний лес.
|
||||
Отклонения от среднего леса режут/поднимают скорость относительно неё.
|
||||
|
||||
Args:
|
||||
terrain: Terrain type
|
||||
|
||||
@@ -133,32 +137,32 @@ def get_terrain_coefficient(terrain: str) -> float:
|
||||
Terrain coefficient (0.0 - 1.0)
|
||||
"""
|
||||
if not terrain:
|
||||
return 0.5
|
||||
return 1.0
|
||||
terrain_lower = terrain.lower()
|
||||
|
||||
terrain_map = {
|
||||
'лесная дорога': 0.8,
|
||||
'сложный лес': 0.25,
|
||||
'густой лес': 0.25,
|
||||
'простой лес': 0.5,
|
||||
'лес': 0.5,
|
||||
'сложный лес': 0.5,
|
||||
'густой лес': 0.5,
|
||||
'простой лес': 1.0,
|
||||
'лес': 1.0,
|
||||
'дорога': 0.8,
|
||||
'тропа': 0.8,
|
||||
'болото': 0.2,
|
||||
'поле': 0.9,
|
||||
'луг': 0.9,
|
||||
'болото': 0.4,
|
||||
'поле': 1.0,
|
||||
'луг': 1.0,
|
||||
'город': 1.0,
|
||||
'населённый пункт': 1.0,
|
||||
'горы': 0.3,
|
||||
'овраг': 0.3
|
||||
'горы': 0.6,
|
||||
'овраг': 0.6
|
||||
}
|
||||
|
||||
for key, value in terrain_map.items():
|
||||
if key in terrain_lower:
|
||||
return value
|
||||
|
||||
# Default for unknown terrain
|
||||
return 0.5
|
||||
# Default for unknown terrain: средний лес (как 'лес')
|
||||
return 1.0
|
||||
|
||||
|
||||
def get_diagnosis_coefficient(diagnosis_types) -> float:
|
||||
|
||||
Reference in New Issue
Block a user