Esempio n. 1
0
    internal async Task <IEnumerable <Fuel> > GetCompanyCityFuelPrice(string company, string city)
    {
        ReadCSV cachedCSV = new ReadCSV();

        var cachedFuel = cachedCSV.Read();

        // cachedFuel.ForEach(x => System.Console.WriteLine(x.City));

        if (cachedFuel.Count > 0 && cachedFuel.First().EffectiveDate.AddDays(1) > DateTime.Today)
        {
            if (city != null)
            {
                return(cachedFuel.Where(f => f.City == city).ToList().OrderBy(o => o.City));
            }

            return(cachedFuel.OrderBy(o => o.City));
        }
        else
        {
            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var result = await client.PostAsync("https://www.bharatpetroleum.com/AjaxSmartFleetMap.aspx/SetSmartFleetMap", new StringContent("", Encoding.UTF8, "application/json"));

                var responseString = await result.Content.ReadAsStringAsync();

                JObject rss = JObject.Parse(responseString);

                JArray jArray = (JArray)rss.SelectToken("d");

                List <Fuel> fuel = jArray.Select(a => new Fuel
                {
                    Company       = "Bharat Petroleum",
                    City          = a.SelectToken("city").Value <string>(),
                    EffectiveDate = DateTime.ParseExact(a.SelectToken("effDate").Value <string>().Replace(" Hrs", ""), "dd-MM-yyyy hh:mm", CultureInfo.InvariantCulture),
                    FuelType      = ((JArray)a.SelectToken("productList")).Select(f => new FuelType
                    {
                        Type  = f.SelectToken("name").Value <string>(),
                        Price = f.SelectToken("rsp").Value <decimal?>()
                    }).ToList()
                })
                                   .ToList();

                if (city != null)
                {
                    fuel = fuel.Where(f => f.City == city).ToList();
                }

                WriteCSV csv = new WriteCSV();

                csv.Write(fuel);

                return(fuel.OrderBy(o => o.City));
            }
        }
    }
 private void Export()
 {
     try
     {
         WriteCSV writeCSV = new WriteCSV();
         writeCSV = _plcServices.FillCSV(plc, data);
         var param = _plcServices.GetCSVData((uint)writeCSV.Meters, (ushort)writeCSV.FabricationOrder, (uint)writeCSV.ActualRPM, (ushort)writeCSV.CreelPosition, (uint)writeCSV.ActualTPM, (ushort)writeCSV.Mmin, (uint)writeCSV.Hores, (uint)writeCSV.Minutes);
         _plcServices.SaveCSV(param, path);
     }
     catch (Exception)
     {
         ShowDialog(" PLC connection not found ");
     }
 }
Esempio n. 3
0
        private void buttonLuoExcel_Click(object sender, RoutedEventArgs e)
        {
            labelFileCreated.Content = "";

            if (DatePickerStart.SelectedDate >= DatePickerEnd.SelectedDate)
            {
                labelEndDateTooLow.Content = "Loppu pvm pitää olla suurempi kuin alku pvm";
            }
            else if (listBoxPlaces.Items.Count == 0)
            {
                labelNoPlacesError.Content = "Vähintään yksi paikka pitää olla annettu";
            }
            else if (labelTotalDays.Content.ToString() != "" || DatePickerStart.SelectedDate == null || DatePickerEnd.SelectedDate == null)
            {
                labelNoPlacesError.Content = "Tarkista päivämäärät";
            }
            else
            {
                labelEndDateTooLow.Content = "";
                labelNoPlacesError.Content = "";

                labelFileCreated.Content = "Luodaan tiedostoa...";

                string[] places = new string[listBoxPlaces.Items.Count];

                for (int i = 0; i < listBoxPlaces.Items.Count; i++)
                {
                    places[i] = listBoxPlaces.Items.GetItemAt(i).ToString();
                }

                string file = FileDialog.AskFile(places, Convert.ToDateTime(DatePickerStart.SelectedDate), Convert.ToDateTime(DatePickerEnd.SelectedDate));



                string[] urls = ParseUrl.GetUrl(textBoxAPIKey.Text, Convert.ToDateTime(DatePickerStart.SelectedDate), Convert.ToDateTime(DatePickerEnd.SelectedDate), places, textBoxTimeStep.Text);

                List <Temperature> measurements = new List <Temperature>();


                //measurements = ReadData.ReadTemperature(measurements, urls);
                ReadData.ReadTemperature(measurements, urls);


                WriteCSV.Write(measurements, file);

                labelFileCreated.Content = "Tiedosto luotu";
            }
        }
        public WriteCSV FillCSV(Plc plc, RDBTeufelberger data)
        {
            WriteCSV   model       = new WriteCSV();
            PLCMethods _plcMethods = new PLCMethods();

            model.FabricationOrder = _plcMethods.FillInt(plc, data.CodeOrder);
            model.CreelPosition    = _plcMethods.FillInt(plc, data.CodePosition);
            model.Meters           = _plcMethods.FillInt(plc, data.CodeMeters);
            model.ActualRPM        = _plcMethods.FillFloat(plc, data.CodeRPM);
            model.ActualTPM        = _plcMethods.FillFloat(plc, data.CodeTPM);
            model.Cartoiculo       = _plcMethods.FillString(plc, data.ArticleDB, data.ArticlePosition, data.ArticleLenght);
            model.Minutes          = _plcMethods.FillDoule(plc, data.CodeMinutes);
            model.Hores            = _plcMethods.FillDoule(plc, data.CodeHours);

            return(model);
        }
