2016-05-22 3 views
3

Я пытаюсь кодировать это (небольшая часть проекта) для линейного программирования:Линейное программирование - Ограничения

Для каждого пакета р мы знаем его длину (xDimp) и ширину (yDimp). Кроме того, у нас есть длина (xTruck) и ширина (yTruck) грузовика. Все числа являются целыми числами.

Из-за конструкции упаковок они не могут вращаться при установке в грузовик.

Грузовик представлен в виде матрицы двух измерений, только с координатами x и y. Мы игнорируем высоту.

Решение переменные:

- рху [р, х, у] = пакет р находится в ячейке с верхней правой координатами (х, у)

- PBL [р, х, у] = нижняя левая ячейка р имеет верхние правые координаты (х, у)

Example

Как я пишу такие ограничения, чтобы установить PBL и Pxy переменных? Я полагаю, что я должен установить переменную pbl, чтобы убедиться, что пакет подходит для грузовика, а значение переменной pxy зависит от значения pbl.

Спасибо,

+1

Является ли это домашнее задание? –

+0

Не домашнее задание, а небольшая часть проекта, который я делаю (самостоятельно изучая), чтобы изучить линейное программирование и CPLEX. –

+2

Ограничения без перекрытия для этой проблемы упаковки не могут быть сформулированы в (непрерывной) формулировке линейного программирования. Для этого вам понадобятся бинарные переменные. –

ответ

2

Это вариант задачи упаковки в контейнеры, двухмерная упаковка из нескольких прямоугольников различной ширины и высоты в ограждающей прямоугольника (2bp). Если их разрешено поворачивать на 90 °, мы получили проблему прямоугольной упаковки с ортогональной ориентацией, и в вашем случае у нас есть проблема с прямоугольной упаковкой без поворота. Его вычислительная сложность NP-жесткая, но это не является неосуществимым. Из вашего описания проблема уже дискретизирована, что ограничивает возможные места размещения в сетке, что означает, что оптимальный вариант непрерывной версии может быть недоступен.

Один Approch должен вычислить некоторый граф конфликтной заранее, которое представляет пространство поиска и хранит информацию о перекрытии прямоугольников:

img.us svg file

где

img.us svg file

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

img.us svg file

и парными.

Теперь проблема упаковки в сетке - это проблема с максимальной независимой установкой на графике конфликта (MIS), предполагая, что вы хотите увеличить количество пакетов на грузовике. ИСУ, в свою очередь, имеет следующий состав: ILP

img.us svg file

Это целое число релаксация ИСУ, но до сих пор не хорошо для метода ветвей и границ решающего.Если С является клика в G то любое независимое множество может выбрать не более одного узел из C, поэтому использует следующее ограничение: количество

img.us svg file

полученных в результате линейной программы переменного растет экспоненциально.

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

img.us svg file

Во-вторых, использовать набор дизъюнктивных ограничений для предотвращения перекрытия:

img.us svg file

С этой точки на, вы можете начать формулировать метапрограмму, как описано here

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

Источники:

http://www.staff.uni-mainz.de/schoemer/publications/ESA03.pdf

https://kluedo.ub.uni-kl.de/frontdoor/index/index/docId/2046

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