private Optimization prepareResponse(Population results) {
    Individual.Result result = results.get(0).getResult();

    List<OptimizedProduct> optimizedProductList = new ArrayList<>();
    List<OptimizedShop> optimizedShopList = new ArrayList<>();

    for (Integer i = 0; i < shopsList.size(); i++) {
      Shop shop = shopsList.get(i);
      optimizedShopList.add(new OptimizedShop(shop.getName(), shop.getDelivery()));
    }

    for (Integer i = 0; i < productList.size(); i++) {
      OptimizedProduct optimizedProduct =
          new OptimizedProduct(productList.get(i).getName(), result.productPriceMap.get(i));
      optimizedProductList.add(
          new OptimizedProduct(productList.get(i).getName(), result.productPriceMap.get(i)));
      optimizedShopList
          .get(result.productShopMap.get(i))
          .addProduct(optimizedProduct, result.productPriceMap.get(i));
    }

    return new Optimization(
        result.deliveryCost,
        result.purchasingCost,
        optimizedProductList,
        missedProductList,
        optimizedShopList);
  }
 private OptimizationParams mockOptimizationsMock() {
   List<Long> productsId = new ArrayList<>();
   productsId.add(new Long(340));
   productsId.add(new Long(341));
   productsId.add(new Long(342));
   productsId.add(new Long(343));
   productsId.add(new Long(344));
   productsId.add(new Long(345));
   return new OptimizationParams(productsId);
 }
 private void createProductListAndOffersMap() {
   productList = new ArrayList<>();
   offersMap = new HashMap<>();
   List<Long> productsId = optimizationParams.getProductsId();
   for (Long productId : productsId) {
     Product product = productRepository.findOne(productId);
     if (product != null) {
       List<Offer> offerList = offerRepository.findByIdProduct(productId);
       if (offerList.size() > 0) {
         productList.add(product);
         offersMap.put(product, offerList);
       } else {
         missedProductList.add(new MissedProduct(product.getName()));
       }
     } else {
       missedProductList.add(new MissedProduct("Id: " + productId));
     }
   }
 }
 private void createShopsList() {
   shopsList = new ArrayList<>();
   Set<Long> shopIdSet = new HashSet<>();
   for (Map.Entry<Product, List<Offer>> entry : offersMap.entrySet()) {
     List<Offer> offerList = entry.getValue();
     for (Offer offer : offerList) {
       shopIdSet.add(offer.getIdSklep());
     }
   }
   for (Long shopId : shopIdSet) {
     Shop shop = shopRepository.findOne(shopId);
     shopsList.add(shop);
   }
 }
 private void createShopsIndexesImage() {
   shopIndexImage = new HashMap<>();
   for (Integer i = 0; i < shopsList.size(); i++) {
     shopIndexImage.put(i, shopsList.get(i).getId());
   }
 }
 private void createProductIndexesImage() {
   productIndexImage = new HashMap<>();
   for (Integer i = 0; i < productList.size(); i++) {
     productIndexImage.put(i, productList.get(i).getId());
   }
 }