Exemplo n.º 1
0
        public void cubing_FFD()
        {
            var testBoxes = new List <Box>(Boxes);

            foreach (var box in testBoxes)
            {
                var newAvailableOption = new List <Option>();
                box.availableOption = box.availableOption.OrderBy(o => o.x * o.y).Reverse().Take(2).ToList();
            }


            testBoxes = testBoxes.OrderBy(box => Math.Max(Math.Max(box.x * box.y, box.x * box.z), Math.Max(box.y * box.z, box.x * box.y))).Reverse().ToList();
            var testLoadUnit = new LoadUnit(loadUnit.x, loadUnit.y, loadUnit.z);

            loadUnits = new List <LoadUnit>();
            loadUnits.Add(testLoadUnit);

            foreach (var box in testBoxes)
            {
                var i = 0;
                while (!loadUnits[i].place_box(box))
                {
                    i = i + 1;
                    if (loadUnits.Count() < i + 1)
                    {
                        loadUnits.Add(new LoadUnit(loadUnit.x, loadUnit.y, loadUnit.z));
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void cubing()
        {
            var NoOfPallet = 1;
            var testBoxes  = new List <Box>(Boxes);

            testBoxes = testBoxes.OrderBy(box => box.x * box.y * box.z).Reverse().ToList();
            var testLoadUnit = new LoadUnit(loadUnit.x, loadUnit.y, loadUnit.z);

            loadUnits = new List <LoadUnit>();
            testLoadUnit.place_boxes(testBoxes);

            loadUnits.Add(testLoadUnit);

            while (loadUnits.Sum(loadUnit => loadUnit.PlacedBoxes.Count()) < Boxes.Count())
            {
                loadUnits  = new List <LoadUnit>();
                testBoxes  = new List <Box>(Boxes);
                NoOfPallet = NoOfPallet + 1;

                var splitedList = split(testBoxes, NoOfPallet);

                for (int i = 0; i < NoOfPallet; i++)
                {
                    var newLU = new LoadUnit(loadUnit.x, loadUnit.y, loadUnit.z);
                    loadUnits.Add(newLU);
                    testBoxes = splitedList[i].OrderBy(box => box.x * box.y * box.z).Reverse().ToList();
                    newLU.place_boxes(testBoxes);
                }
            }
        }