Депо
Недавно я начал изучать генетические алгоритмы и программирование. Я наткнулся на несколько простых инструментов, библиотек и учебных пособий. В Интернете доступно много классных визуализаций, чтобы продемонстрировать, как алгоритм улучшает поколение населения по сравнению с поколением. Похоже, хороший способ понять концепцию и создать интуицию.
Поскольку я в основном код в Python, в итоге я использовал Deap Для прототипирования и обучения. Документации очень ясны и с множеством примеров для изучения.
Проблема искусственного муравья
Один конкретный пример был, Проблема искусственного муравья Анкет Цель состоит в том, чтобы развивать человека, который может контролировать муравей и есть как можно больше продуктов питания из окружающей среды, учитывая ограниченное количество и виды ходов.
Код проходит плавно, и вы можете увидеть результат в консоли, что поколение по сравнению с поколением население на самом деле способно увеличить количество съеденных продуктов.
Код изменений
Это все хорошо, но я хотел визуализировать решение, чтобы убедиться в себе и лучше понять. Первым шагом было прочитать лучшие индивидуальные атрибуты Зал славы
Анкет
Исходный базовый код для справки Я запечатлел лучшего человека после запуска программы и перекомпилировал атрибут для этого человека.
from deap import gp hof_promitive_tree = gp.PrimitiveTree(hof[0]) routine = gp.compile(hof_promitive_tree , pset)
Изменил Антимулятор
Класс немного, чтобы записать каждый ход для последующего использования.
class AntSimulator(object): def __init__(self, max_moves): ... self.recorded_moves = [] ... def record_move(self): self.recorded_moves.append(self.position)
Следующим шагом было снова запустить рутину на модифицированном Антимулятор
и получить ход регистратора для симуляции
ant.run(routine) # contains the initial food item and ant location grid = ant.matrix # recorder moves of best individual moves = ant.recorded_moves
Пигама
Учитывая такую большую информацию, инициализация включала в себя размещение муравей и продуктов питания на экране Pygame. Основная петля состоит в том, чтобы играть каждый за другим и удалять продукты, когда -то съеденные. Полный модифицированный код можно найти здесь
И вот конечный результат. Показывает индивидуума, контролирующую первые 600 движений нашего искусственного муравья.
Одно поколение
Десять поколений
Сорок поколений
Оригинал: “https://dev.to/ranuzz/visualizing-artificial-ant-problem-using-pygame-4fc2”