/// <summary>
 /// Overloaded constructor
 /// </summary>
 /// <param name="data">Sample pool of cases in a datatable</param>
 /// <param name="seed">Random seed for replicability</param>
 /// <param name="indexer">Easting and northing column indexes for datatables</param>
 public RandomTourWithCentroidBase(DataTable data, int seed, EastingNorthingColumnIndexer indexer)
 {
     this.data = data;
     this.sampler = new DataTableRandomRowSampler(data, seed);
     this.indexer = indexer;
     CalculateCentroid(data, indexer);
 }
 /// <summary>
 /// Overloaded constructor
 /// </summary>
 /// <param name="data">Cases to sample from stored in a datatable</param>
 /// <param name="seed">Random seed so that sample order be replicated</param>
 public RandomTourRandomBase(DataTable data, int seed)
 {
     this.sampler = new DataTableRandomRowSampler(data, seed);
 }
 /// <summary>
 /// Constructor method
 /// </summary>
 /// <param name="seed">Random seed for replicability</param>
 /// <param name="indexer">Easting and northing column indexes for datatables</param>
 public RandomTourWithCentroidBase(int seed, EastingNorthingColumnIndexer indexer)
 {
     this.sampler = new DataTableRandomRowSampler(seed);
     this.indexer = indexer;
 }
 /// <summary>
 /// Overloaded constructor
 /// </summary>
 /// <param name="data">Sample pool of cases in a datatable</param>
 /// <param name="seed">Random seed for replicability</param>
 /// <param name="indexer">Easting and northing column indexes for datatables</param>
 public RandomTourWithSpecifiedBase(DataTable data, RandomTourArguments args)
 {
     this.data = data;
     this.sampler = new DataTableRandomRowSampler(data, args.Seed);
     this.indexer = args.Indexer;
 }