оптимизировать значение атрибута в сетке ячеек - PullRequest
0 голосов
/ 24 мая 2018

Я пытался разработать алгоритм для мода игры "Minecraft" под названием "Nuclearcraft".Точнее говоря, алгоритм для оптимизации значения охлаждения реактора деления.

Этот реактор деления - это просто кубоид, по крайней мере, с одной реакторной ячейкой внутри, теперь, в зависимости от того, сколько у вас подключено друг к другу либо черезМодератор блокирует или непосредственно, это геометрически увеличивает произведенное тепло, и интуитивно, если реакторы превышают его максимальную температуру, он взрывается.

Что алгоритм должен делать, это когда предоставляется .txt документ с моим расположением реактора в простоммногослойная сетка, например:

    101
    000
    101

    202
    000
    202

    101
    000
    101

Где 0 - воздух или пустое пространство, 1 - ячейка реактора, а 2 - блок модератора.он должен пытаться переставлять между доступными кулерами внутри этой решетки в пустых пространствах, есть разные типы кулеров, и у каждого свои правила и разные скорости нагрева (так как его теплопроизводительность охлаждения является отрицательным значением).Значение охлаждения является статическим в зависимости от типа кулера независимо от фактического размещения, единственные правила определяют, работает ли он или нет, поэтому не существует оптимального размещения для отдельного типа кулера, только действительные.

Проблема заключается вИспользуемая логика - простая перестановка, сходящая с кулера с наибольшей скоростью охлаждения и проверяющая его правила.Это работает для первой итерации и для последующих.но я не просто пытаюсь найти решение, но решение с наибольшей скоростью охлаждения, я имею в виду, что один кулер в «X, Y, Z» может охлаждать менее двух кулеров с особыми правилами почти на одном и том же пространстве, чтосама по себе еще одна проблема, в идеале у куба не должно быть пустых мест.

Что касается кодирования различных типов блоков кулера, я подумал о том, чтобы добавить их как объекты со значениями охлаждения в качестве атрибутов и каждый со своей собственной функцией проверки.with возвращает true или false, если он может быть размещен или не задан сеткой блока и координатами.Другим фактором является возможность избежать использования определенных типов кулеров, которые требуют более редких материалов после того, как я получу рабочий, в моде некоторые кулеры имеют схожие правила друг с другом только с превосходной скоростью охлаждения в зависимости от редкости используемого материала.

...