Exemplo n.º 1
0
        public Solution Solve(KnapsackData data)
        {
            _data = data;
            long start   = DateTime.UtcNow.Millisecond;
            var  current = new BinarySolution(data.AvailableItems.Count);
            var  best    = current;

            current.UpdateFitness(data, Alpha);

            while (_temperature > _endingTemperature)
            {
                for (var m = 0; m < _samplingSize; m++)
                {
                    current = GetNextState(current);
                    if (current.Fitness < best.Fitness)
                    {
                        best = current;
                    }
                }

                Cool();
            }

            long end        = DateTime.UtcNow.Millisecond;
            var  pickedItem = GenerateSolution(data, best);

            return(new Solution(pickedItem, end - start));
        }
Exemplo n.º 2
0
        private BinarySolution GetNeighbour(BinarySolution current)
        {
            var mutated = new BinarySolution(current);
            var rnd     = new Random();
            var x       = rnd.Next(current.GetSize());

            mutated.Flip(x);
            mutated.UpdateFitness(_data, Alpha);
            return(mutated);
        }