protected void OnSolutionUpdated(BaseSolution <T> solution, int step)
 {
     if (SolutionUpdated != null)
     {
         SolutionUpdated(solution, step);
     }
 }
 protected void OnStepped(BaseSolution <T> solution, int step)
 {
     if (Stepped != null)
     {
         Stepped(solution, step);
     }
 }
 public bool IsBetterThan(BaseSolution <T> rhs)
 {
     return(mCost < rhs.Cost);
 }
 public virtual double GetDistanceSq2(BaseSolution <T> rhs)
 {
     throw new NotImplementedException();
 }
 public virtual double GetDistance2(BaseSolution <T> rhs)
 {
     return(System.Math.Sqrt(GetDistanceSq2(rhs)));
 }