I thought the algorithm you are using could use a 
little optimization, so I did some research.  It turns out that if you plan 
your path from the start and finish simultaneously, you cut the number of tiles 
you have to search in half (usually).  For example:
 
Your 
method: