В генетическом алгоритме популяция представляет собой набор возможных решений, которые развиваются в течение итераций.Начальная популяция обычно генерируется случайным образом.( ссылка на источник )
Например, одно решение (или один кандидат от начальной популяции) может быть таким:
([
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, *, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, *, *, *, *, 0, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, *, 0, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 0, 0, *, *, *, *, 0, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 0, 0, *, 0, *, *, 0, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 0, 0, *, 0, *, *, 0, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 0, 0, *, 0, *, *, 0, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 0, 0, *, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, *, 1, 1, 1, 0, 0],
[0, *, *, *, *, *, *, *, *, *, *, 1, 1, 1, 0, 0],
[0, *, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0],
[0, *, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0],
[*, *, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
, где след *это путь от (12, 0) до (0, 10).
Так что теперь вам нужно найти способ случайным образом сгенерировать путь *, начинающийся с start
в конце в end
.Наивный подход заключается в использовании случайного направления влево, вправо, вверх и вниз.Если это направление заблокировано границей или 1, выберите другое направление.Продолжайте, пока не дойдете до конца.
Кроме того, путь может иметь * смежные друг с другом, как показано выше.(3, 11) и (3, 12) содержит *, но не являются частью непрерывного следа.Для этого используйте разные числа для обозначения направления, или я бы предложил использовать юникод для стрелок, например, \u2190
для левой стрелки.
Надеюсь, это поможет.