function [Tour weight] = TSPCheapestInsertion(W,start) %[Tour weight] = TSPCheapestInsertion(W,start) %Program for the nearest insertion heuristic for the traveling salesman %problem. %Inputs: the price matrix W for a traveling salesman problem. Optional %second input variable start allows the user to prescribe the vertex number %for the start of the tour. %Outputs: A vector Tour containing a tour and its associated weight using the %nearest insertion heuristic. %Set start to default value 1 if not specified if nargin < 2, start =1; end [n m] = size(W);%n = m = number of vertices %Initialize Tour and vector of unused vertices Tour=[start]; REMAIN = setdiff(1:n,start); weight=0; %initialize weight while length(Tour) 1 for j = 1:length(REMAIN) vertex = REMAIN(j); %now look for the best place to insert vertex it in current Tour MinWeightDiff = Inf; %Initialize weight differential for this vertex InsertPoint=Tour(1); InsertIndex = 1;%Initialize insert point and index for i=1:length(Tour)-1 weightDiff = W(Tour(i),vertex)+W(vertex,Tour(i+1))-W(Tour(i),Tour(i+1)); if weightDiff