private double PriorityFromCost(double c)
        {
            TspSelectionRule selectionRule = SelectionRule;

            if (selectionRule == TspSelectionRule.Farthest)
            {
                return(0.0 - c);
            }
            return(c);
        }
 public InsertionTsp(IEnumerable <TNode> nodes, Func <TNode, TNode, double> cost, TspSelectionRule selectionRule = TspSelectionRule.Farthest)
 {
     Nodes               = nodes;
     Cost                = cost;
     SelectionRule       = selectionRule;
     tour                = new LinkedList <TNode>();
     tourNodes           = new Dictionary <TNode, LinkedListNode <TNode> >();
     insertableNodes     = new HashSet <TNode>();
     insertableNodeQueue = new PriorityQueue <TNode, double>();
     Clear();
 }