Ejemplo n.º 1
0
        public BinPackingGenetics(int problemNum, MutationOperator mutationOperator, CrossoverMethod method, SelectionMethod selectionMethod) : base(method, selectionMethod)
        {
            _mutationOperator = mutationOperator;
            CrosMethod        = method;
            string path = "";

            _volumes = new List <int>();
            switch (problemNum)
            {
            case 1: path = "Falkenauer_u120_00.txt"; break;

            case 2: path = "Falkenauer_u250_00.txt"; break;

            case 3: path = "Falkenauer_u500_00.txt"; break;

            case 4: path = "Falkenauer_u1000_00.txt"; break;
            }
            string[] inputArr = System.IO.File.ReadAllLines(path);

            var lines = inputArr.ToList();

            lines.Remove(lines.First()); // first line is n. no need for it in a list
            _containerCapacity = Int32.Parse(lines.First());
            lines.Remove(lines.First()); //
            foreach (var line in lines)
            {
                var volume = Int32.Parse(line);
                _volumes.Add(volume);
            }
            _lowerBound = (int)Math.Ceiling((decimal)(_volumes.Sum() / _containerCapacity));
            MaxFitness  = (uint)(_volumes.Count - _lowerBound);
            bpa         = new BinPackingAlgorithm(_volumes, _containerCapacity);
            _resultBins = new ObservableCollection <List <int> >();
        }
Ejemplo n.º 2
0
 public BinPackingGenetics(List <int> volumes, int containerCapacity, MutationOperator mutationOperator, CrossoverMethod method, SelectionMethod selectionMethod) : base(method, selectionMethod)
 {
     _mutationOperator  = mutationOperator;
     _volumes           = new List <int>(volumes);
     _containerCapacity = containerCapacity;
     _lowerBound        = (int)Math.Ceiling((decimal)(volumes.Sum() / _containerCapacity));
     bpa         = new BinPackingAlgorithm(_volumes, _containerCapacity);
     _resultBins = new ObservableCollection <List <int> >();
     MaxFitness  = (uint)(volumes.Count - _lowerBound);
     Alpha       = (int)MaxFitness / 2;
 }