Морской бой корабли сколько

Вопросы и ответы
Решаем задачу расстановки кораблей в игровом поле в игре Морской бой. Узнаете как можно закодировать информацию в генах хромосом для этой задачи и вычислить функцию приспособленности.
Игра с контрастной Зеброй — отличное упражнение для фокусировки взгляда

Расстановка кораблей в этом морском сражении IRGE

В этом уроке мы снова рассмотрим пример применения генетических методов для организации кораблей в «морском сражении» IRGE. Наша задача — расположить корабли четыре раза — два трехпалубных, три двухпалубных и четыре однопалубных — так, чтобы они не касались друг друга.

Во-первых, мы обязаны формату данных для хромосом. Я закодировал их прозорливым способом:.

где x и y — состояния судна (целые числа от 1 до 10). P — ориентация корабля (0 — горизонтальная, 1 — вертикальная). Общая длина хромосомы сокращается на 10*3 = 30 генов.

Концепция расчета физической формы человека

Следующим необходимым шагом является расчет концепции фитнес-функции человека. Концепция расчета в нашем методе является подходящей. Сначала создайте матрицу, в которой нули описывают игровой фон, а понятие порога в 1000 — величину штрафа за исключение корабля из игрового поля.

Например, добавление маски к четырем кораблям, как показано на схеме ниже, будет иметь только одно значение в границах игрового поля и более 1000.

Тогда размещение трех кораблей в квадрате дает вам несколько значений единиц на игровом поле (см. Рисунок 2).

Так появляется логика, которая вычисляет понятие богатства человека. В игровой области суммируйте все значения, превышающие 1 и выходящие за этот предел — общее понятие больше 1000. Общая сумма определяет способность человека к адаптации. Обратите внимание, что концепция приспособляемости в равной степени недействительна, если корабли расположены в соответствии с правилами игры. И оно растет, и количество неправильных конфигураций увеличивается. Это означает, что процесс оптимизации должен минимизировать функцию настройки.

Применение метода к Python

Теперь давайте реализуем пакет DEAP и реализуем метод в Python. Сначала импортируйте важные пакеты и модули:

Далее определите свойства массы и задачи метода.

На следующем этапе определите класс FitnessMin для манипулирования концепцией фитнеса и классом индивидуальных представлений особей в популяции.

Здесь все определяется как стандартное, а сила обнаружения как -1. Это в основном означает, что нас интересует минимальное значение фитнес-функции.

Далее задается функция рандомизации. Это создает прототип индивидуума со случайными значениями генов.

Общий параметр — это количество последовательных судов. В круге для каждого корабля формируются три произвольных понятия с координатами x, y и ориентацией p.

Кроме того, для создания особей регистрируется функция случайного корабля, для создания популяции регистрируется функция популяции, и создается начальная популяция.

Самой сложной частью этого метода было вычисление понятия индивидуальной пригодности. Мы получили эту функцию из списка пакетов Numpy.

В целом, это является основой здесь. Первоначально создается фон P со значением ноль в области, где находится корабль, и значением 1000 за пределами игрового поля. Далее, предварительные матрицы H и V появляются при формировании маски корабля. Это добавляется к игровому фону для формирования числовых значений в соответствии с идеей расчета индивидуальных корректировок. Цикл проходит через три значения хромосом индивидуума и одно значение из списка Type_schip. Этот список указывает, какой тип корабля будет добавлен на игровой фон в конкретном случае. Затем добавьте маски с кораблей в соответствии с направлением (вертикальным или горизонтальным). После того, как все корабли будут размещены, подсчитайте необходимую сумму больше 1 для ошибок внутри игровой зоны и сумму значений больше 1000 и 1000 + 0,2 ench 4. Космический корабль за пределами игровой зоны. Общая сумма — это именно то, что считается чувством приспособленности индивида.

Далее, это просто. Описана 1 функция для осуществления хромосомной мутации:.

Здесь координаты имеют все возможности непреднамеренно изменяться в диапазоне 1-10, а направление интерпретируется как 0 или 1.

Затем все эти функции регистрируются для реализации в головном цикле GA пакета DEAP.

Турнирные селекты используются в качестве селектов, а двухочковые кроссы — в качестве кроссов. Экземпляры статистики класса определяются для сбора статистики о производительности DE GA.

Наконец, функция Easimpleeritism (), реализующая принцип элитарности, реализована таким образом, чтобы поддерживать — сохранять лучших особей в каждом поколении. И, наконец, ознакомьтесь со статистикой, показывающей лучших людей и графики.

После запуска программы вы увидите следующее расписание

Как мы увидим, выводы делаются быстро. И было бы не очень здорово, если бы, например, был фон 10х10 для управления кораблем совсем небольшого размера. Давайте немного усложним задачу и уменьшим объем фона до 7х7.

Катапульта стреляет игрушечными самолетиками, нажимаем на курок и вот, самолетики уже в небе

Мы пришли к не самому лучшему выводу. Но если мы увеличим население до 200:.

Вывод — итеративный 17.

Показывать места доставки

Конечно, кривые — это неожиданно здорово, но гораздо лучше смотреть на результирующую установку, чем на другие. Для этой цели я добавил соответствующую функцию в модуль graph_show.py: она называется ‘display_deliveries.py’.

Затем мы импортируем его в основной модуль программы: graph_show.py.

Затем мы будем вызывать его в каждой итерации и смотреть наилучшее возможное расположение. Сначала определим известные функции.

Используйте интерактивный режим отражения данных для формирования рамок и регулировочных валов и задания размеров рамок и кромок осей.

В зависимости от EasimpleElitism (), используйте функцию show и аргумент Ax для отображения параметров обратного вызова.

Как только GA будет выполнен, выключите интерактивный режим и оставьте окно с последним вариантом расположения корабля на экране.

После выполнения программы отображаются последние результаты.

Конечно, это лишь пример того, как можно выполнить эту задачу при поддержке GA. Я думаю, что после примера с ранжированием кораблей и определением кратчайшего маршрута графа у вас будет больше, чем любое другое понимание того, как построить генетический метод для решения этих или других задач.

Видео по теме.

Ситуация и возможности генетических методов.

#1. основные положения генетических алгоритмов

#2. выполнять генетические методы для задач OneMax

#3. модели сбивающих факторов для построения DEAP-генетических алгоритмов

#4. как генетические методы делают свои выводы. Превосходные качества и недостатки

#5. скрипты для методов селекции, инбридинга и мутации

#6. поиск наименьшего корня в графе

#7. элитарность. Жесткие и мягкие ограничения

#8. распределение корабля в этой игре в линкоры

#9. выборка минимального числа характеристик

#10. разведка подкреплений или как поджечь горные машины

#11. не урони столб или как нейронные сети поддерживают баланс

Copyright©2022 Выборочное или абсолютное копирование информации с этого сайта для распространения в других источниках, включая картон, строго запрещено. Все слова и изображения являются собственностью сайта.

Паровозик-строитель домино – прекрасная и невероятно веселая развивающая игрушка для ваших детей
Оцените статью
Добавить комментарий