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)); } } } }
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); } } }