Рассмотрим область (2D), заполненную линиями случайным образом (см. Рисунок). Мы заинтересованы в заполнении пустых пространств между строками, включая четыре граничных ребра:
0- максимизация размера посылок;
1- форма заполняемых участков имеет квадратную ориентацию по горизонтали или вертикали;
2- форма заполнения участков квадратная, т. Е. Расслабленное выравнивание ;
3- форма заполнения посылки - любой четырехугольник. наш оригинальный вопрос
Итак, на данный момент есть три разных сценария.
Обратите внимание, что линии имеют форму [x1,y1,x2,y2]
точки набора, реальные цифры.
[* * *] Идеи возможных решений / алгоритмов / фрагментов кода / и т. Д. Приветствуются.
Обновление 1: мы можем управлять решением для первого случая:
Шаги:
1 - строки
2 - растеризация строк в растровое изображение
3 - поиск соседних ячеек для каждой ячейки желаемого цвета (то есть того же цвета) с целевой функцией для максимизации площадь, т. е. количество клеток.
Это работает хорошо, но охватывает только первый сценарий и также медленно.
Обновление 2:
мы предположили, что читатель знаком с концепцией заполнения-заполнения-пространства. Вы можете перейти по ссылке для вдохновения. Однако учтите, что наша проблема в другом. Поскольку мы не заполняем пустое пространство случайным образом и не выбираем размер случайно. Решение должно быть итеративным. Во всех случаях не существует ограничений на количество отправляемых посылок. Действительно, пользователь может ограничить число итераций, выбрав, например, минимальную площадь для посылок. Это очевидно в приведенном выше примере, в котором мы разделили строки на пиксели с указанным размером. То есть процедура должна выполняться до тех пор, пока не будет заполнена вся пустая область в соответствии с критерием, например, максимальной площадью участков.
Обновление 3:
резюме:
Одно из приложений - выяснить распределение извлекаемых неповрежденных «каменных» блоков в сильно разломанной «шахте». Это может быть очень полезным для многих аспектов , включая буровую конструкцию, финансовую оценку и т.д.
Описание:
Для мины декоративной породы (камень) продукты , которые являются блоками неповрежденных пород , вырезанных в виде прямоугольных кубов цены сильно зависят от размера блок. Извлечение блока из подходящей области, то есть без значительного разрушения, будет желательно, если количество оставшихся частей будет как можно меньше. Обычно небольшие куски камней не имеют относительно экономической ценности и рассматриваются как отходы.
Вопрос в этом посте исследует решения для такого рода проблем.
Математическое представление проблемы можно сформулировать следующим образом:
2D: Найти все прямоугольники, которые можно извлечь из заданной 2D-области, с некоторыми линиями, оптимизированными для большего размера прямоугольника, насколько это возможно.
3D: Найти все прямоугольные кубы, которые можно извлечь из заданной трехмерной области с некоторыми подпланами (лучше: полигоны), оптимизированными для максимально возможного размера блока.
Поскольку это является частью продолжающегося исследования, некоторые из вопросов, заданных в комментариях ниже, не имеют определенных ответов, которые мы можем предоставить. Мы считаем, что предоставленной информации здесь действительно достаточно, чтобы получить общую картину проблемы. Тем не менее, мы предоставляем некоторые подробности, как мы можем для общественных выгод.
Вы можете наложить некоторые ограничения на решение окончательного вопроса, хотя, мы считаем, что всегда можно добавить больше позже. Например, выполните следующие действия: {2D case}
Наилучший размер блока (экономически оптимальный прямоугольник), который должен быть извлечен в условиях, указанных выше, 1x1 m
приведен 10x10 m
для региона в примере. Это одно ограничение, определенное на основе экономической ценности. Минимальный рабочий размер для резки и т. Д., Пусть будет0.15x0.15 m
; так что это второй предел размера.
На рисунке выше показана функция экономической стоимости в зависимости от размера блока. Так что для этого конкретного случая каждый кусок камня меньше, чем 0.15x0.15 m
просто отходы. Там не будет размер блока больше, чем 1.7x1.7 m
из-за пределов работы.
Ответы:
У меня есть идея, как вы итеративно работаете от больших блоков до более мелких блоков, используя FME (от Safe Software.) Для справки, я не работаю на них, но, кажется, хвалят их инструмент достаточно ...
Промойте и повторите столько раз, сколько необходимо, используя меньшие плитки каждый раз. Я прикрепил начало рабочего места, которое я бы использовал как один из подходов.
Исходя из вашего (очень подробного) описания, он пока будет работать только с вашим вариантом 1. Пока не уделяю слишком много времени.
В любом случае, это всего лишь один из подходов, с которого я бы начал, по крайней мере, отфильтровывать пшеницу от плевел.
источник