Esempio n. 5
0
        private void Save_Click(object sender, EventArgs e)
        {
            string[] msg;
            WriteCSV escritor = new WriteCSV();

            if (ssl.Checked == true)
            {
                msg = new string[] { Server.Text + ";" + lSMTP.Text + ";" + pSMTP.Text + ";" + lPOP.Text + ";" + pPOP.Text + ";Y;" }
            }
            ;
            else
            {
                msg = new string[] { Server.Text + ";" + lSMTP.Text + ";" + pSMTP.Text + ";" + lPOP.Text + ";" + pPOP.Text + ";N;" }
            };

            escritor.WriteToCSV(msg);
        }
Esempio n. 6
0
        public void TestMethodVersion1Dat()
        {
            ArrayList exoplanetArray = null;

            ReadCSV.Read(Constant.UnitTestDATFolder + "Version1.dat");
            exoplanetArray = ReadXML.Read(Constant.UnitTestDATFolder + "Version1.xml", true);
            WriteCSV.Write(Constant.UnitTestDATFolder + "Version1TestResults.dat", exoplanetArray, Constant.Version2);

            ArrayList exoplanetArray2 = null;

            ReadCSV.Read(Constant.UnitTestDATFolder + "Version1TestResults.dat");
            exoplanetArray2 = ReadXML.Read(Constant.UnitTestDATFolder + "Version1TestResults.xml", true);

            Assert.IsNotNull(exoplanetArray);
            Assert.IsNotNull(exoplanetArray2);
            Assert.AreEqual(exoplanetArray.Count, exoplanetArray2.Count);
            Assert.AreEqual(Exoplanets.AreEqual(exoplanetArray, exoplanetArray2), true);
        }
        public static Solution newPackAlternate(List <Item> items, Container container, List <PotentialPoint> potentialPointsSx, List <PotentialPoint> potentialPointsDx)
        {
            List <Item>    res   = new List <Item>();
            List <Item>    retry = new List <Item>();
            PotentialPoint cp    = new PotentialPoint(0, 0, 0, container.getWidth(), container.getHeight(), container.getDepth());

            PotentialPoint.addPointToPotentialPoints(cp, potentialPointsSx);

            PotentialPoint cp2 = new PotentialPoint(container.getWidth(), 0, 0, container.getWidth(), container.getHeight(), container.getDepth());

            PotentialPoint.addPointToPotentialPoints(cp2, potentialPointsDx);

            double minHeight = Functions.getSmallestHeight(items);

            /*Add this method somewhere else, or make GroupItems work properly so you don't need this calculation here*/
            List <Item> zeroPriorityList = new List <Item>();
            List <Item> onePriorityList = new List <Item>();
            List <Item> otherPriorityList = new List <Item>();
            int         countZeroPriority = 0, countOnePriority = 0, countOtherPriority = 0, loadedCount = 0;

            foreach (Item i in items)
            {
                if (i.getPriority() == 0)
                {
                    zeroPriorityList.Add(i);
                    countZeroPriority++;
                }
                else if (i.getPriority() == 1)
                {
                    onePriorityList.Add(i);
                    countOnePriority++;
                }
                else
                {
                    otherPriorityList.Add(i);
                    countOtherPriority++;
                }
            }

            zeroPriorityList = zeroPriorityList
                               .OrderBy(i => i.getCustomer())
                               .ThenByDescending(i => i.getTaxability())
                               .ToList();

            onePriorityList = onePriorityList
                              .OrderBy(i => i.getCustomer())
                              .ThenByDescending(i => i.getTaxability())
                              .ToList();

            foreach (Item i in zeroPriorityList)
            {
                double r = StaticRandom.NextDouble();
                if (r < 0.5)
                {
                    if (container.checkAddItemRevisited(i, potentialPointsSx, minHeight))
                    {
                        container.addItem(i);
                        res.Add(i);
                        loadedCount += 1;
                    }
                    else
                    {
                        retry.Add(i);
                    }
                }
                else
                {
                    if (container.checkAddItemRevisitedRight(i, potentialPointsDx, minHeight))
                    {
                        container.addItem(i);
                        res.Add(i);
                        loadedCount += 1;
                    }
                    else
                    {
                        retry.Add(i);
                    }
                }
            }

            WriteCSV.WriteList(items);

            foreach (Item i in onePriorityList)
            {
                double r = StaticRandom.NextDouble();
                if (r < 0.5)
                {
                    if (!(res.Contains(i)) && !(i.checkSlimItem()) && (container.checkAddItemRevisited(i, potentialPointsSx, minHeight)))
                    {
                        container.addItem(i);
                        res.Add(i);
                    }
                    else
                    {
                        retry.Add(i);
                    }
                }
                else
                {
                    if (!(res.Contains(i)) && !(i.checkSlimItem()) && (container.checkAddItemRevisitedRight(i, potentialPointsDx, minHeight)))
                    {
                        container.addItem(i);
                        res.Add(i);
                    }
                    else
                    {
                        retry.Add(i);
                    }
                }
            }

            foreach (Item i in retry)
            {
                if (!(res.Contains(i)) && (container.checkAddItemRevisited(i, potentialPointsSx, minHeight)))
                {
                    container.addItem(i);
                    res.Add(i);
                }
            }



            foreach (Item i in otherPriorityList)
            {
                double r = StaticRandom.NextDouble();
                if (r < 0.5)
                {
                    if (!(res.Contains(i)) && !(i.checkSlimItem()) && (container.checkAddItemRevisited(i, potentialPointsSx, minHeight)))
                    {
                        container.addItem(i);
                        res.Add(i);
                    }
                    else
                    {
                        retry.Add(i);
                    }
                }
                else
                {
                    if (!(res.Contains(i)) && !(i.checkSlimItem()) && (container.checkAddItemRevisitedRight(i, potentialPointsDx, minHeight)))
                    {
                        container.addItem(i);
                        res.Add(i);
                    }
                    else
                    {
                        retry.Add(i);
                    }
                }
            }

            // IMPORTANT for feasbility check
            //        container.loadedItemsInZone(res);
            List <PotentialPoint> potentialPoints = potentialPointsSx;

            foreach (PotentialPoint s in potentialPointsDx)
            {
                potentialPoints.Add(s);
            }
            Solution sol = new Solution(res, container, potentialPoints);


            /*Print for test best solution*/
            double myResult, upperBound;

            myResult   = Functions.objFunction(res);
            upperBound = Functions.objFunction(items);

            /*        System.err.println("ALT: Result: " + (int)((myResult/upperBound)*100) + "%, " + "" + sol.zoneWeightFeasibility(container) +
             *              ", obstacles: " +  sol.checkUnloadingOrderFeasibilityWithCounter() +
             *              ", taxability: " + sol.getTotalTaxability() +
             *              ", Weight: " + sol.getLoadedWeight() + ", Vol: " + sol.getVolumeOccupied() +
             *              ", x deviation: " + Utils.Functions.dev_x(res, container));*/

            return(sol);
        }
        /**
         *
         * @param items
         * @param container
         * @param potentialPoints
         * @return
         * @throws IOException
         */
        public static Solution divideEtPack(List <Item> items, Container container, List <PotentialPoint> potentialPoints)
        {
            List <Item>    res   = new List <Item>();
            List <Item>    retry = new List <Item>();
            PotentialPoint cp    = new PotentialPoint(0, 0, 0, container.getWidth(), container.getHeight(), container.getDepth());

            PotentialPoint.addPointToPotentialPoints(cp, potentialPoints);

            PotentialPoint cp2 = new PotentialPoint(container.getWidth(), 0, 0, container.getWidth(), container.getHeight(), container.getDepth());

            PotentialPoint.addPointToPotentialPoints(cp2, potentialPoints);

            double minHeight = Functions.getSmallestHeight(items);

            /*Add this method somewhere else, or make GroupItems work properly so you don't need this calculation here*/
            List <Item> itemPriorityZero = new List <Item>();

            foreach (Item i in items)
            {
                if (i.getPriority() == 0)
                {
                    itemPriorityZero.Add(i);
                }
            }

            int sizePriorityZero = itemPriorityZero.Count;
            int count            = 0;


            itemPriorityZero.Sort((x, y) =>
            {
                if (x.getVolume() > y.getVolume())
                {
                    return(1);
                }
                else if (x.getVolume() == y.getVolume())
                {
                    return(0);
                }

                return(-1);
            });

            foreach (Item i in itemPriorityZero)
            {
                if (container.checkAddItemRevisited(i, potentialPoints, minHeight))
                {
                    container.addItem(i);
                    res.Add(i);
                    count += 1;
                }
                else
                {
                    retry.Add(i);
                }
            }

            WriteCSV.WriteList(items);

            double rnd = StaticRandom.NextDouble();

            if (rnd > 0.5)
            {
                items.Sort((x, y) =>
                {
                    if (x.getTaxability() > y.getTaxability())
                    {
                        return(-1);
                    }
                    else if (x.getTaxability() == y.getTaxability())
                    {
                        return(0);
                    }

                    return(1);
                });
            }
            else
            {
                items.Sort((x, y) =>
                {
                    if (x.getVolume() > y.getVolume())
                    {
                        return(-1);
                    }
                    else if (x.getVolume() == y.getVolume())
                    {
                        return(0);
                    }

                    return(1);
                });
            }

            double nRnd = StaticRandom.NextDouble();

            if (nRnd < 0.3)
            {
                items = Functions.taxabilityRandomization(items);
            }
            else if (nRnd >= 0.3 && nRnd < 0.6)
            {
                //items = Functions.sweetRandomization(items);
                items = Functions.probWeightRandomization(items);
            }
            else if (nRnd >= 6)
            {
                items = Functions.similarityVolumeRandomization(items);
            }
            items = Functions.sweetRandomization(items);
            //        items = Functions.taxabilityRandomization(items);
            items = Functions.probWeightRandomization(items);
            //        items = Functions.similarityVolumeRandomization(items);

            foreach (Item i in items)
            {
                if (!(res.Contains(i)) && !(i.checkSlimItem()) && (container.checkAddItemRevisited(i, potentialPoints, minHeight)))
                {
                    container.addItem(i);
                    res.Add(i);
                }
                else
                {
                    retry.Add(i);
                }
            }



            foreach (Item i in retry)
            {
                double mRnd = StaticRandom.NextDouble();
                if (mRnd < 0.3)
                {
                    potentialPoints.Sort((x, y) =>
                    {
                        if (x.getX() > y.getX())
                        {
                            return(-1);
                        }
                        else if (x.getX() == y.getX())
                        {
                            return(0);
                        }

                        return(1);
                    });
                }
                else if (mRnd >= 0.3 && nRnd < 0.6)
                {
                    potentialPoints.Sort((x, y) =>
                    {
                        if (x.getZ() > y.getZ())
                        {
                            return(1);
                        }
                        else if (x.getZ() == y.getZ())
                        {
                            return(0);
                        }

                        return(-1);
                    });
                }
                else if (mRnd >= 6)
                {
                    //                potentialPoints.sort(Comparator.comparing(PotentialPoint::getY));
                    potentialPoints.Sort((x, y) =>
                    {
                        if (x.getUsableSpace() > y.getUsableSpace())
                        {
                            return(1);
                        }
                        else if (x.getUsableSpace() == y.getUsableSpace())
                        {
                            return(0);
                        }

                        return(-1);
                    });
                }

                if (!(res.Contains(i)) && (container.checkAddItemRevisited(i, potentialPoints, minHeight)))
                {
                    container.addItem(i);
                    res.Add(i);
                }
            }


            // IMPORTANT for feasbility check
            //        container.loadedItemsInZone(res);
            Solution sol = new Solution(res, container, potentialPoints);


            /*Print for test best solution*/
            double myResult, upperBound;

            myResult   = Functions.objFunction(res);
            upperBound = Functions.objFunction(items);
            Console.WriteLine("N: Result: " + (int)((myResult / upperBound) * 100) + "%, " + "" + sol.zoneWeightFeasibility(container) +
                              ", items obstacling: " + sol.checkUnloadingOrderFeasibilityWithCounter() + ", Weight: " +
                              sol.getLoadedWeight() + ", Vol: " + sol.getVolumeOccupied());

            return(sol);
        }
        /**
         *
         * @param items
         * @param container
         * @param potentialPointsSx
         * @param potentialPointsDx
         * @return
         * @throws IOException
         * @throws ParseException
         */
        public static Solution[] multiRunSolution(List <Item> items, Container container, List <PotentialPoint> potentialPointsSx, List <PotentialPoint> potentialPointsDx)
        {
            List <Solution> solutions = new List <Solution>();

            Solution[] results        = new Solution[4];
            int        times          = Configuration.TIMES_MULTIRUN;
            int        reading_method = Configuration.READING_MULTIITEM_METHOD;

            for (int i = 0; i < times; i++)
            {
                if (reading_method == 0)
                {
                    items = ReadCSV.readFromCSV();
                }
                else
                {
                    items = ReadCSV.readFromCSVNoMultipleItems();
                }

                potentialPointsSx = new List <PotentialPoint>();
                potentialPointsDx = new List <PotentialPoint>();
                container         = new Container(Configuration.CONTAINER_WIDTH, Configuration.CONTAINER_HEIGHT, Configuration.CONTAINER_DEPTH, Configuration.CONTAINER_MAX_WEIGHT, Configuration.CONTAINER_UNLOADABLE_FROM_SIDE);
                if (packingMethod == 1)
                {
                    solutions.Add(divideEtPack(items, container, potentialPointsSx));
                }
                else if (packingMethod == 2)
                {
                    solutions.Add(divideEtPackAlternate(items, container, potentialPointsSx, potentialPointsDx));
                }
                else if (packingMethod == 3)
                {
                    solutions.Add(newPackAlternate(items, container, potentialPointsSx, potentialPointsDx));
                }
            }

            WriteCSV.WriteAllSol(solutions);

            solutions.Sort((x, y) =>
            {
                if (y.getTotalTaxability() > x.getTotalTaxability())
                {
                    return(1);
                }
                else if (y.getTotalTaxability() == x.getTotalTaxability())
                {
                    return(0);
                }

                return(-1);
            });
            List <Solution> paretSolTax = Functions.paretoFrontTaxabilityObstacles(solutions);

            //        WriteCSV.writePareto(paretSolTax);

            bestTaxability = solutions[0];
            results[0]     = bestTaxability;
            foreach (Solution s in paretSolTax)
            {
                container.unloadEverything();
                container.loadedItemsInZone(s.getItemsPacked());
                //            System.err.println(s.getItemsPacked().size());
                if ((s.getTotalTaxability() >= bestTaxability.getTotalTaxability()) && s.zoneWeightFeasibility(container))
                {
                    bestTaxability = new Solution(s.getItemsPacked(), container, s.getPotentialPoints());
                    results[0]     = bestTaxability;
                }
            }
            res = solutions[0];

            lessObstacles = solutions[0];


            return(results);
        }
        /**
         *
         * @param items
         * @param container
         * @param potentialPointsSx
         * @param potentialPointsDx
         * @return
         * @throws IOException
         */
        public static Solution divideEtPackAlternate(List <Item> items, Container container, List <PotentialPoint> potentialPointsSx, List <PotentialPoint> potentialPointsDx)
        {
            List <Item>    res   = new List <Item>();
            List <Item>    retry = new List <Item>();
            PotentialPoint cp    = new PotentialPoint(0, 0, 0, container.getWidth(), container.getHeight(), container.getDepth());

            PotentialPoint.addPointToPotentialPoints(cp, potentialPointsSx);

            PotentialPoint cp2 = new PotentialPoint(container.getWidth(), 0, 0, container.getWidth(), container.getHeight(), container.getDepth());

            PotentialPoint.addPointToPotentialPoints(cp2, potentialPointsDx);

            double minHeight = Functions.getSmallestHeight(items);

            /*Add this method somewhere else, or make GroupItems work properly so you don't need this calculation here*/
            List <Item> itemPriorityZero = new List <Item>();

            foreach (Item i in items)
            {
                if (i.getPriority() == 0)
                {
                    itemPriorityZero.Add(i);
                }
            }

            int sizePriorityZero = itemPriorityZero.Count;
            int count            = 0;


            itemPriorityZero.Sort((x, y) =>
            {
                if (x.getVolume() > y.getVolume())
                {
                    return(1);
                }
                else if (x.getVolume() > y.getVolume())
                {
                    return(0);
                }

                return(-1);
            });

            foreach (Item i in itemPriorityZero)
            {
                double r = StaticRandom.NextDouble();
                if (r < 0.5)
                {
                    if (container.checkAddItemRevisited(i, potentialPointsSx, minHeight))
                    {
                        container.addItem(i);
                        res.Add(i);
                        count += 1;
                    }
                    else
                    {
                        retry.Add(i);
                    }
                }
                else
                {
                    if (container.checkAddItemRevisitedRight(i, potentialPointsDx, minHeight))
                    {
                        container.addItem(i);
                        res.Add(i);
                        count += 1;
                    }
                    else
                    {
                        retry.Add(i);
                    }
                }
            }

            WriteCSV.WriteList(items);

            double rnd = StaticRandom.NextDouble();

            //double rnd = 0.6;
            if (rnd > 0.5)
            {
                items = items.OrderByDescending(i => i.getTaxability())
                        .ThenBy(i => i.getPriority())
                        .ThenBy(i => i.getId())
                        .ToList();
            }
            else
            {
                items = items
                        .OrderByDescending(i => i.getVolume())
                        .ToList();
            }

            double nRnd = StaticRandom.NextDouble();

            //double nRnd = 0.5;
            if (nRnd < 0.3)
            {
                items = Functions.taxabilityRandomization(items);
            }
            else if (nRnd >= 0.3 && nRnd < 0.6)
            {
                //items = Functions.sweetRandomization(items);
                items = Functions.probWeightRandomization(items);
            }
            else if (nRnd >= 6)
            {
                items = Functions.similarityVolumeRandomization(items);
            }

            foreach (Item i in items)
            {
                double r = StaticRandom.NextDouble();
                //double r = 0.4;
                if (r < 0.5)
                {
                    if (!(res.Contains(i)) && !(i.checkSlimItem()) && (container.checkAddItemRevisited(i, potentialPointsSx, minHeight)))
                    {
                        container.addItem(i);
                        res.Add(i);
                    }
                    else
                    {
                        retry.Add(i);
                    }
                }
                else
                {
                    if (!(res.Contains(i)) && !(i.checkSlimItem()) && (container.checkAddItemRevisitedRight(i, potentialPointsDx, minHeight)))
                    {
                        container.addItem(i);
                        res.Add(i);
                    }
                    else
                    {
                        retry.Add(i);
                    }
                }
            }

            foreach (Item i in retry)
            {
                if (!(res.Contains(i)) && (container.checkAddItemRevisited(i, potentialPointsSx, minHeight)))
                {
                    container.addItem(i);
                    res.Add(i);
                }
            }

            List <PotentialPoint> potentialPoints = potentialPointsSx;

            foreach (PotentialPoint s in potentialPointsDx)
            {
                potentialPoints.Add(s);
            }
            Solution sol = new Solution(res, container, potentialPoints);


            /*Print for test best solution*/
            double myResult, upperBound;

            myResult   = Functions.objFunction(res);
            upperBound = Functions.objFunction(items);

            /*
             *      System.err.println("ALT: Result: " + (int)((myResult/upperBound)*100) + "%, " + "" + sol.zoneWeightFeasibility(container) +
             *              ", obstacles: " +  sol.checkUnloadingOrderFeasibilityWithCounter() +
             *              ", Weight: " + sol.getLoadedWeight() + ", Vol: " + sol.getVolumeOccupied() +
             *              ", x deviation: " + Utils.Functions.dev_x(res, container));
             */

            if (count < sizePriorityZero)
            {
                //System.err.println("Not all p0 packed!");
                List <Item> i = new List <Item>();
                Solution    s = new Solution(i, container, potentialPoints);
                return(s);
            }
            else
            {
                return(sol);
            }
        }
        public void Ported()
        {
            int         reading_method = Configuration.READING_MULTIITEM_METHOD;
            List <Item> items;

            if (reading_method == 0)
            {
                items = ReadCSV.readFromCSV();
            }
            else
            {
                items = ReadCSV.readFromCSVNoMultipleItems();
            }


            List <Item>           comparison;
            List <PotentialPoint> potentialpointsSx = new List <PotentialPoint>();
            List <PotentialPoint> potentialpointsDx = new List <PotentialPoint>();

            WriteCSV.WriteFullItemListWithID(items);

            /*TO CREATE NEW INSTANCES*/
            //        InstanceCreator.writeInstance();

            double upper_bound;

            upper_bound = Functions.objFunction(items);
            //Console.WriteLine(upper_bound);

            //WriteCSV.writeList(items);

            // furgonato
            Container c = new Container(Configuration.CONTAINER_WIDTH, Configuration.CONTAINER_HEIGHT, Configuration.CONTAINER_DEPTH, Configuration.CONTAINER_MAX_WEIGHT, Configuration.CONTAINER_UNLOADABLE_FROM_SIDE);


            List <Item> items1;

            Solution[] solution = Solver.multiRunSolution(items, c, potentialpointsSx, potentialpointsDx);
            //Console.WriteLine(solution.Length);


            Solution sol = solution[0];

            items1 = sol.getItemsPacked();

            WriteCSV.WriteItemPositionForVisualization(items1);
            WriteCSV.WriteOutpoutDescription(items1);


            double myResult;

            myResult = Functions.objFunction(items1);

            double x, y, z;

            x = Functions.dev_x(items1, c);
            y = Functions.dev_y(items1, c);
            //        z = Util.Functions.dev_z(items1, c);


            c.loadedItemsInZone(items1);

            double weightMax;

            weightMax = Functions.totalWeightOfItems(items);

            List <Item> unpackedItems         = Functions.getUnpackedItems(items, items1);
            int         priority1leftUnpacked = Functions.itemsPriorityOneUnpacked(unpackedItems);
            int         priority0leftUnpacked = Functions.itemsPriorityZeroUnpacked(unpackedItems);

            bool   feasible           = sol.zoneWeightFeasibility(c);
            double companyBound       = ReadCSV.getCompanyBound();
            double companyTotVol      = ReadCSV.getCompanyTotVol();
            double companyTotWeight   = ReadCSV.getCompanyTotWeight();
            int    companyItemsPacked = ReadCSV.getCompanyItemsPacked();

            /*        System.err.println("Company bound: " + companyBound);
             *      System.err.println("My_bound: " + myResult);
             *      System.err.println("---------------------------------");*/
            Console.WriteLine("Performance : " + Functions.round((myResult / companyBound * (100)), 2) + " %");

            //Console.WriteLine("Read: " + StopwatchTimer.GetElapsedMillisecondsAndReset("read"));
            //Console.WriteLine("Write: " + StopwatchTimer.GetElapsedMillisecondsAndReset("write"));
            //Console.WriteLine("Sort: " + StopwatchTimer.GetElapsedMillisecondsAndReset("sort"));
            //Console.WriteLine("Add: " + StopwatchTimer.GetElapsedMillisecondsAndReset("add"));
            //Console.WriteLine("Pack: " + StopwatchTimer.GetElapsedMillisecondsAndReset("pack"));
        }