Рубрики
Без рубрики

Визуализация искусственной проблемы муравья с использованием pygame

DEAP Я недавно начал изучать генетические алгоритмы и программирование. Я наткнулся … Tagged с помощью Python, Pygame, GeneticProgramming.

Депо

Недавно я начал изучать генетические алгоритмы и программирование. Я наткнулся на несколько простых инструментов, библиотек и учебных пособий. В Интернете доступно много классных визуализаций, чтобы продемонстрировать, как алгоритм улучшает поколение населения по сравнению с поколением. Похоже, хороший способ понять концепцию и создать интуицию.

Поскольку я в основном код в 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”