我认为你不需要遗传算法或任何荒谬的东西;好的老式递归和动态编程就足够了。我最初认为,您应该能够通过广度优先搜索来实现您的目标。从起点开始,您访问分数大于路径值的所有邻居——所有单元格都从无穷大开始,黑色单元格的成本将是无穷大,这些是您可以修剪掉的路径)。到达目的地后,如果可以到达,您应该能够原路返回以找到路径。它很贪婪,但如果你的路径像这些一样表现良好,那就应该没问题。
对于灰度较多且曲折的路径,将光栅图像转换为图形可能是一个好主意,边缘权重是邻居的灰度值(或灰度值的差异,具体取决于这是什么)数据实际上意味着)。因此,您应该能够根据该解释使用任何最短路径算法。