public Solution(VrptwProblem problem) : base(problem)
 {
     for (int i = 0; i < problem.Customers.Count; ++i)
     {
         Genes[i] = new CustomerGene(problem.Customers[i]);
     }
     Routes = GenesToRoutes();
 }
        public override Chromosome RandomSolution(int geneNumber, IProblem problem)
        {
            VrptwProblem vrptwProblem = problem as VrptwProblem;
            List <int>   customers    = Enumerable.Range(0, geneNumber).ToList();

            customers.Shuffle();
            IGene[] genes = new IGene[geneNumber];
            for (int i = 0; i < geneNumber; ++i)
            {
                genes[i] = new CustomerGene(vrptwProblem.Customers[customers[i]]);
            }
            Solution solution = new Solution(vrptwProblem, genes);

            return(solution);
        }