- •Общие сведения из теории конструирования
- •1.1. Система требований, предъявляемых к конструкции
- •1.2. Системное представление процесса разработки конструкции
- •Лекция № 2
- •1.3. Математические модели качества конструкции
- •Лекция №3 Математические модели надежности
- •1.5. Приближенные методы расчета надежности
- •1.6. Математические модели точности
- •1.7. Обработка результатов контроля качества конструкции
- •Глава 2
- •2.1. Аналитический и вероятностный методы прогнозирования
- •2.3. Прогнозирование состояний объекта на основе теории непрерывных цепей Маркова
- •2.4. Прогнозирование качества из основе спектрального представления процессов, происходящих в конструкциях
- •2.5. Прогнозирование долговечности аппаратуры
- •Глава 3
- •3.1. Постановка задачи синтеза
- •3.2. Постановка задачи оптимизации
- •3.3. Линейное программирование в решении конструкторских задач
- •3.4. Некоторые методы решения задач линейного программирования
- •3.5. Целочисленное программирование в задачах конструирования
- •3.6. Нелинейное программирование в задачах конструирования
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.