Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ САПРИ 2011.doc
Скачиваний:
11
Добавлен:
23.04.2019
Размер:
1.71 Mб
Скачать

3.5. Целочисленное программирование в задачах конструирования

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

Постановка задачи целочисленного программирования от­личается от линейного программирования тем, что в данном случае на элементы решения наложены условия целочислен-ности.

Существует несколько методов решения задач целочислен­ного "'программирования, однако наибольшее распространение получил метод ветвей и границ. Идея этого метода заключа-ется в том, что сначала решается задача линейного програм­мирования Если получено целочисленное решение, то это и есть искомый результат, а если не получено целочисленное значение элементов решения, то полученный результат счи­тается верхней границей искомого решения. Для достижения целочисленного решения производят ветвление области допу­стимых решений путем введения дополнительных условий задачи.

Постановку задачи целочисленного программирования рас­смотрим на примере из конструкторской практики.

Требуется разработать аппаратуру на основе серийно вы­пускаемых модулей (микросхем) двух типов М1 и М2. Извест­но, что без учета резервирования в схеме аппаратуры должно содержаться модулей М1 не менее b1, а модулей М2 — не ме­нее b2. Кроме того, известно, что выпускаются монтажные платы двух типов П1 и П2, которые предполагается использо­вать как конструктивные несущие элементы для разрабаты­ваемой аппаратуры.

Известно также, что в монтажном пространстве платы П1 может разместиться На монтажной плате П2 может быть размещено

α12 — модулей М1; α22 — модулей М2.

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

Для платы П1 он равен С1 а для платы П2—С2. Требует­ся определить необходимое количество плат для проектирова­ния аппаратуры по типам с условием, чтобы аппаратура обладала максимальным качеством при минимальных затратах.

С учетом условий и требований задачи составим целевую функцию ,

где x1 — количество плат типа П1; x2 — количество плат П2.

Составим ограничительные уравнения:

x1 и x2 — целые числа.

Первое уравнение описывает распределение модулей M1 среди плат Пi и П2, а второе уравнение — распределение среди тех же плат, но уже модулей — М2.

Начнем решение с задачи линейного программирования, преследуя цель получить, если это удастся, целочисленное ре­шение, а если нет, то — верхнюю границу задачи целочислен­ного программирования.

Предположим, что решение найдено с использованием од­ного из известных методов линейного программирования, но при этом целочисленных значений элементов решения не по­лучено,

Наложим дополнительные условия

где х1ц — ближайшее целое число к х1*; x2ц—ближайшее целое чис­ло к x2.

Решаем задачу, разветвив ее на две по х1ц и x2ц. Вновь решаем задачу линейного программирования с учетом дополнительного условия. Получаем решения х1** и х2**. При этом целевая функция имеет значение K**. Если элементы решения являются целыми числами и ограничительные уравнения выполняются, то полу­ченное решение дает оптимальное значение целевой функции.

Если x1 и x2 не целые числа, то ветвление продолжают до получения целых чисел или до тех пор, пока ветвление стано­вится невозможным.

Пример. Решим рассмотренную выше задачу при следующих условиях: α11 = 5; α21 = 10; α12 = 10; а22 = 5; b1 ≥ 80; b2 ≥ 60; С1 = 15; С2 = 20; х1 ≥ 0, x2 > 0, x1x2 — целые числа.

Решим задачу линейного программирования без учета условий целочисленности х1 и х2.

Составим ограничительные уравнения

или

Решение найдем графическим методом. Построим прямые y1 = 0, у2 = 0(рис 3.4). Точка соответствует оптимальному решению. При этом x1 = 2,6; х2 = 6,6; K = С1x1 + С2x2 = 15*2f6 +20*6 6 = 171. Полученное решение не является целочисленным.

Очевидно, целочисленное решение лежит в окрестно­сти точки в области до­пустимых решений. Вероят­нее всего предположить, что оптимальному решениию соответствуют точки 1, 2 или 3.

Рис. 3.4. График, поясняющий решение задач методом целочисленного программирования

Задачу можно решить не прибегая к ее ветвле­нию. Найдем значения це­левой функции для точек 1, 2, 3. То решение являет­ся искомым, для которого целевая функция минималь­на, но не меньше целевой функции, полученной при линейном программировании:

Минимальное значение К(3) = 180. Следовательно х1 = 4; х2 = 6. При этом К(3) == Лmin = 180.