2016-10-25 2 views
1

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

Моя проблема заключается в том, чтобы решить, какие из объектов должны планировать объекты, и какие должны быть проблемы. В документации OptaPlanner here указано, что

Во многих отношениях это, как правило, много сторон, являющихся классом сущности планирования. Свойство, ссылающееся на другую сторону, является переменной планирования. Например, при росте сотрудников: класс сущности планирования - ShiftAssignment, а не Employee, а переменная планирования - ShiftAssignment.getEmployee(), поскольку у одного сотрудника есть несколько ShiftAssignments, но у одного ShiftAssignment есть только один Сотрудник.

Это, по-видимому, указывает, что Circle будет объектом планирования, так как многие круги могут быть активированы одним квадратом. Поэтому переменной планирования будет Circle.activatedBy(). Однако позже в документации указано, что

Объект планирования - JavaBean (POJO), который изменяется во время решения.

Кружки закреплены на плоскости 2d - это сами квадраты, которые меняют место. Кроме того, кружок может быть очень неактивным, если он далеко от других кругов или имеет достаточно низкий приоритет. В таких случаях Circle.activatedBy() не будет возвращать определенный квадрат вообще.

Раньше я раньше не пользовался оптапланером, поэтому я хотел бы получить объяснение, что использовать и почему. Я также не совсем уверен, как начать представлять 2d-плоскость, на которой все эти объекты находятся, хотя я изучал GeoJSON и другие решения, чтобы определить, пересекаются ли два полигона. Вполне возможно, что что-то вроде SquarePosition будет лучшим объектом планирования, хотя я не вижу, как это возможно для OptaPlanner, так как существует бесконечное количество потенциальных позиций для многоугольника на 2d-плоскости.

Мой конкретный вопрос: в этом случае будет включать аннотацию планирования объекта Square, а переменными планирования будут координаты X и Y квадратов? Если да, то каким будет лучший способ приблизиться к созданию движений для квадратов? В этом случае каждый круг имеет оценку приоритета, и если квадрат пересекает круг, он добавляет свой счет к суммарному счету. Я хочу оптимизировать для самого высокого балла, поэтому я рассматривал возможность наличия квадратной «орбиты» вокруг круга с самым высоким приоритетом, чтобы увидеть, с какими другими кругами он может пересекаться, а затем переходить к следующему кругу приоритетов и повторять. Это, однако, не совсем оптимально, и ни одна другая фантастическая документация OptaPlanner не охватывает эти виды движений, насколько я могу судить.

ответ

0

OptaPlanner 6.5 не может обрабатывать 2D-поверхность или объемную упаковку 3D. В будущей версии мы будем ее поддерживать.

Это было сказано, что я несколько раз пытался взломать трехмерный объемный упаковщик с помощью OptaPlanner, чтобы обрабатывать объекты 1m IIRC: Packing Santa's Sleigh (here be dragons).

Двусторонняя упаковка с многоугольниками в настоящее время исследует проблемы кровотечения: посмотрите документы группы CODeS, в частности те, которые написаны Тони Ваутерсом.

+0

Перечитывая описание, этот прецедент может быть не поверхностной упаковкой (потому что круги и квадраты могут перекрываться - нет ограничений для минимизации отходов), и по умолчанию подход OptaPlanner может работать очень хорошо. –

+0

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

+0

Согласовано. Только при упаковке (без перекрытия + минимизации отходов) чистый подход CH/LS не работает, и гибридный алгоритм работает лучше всего. –

Смежные вопросы