- •Лекция № 9
- •3. Задачи и методы дискретного программирования
- •3.1. Постановки задач дискретного программирования
- •3.I.I. Задачи целочисленного программирования
- •3.1.2. Комбинаторные задачи
- •3.1.3. Задачи частично-целочисленного программирования
- •3.2.1. Метод лексикографического неявного перебора (млнп)
3.1.3. Задачи частично-целочисленного программирования
В задачах этого подкласса в отличие от задач целочисленного программирования часть оптимизационных переменных являются действительными. Класс таких задач очень широк. Обобщенная формализованная запись такого рода задач приведена выше (3.1). Для важного частного случая линейных частично-целочисленных задач она имеет следующий вид:
, (3.7)
где
c,e
- векторы-строки
(соответственно п-
и
р
-мерные)
коэффициентов целевой функции при
действительных и целочисленных
переменных; А,D
- матрицы
( А
-
-мерные,
B
-
-
мерные),
определяющие левые части ограничений;
b
- m -мерный
вектор правых частей ограничений.
ЗК, как задача частично-целочисленного программирования.
Рассмотренная
выше ЗК может быть отнесена к
рассматриваемому классу, если другим
образом формализовать условия формирования
решения в виде Гамильтонового контура.
Необходимость другой формы записи этих
условий определяется тем, что даже для
задач среднего размера
количество всевозможных разбиений
множества городов на подмножества S
и
очень
велико.
В новой компактной форме эти ограничения
записываются с введением дополнительных
неотрицательных действительных
переменных
u[i]≥0
(
)
:
,
. (3.7)
Эти неравенства обеспечивают выполнение условия прохождения каждого обхода через город № 1. Например, решение, показанное на рис.3.2,а, исключается, так как содержит обход 4-5-6, не проходящий через город №1. Проверка этого утверждения на примере, показанном на рис.3.2а заключается в следующем: необходимо записать ограничения (3.7) для дуг обхода 4-5-6 и сложить эти неравенства. После этого очевидным станет факт их невыполнения. В то же время эти ограничения не исключают ни одного обхода. В этом легко убедиться, если для любого Гамильтонового контура зафиксировать соответствующим образом значения x[i,j] и определить значение каждой переменной u[i] как порядковый номер, под которым i -и город посещается при обходе. Все неравенства в этом случае превращаются в тождества.
Задача тематического планирования.
Предприятие
имеет на плановый
период портфель заказов, включающий р
разработок.
Каждая j
-я
разработка
характеризуется количественной оценкой
эффекта
e[j],
получаемого
от ее выполнения, и объемом
работ d[i,j],
который
должен быть выполнен по профилю i
-го подразделения предприятия
(
).
Общий
объем
работ,
который может быть выполнен каждым i
-ым подразделением,
-
b[i].
Существует возможность передачи работ из одних подразделений в другие, родственные им по специализации. Эта возможность отражается матрицей a[i,j] (a[i,j]=1, если i-е подразделение может выполнять работы j -го подразделения, a[i,j] = 0 - в противном случае).
Введем
в рассмотрение следующие оптимизационные
переменные:
бинарные
переменные
w[j]
(j=1,n)
(w[j]=1,
если j-я
разработка
включается в план предприятия,
w[j]
=
0 - в противном случае) и действительные
переменные
y[i,j]≥0
(
;
i¹j)-объем
работ i-го
подразделения предприятия, переданный
для выполнения j-ому
подразделению.
Необходимо так составить
тематический план предприятия,
чтобы при ограничениях
на объемы работ,
выполняемых каждым подразделением с
учетом их взаимозаменяемости, обеспечить
максимальный
эффект от выполнения разработок,
включенных в тематический план
разрабатывающего предприятия.
Формализованная запись задачи
будет иметь следующий вид:
(3.8)
Задачи c альтернативными ограничениями.
В некоторых оптимизационных задачах область допустимых решений разбивается на несвязанные подобласти при включении в задачу так называемых альтернативных ограничений.
В исходной формулировке альтернативные ограничения не соответствуют приведенной выше формализованной записи задачи дискретного программирования (3.I) и не могут в таком виде учтены большинством формальных оптимизационных методов (исключая эвристические алгоритмы).
Однако возможны эквивалентные преобразования этих ограничений. В результате этого они приводятся к обычной форме записи, используемой в задаче частично-целочисленного программирования. Рассмотрим некоторые варианты альтернативных ограничений и способы их преобразования.
Пусть дано альтернативное ограничение следующего вида:
либо k(x)³0, либо h(x)³0, где xÎD (3.9)
где x - вектор действительных переменных, выбираемый из некоторой подобласти D Евклидова пространства.
Геометрическая интерпретация альтернативного ограничения (3.9) показана на рис.3.3. Это ограничение выделяет из области D два подмножества, отмеченных двойной штриховкой.
Рис.3.3.
Для осуществления эквивалентных преобразований определяются
нижние границы функций k(x) и h(x) на множестве D :
;
,
и бинарная оптимизационная переменная w, принимающая значения 0 или 1.
Нижняя граница функции на некотором множестве значений аргумента – это число, меньше которого значение функции не может быть на этом множестве. Определение нижних границ функции в большинстве реальных задач - это не
сложная задача: она является оценочной, а не оптимизационной.
Тогда альтернативное ограничение (3.9) может быть эквивалентно представлено системой из следующих двух неравенств:
,
.
(3.10)
Видно, что при w = 0 работает ограничение k(x)³0, второе же ограничение выполняется тривиально, а при w = 1 - ситуация противоположная.
Второй вариант альтернативного ограничения:
либо
,
(
),
либо
,
где xÎD. (3.11)
По аналогии с предыдущим случаем после определения нижних границ функций ki(x) и hj(x) и введения бинарной переменной w эквивалентная альтернативному ограничению (3.11) система неравенств будет иметь следующий вид:
,
. (3.12)
Рассмотрим вариант многоальтернативного ограничения:
- должно выполняться одно из следующих ограничений
,
,
где xÎD. (3.13)
Для его преобразования
необходимо ввести m
бинарных переменных w[i]
и определить нижние границы всех функций
ki(x).
Эквивалентная запись ограничения в
обычной форме будет иметь следующий
вид:
. (3.14)
Вариант так называемого полного альтернативного ограничения имеет вид:
если h(x)³0 , то k(x) ³0, иначе (если h(x)£0) l(x) ³0, где xÎD. (3.15)
С целью осуществления эквивалентного преобразования для функций h(x), k(x), l(x) вводятся их нижние границы на D: kin, hin, lin, a для функции h(x) - еще и верхняя граница:
.
Тогда с использованием бинарной переменной w альтернативному ограничению (3.15) будет эквивалентна следующая система неравенств:
где
xÎD. (3.16)
Очевидно, если множество D определяется линейными ограничениями и таковыми же являются функции h(x), k(x), l(x) в альтернативных ограничениях и целевая функция исходной задачи, то в результате эквивалентных преобразований получается линейная задача частично-целочисленного линейного программирования.
Задача составления графика обработки деталей на станках
Таблица 3.1
Детали |
Станки |
||
T |
F |
M |
|
A |
10 |
4 |
- |
B |
5 |
6 |
3 |
В качестве примера задач с альтернативными ограничениями приведем задачу составления графика обработки деталей на станках, который обеспечивает минимальное время всего цикла обработки. Чтобы не усложнять изложение, рассмотрим данную задачу лишь в частной постановке для случая обработки деталей двух видов (А и В, например, трубки и втулки) на трех станках (токарном (T), фрезерном (F) и шлифовальном (M)).
Технологическая последовательность обработки
трубок (А) - T®F (на шлифовальном станке они не обрабатываются),
а втулок (В) - F® Т®М.
В табл. 3.1 в условных единицах приведены времена обработки деталей на станках.
Следует составить график, обеспечивающий минимальное суммарное время завершения всего цикла обработки пары деталей (одной трубки и одной втулки).
Альтернативными ограничениями в данной задаче являются условия невозможности одновременной обработки на одном станке разных деталей.
Для
первоначальной формализации задачи
достаточно ввести следующие оптимизационные
переменные
,
определяющие моменты
времени начала обработки деталей А и В
на соответствующих станках,
и переменную tk
, определяющую момент
времени завершения всего цикла обработки.
Тогда задача запишется в следующем
виде:
, (3.17)
; (3.18)
; (3.19)
либо
,
либо
,
или, что одно и то же: (3.20)
(либо
,
либо
либо
,
либо
,
или, что одно и то же: (3.21)
(либо
,
либо
).
В этой задаче первые два ограничения определяют установленную технологическую последовательность обработки деталей: (3.18) – для детали А, а (3.19) – для В.
Альтернативные ограничения исключают планирование обработки деталей А и В одновременно на токарном станке (3.20), на фрезерном станке (3.21).
После эквивалентных преобразований получаем следующую задачу частично-целочисленного программирования:
,
;
;
; (3.22)
, (3.23)
где М – нижняя граница функций типа k(x), h(x) для всех альтернативных ограничений данной задачи (3.20, 3.21). Может быть с гарантией определена как М= -56 (взятая со знаком минус удвоенная сумма всех чисел в табл.3.1).
Задачи с разрывными целевыми функциями.
Целевая функция
,
где
,
не
всегда адекватно отображает реальную
ситуацию.
В некоторых случаях возникает необходимость использовать разрывную функцию с начальным ненулевым значением в точке разрыва:
(3.24)
Задача с такой функцией относится к классу нелинейного программирования. Однако она может быть преобразована к линейной задаче частично-целочисленного программирования (если, конечно, ограничения имеют линейный вид). Это делается путем введения n бинарных оптимизационных переменных w[j], линейных функций вида
(3.25)
и ограничений
(3.26)
где М[j] - верхняя граница для x[j] в рассматриваемой задаче, которая считается известной (минимальное возможное значение x[j] при этом предполагается равным единице). Ограничения (3.26) осуществляют синхронизацию изменения переменных x[j] и w[j], не ограничивая выбор значений x[j].
Примером такого рода задач является транспортная задача с фиксированными доплатами (наличием таких доплат она отличается от рассмотренной в 1.1.3. Т-задачи):
,
,
, (3.27)
,
,
,
,
где
- нелинейная
стоимость перевозки, определяемая
следующим
образом:
(3.28)
С использованием изложенного выше подхода эквивалентная задача частично-целочисленного программирования будет иметь следующий вид:
(3.29)
Если все a[i] и b[j] – целые числа, то задача становится задачей целочисленного программирования.
Методы неявного перебора.
Применяются для решения задач целочисленного программирования.
