/**
  * Sorts inventories by rating and returns these ratings.
  *
  * @param inventories inventories.
  * @return ratings.
  */
 public Map<String, Double> sortInventoriesByRelativity(
     int pathId, List<InventoryDto> inventories) {
   Map<RoadType, Double> pathMap = pathService.getRoadTypesWithPcts(pathId);
   final double averageSpeedCoeff =
       speedLimitsAnalyzer.getSpeedLimitsAverageCoeff(
           pathMap.get(RoadType.HIGHWAY_RURAL),
           pathMap.get(RoadType.HIGHWAY_URBAN),
           pathMap.get(RoadType.RESIDENTIAL));
   fillEngineHorsePowerMap(inventories);
   Map<String, Double> ratingMap = new HashMap<>();
   for (InventoryDto inventoryDto : inventories) {
     double delta = Math.abs(getInventoryHorsePowerCoeff(inventoryDto) - averageSpeedCoeff);
     ratingMap.put(inventoryDto.getId(), (1 - delta) * MAX_RATING);
   }
   Collections.sort(
       inventories,
       new Comparator<InventoryDto>() {
         @Override
         public int compare(InventoryDto o1, InventoryDto o2) {
           Double rating1 = ratingMap.get(o1.getId());
           Double rating2 = ratingMap.get(o2.getId());
           return rating2.compareTo(rating1);
         }
       });
   return ratingMap;
 }
 public double getAverageSpeed(int pathId) {
   Map<RoadType, Double> pathMap = pathService.getRoadTypesWithPcts(pathId);
   double averageSpeedLimit =
       SpeedLimitsAnalyzer.FREEWAY_RURAL_MAX * pathMap.get(RoadType.HIGHWAY_RURAL) / 100
           + SpeedLimitsAnalyzer.FREEWAY_URBAN_MAX * pathMap.get(RoadType.HIGHWAY_URBAN) / 100
           + SpeedLimitsAnalyzer.RESIDENTIAL_MAX * pathMap.get(RoadType.RESIDENTIAL) / 100;
   return averageSpeedLimit;
 }