Test AStarSearch using a grid with randomly placed obstacles.

------------------------------------------------------------------------
See also AStarSearch, TransformGridCoordinates, Plot2D, TextS
------------------------------------------------------------------------
%-------------------------------------------------------------------------------
%   Copyright (c) 2003 Princeton Satellite Systems, Inc. All rights reserved.
%-------------------------------------------------------------------------------

d = [];

d.pathCostEstimateFunction = 'GridPathCost';
d.traverseCostFunction     = 'GridTraverseCost';
d.successorNodesFunction   = 'GridSuccessorNodes';

for m = 1:10
  n           = m*10;
  rowStart    = n/2;
  rowEnd      = n/2;
  colStart    = 1;
  colEnd      = n;
  rows        = -ceil(n/4):ceil(n/4);
  blockedNode = [(n/2)*ones(1,length(rows));n/2 + rows];
  grid        = zeros(n,n);
  d.myData.n  = n;
  for k = 1:size(blockedNode,2)
    grid(blockedNode(2,k),blockedNode(1,k)) = 1;
  end

  % Put in a one dimensional array
  %-------------------------------
  for k = 1:n
    d.myData.grid(1,((k-1)*n+1):(k*n)) = grid(k,:);
  end
  d.n  = length(d.myData.grid);

  startNode = TransformGridCoordinates( rowStart, colStart, n );
  endNode   = TransformGridCoordinates( rowEnd,   colEnd,   n );

  tic
  path      = AStarSearch( startNode, endNode, d );
  flopsTotal(m) = toc;

  t = sprintf('A* Search: %2.3f sec',flopsTotal(m));

  [y, x] = TransformGridCoordinates( path, n );

  Plot2D( x, y, 'x', 'y', t );
  n = n + 1;
  set( gca, 'xlim', [0 n], 'ylim', [0 n] )
  hold on

  [row, col] = TransformGridCoordinates( startNode, n-1 );
  TextS(col,row-.15,'  start')
  plot(col,row,'*g')
  [row, col] = TransformGridCoordinates( endNode, n-1 );
  TextS(col,row-.15,'  end')
  plot(col,row,'*r')

  for k = 1:size(blockedNode,2)
    plot(blockedNode(1,k),blockedNode(2,k),'*k');
  end
end
hold off
n     = 10*(1:length(flopsTotal));
scale = flopsTotal(1)/n(1)^2;
fit   = scale*n.^2;
Plot2D(10*(1:length(flopsTotal)),[flopsTotal;fit],'Grid size','Sec','AStarSearch Operation Time','ylog')
legend('Actual', 'n^2 fit')

% PSS internal file version information
%--------------------------------------

% $Id: 19adfc374f8ea6908c38b5e1f2fc36d73898e999 $