Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

519

.pdf
Скачиваний:
8
Добавлен:
15.11.2022
Размер:
2.18 Mб
Скачать

зически неделимые величины (скажем, количество единиц продукции разных видов). Для характеристики этого класса моделейиспользуетсятермин«задачиснеделимостями».

Другим важным толчком к построению теории дискретного программирования явился новый подход к некоторым экстремальным комбинаторным задачам, для решения которых приходится вводить булевы переменные, носящие логический характер (х = 1 или х = 0).

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

Итак, можно выделить следующие основные классы задач дискретного программирования:

транспортная задача и ее варианты;

задачи с неделимостями;

экстремальные комбинаторные задачи;

задачи с неоднородной разрывной целевой функцией (транспортная задача с фиксированными доплатами);

задачи на неклассических областях (модель оптимального размера заказа с количественными скидками).

Целочисленная задача линейного программирования (задача с неделимостями)

К данному классу принадлежат задачи распределения капиталовложений и задачи планирования производства.

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

151

Математическая модель задачи примет вид z c1x1 c2 x2 ... cn xn max

при условиях

a x a x ...

a x b ;

11 1

12

2

1n n

1

a21x1 a22 x2 ...

a2n xn b2 ;

.............................................

 

 

 

 

 

 

 

 

 

a

x a

m2

x ...

a

mn

x b ;

 

m1 1

 

2

 

n

m

(3.9.1)

(3.9.2)

xj ≥ 0, j = 1, 2, ..., n;

(3.9.3)

xj – целые числа, j принадлежит J,

где J – некоторое подмножество множества индексов N = = {1, 2, ..., n}.

Если J = N (т.e. требование целочисленности наложено на все переменные), то задачу называют полностью целочисленной; если же J не равно N, она называется частично целочисленной.

Модель (3.9.1)–(3.9.3) естественно интерпретировать, например, в следующих терминах. Пусть через i = 1, ..., т обозначены производственные факторы, через j = 1, ..., п – виды конечной продукции.

Далее введем следующие обозначения:

aij – количество фактора i, необходимое для производства единицы продукта j;

bi наличные ресурсы фактора i;

сi – прибыль, получаемая от единицы продукта j. Пусть продукты j для j, принадлежащего J, являются

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

152

водящую за пределы данных ресурсов. Обозначая через xj искомые объемы выпуска продукции, мы сводим эту за-

дачу к модели (3.9.1)–(3.9.3).

Данная задача решается с помощью метода ветвей и границ.

Экстремальные комбинаторные задачи

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

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

Пусть хij = 1, если коммивояжер переезжает из города i непосредственно в город j, и xij = 0 в противном случае. Обозначим через сij расстояние между городами i и j (чтобы избежать бессмысленных значений хij = 1, предполагается, что сij равны достаточно большому числу).

Тогда математическая модель задачи примет вид

n

n

 

 

z cij xij min

(3.9.4)

i 1

j 1

 

 

при условиях

 

 

 

n

 

 

 

xij

1,

i 1, ..., n;

(3.9.5)

i 1

 

 

 

n

 

 

 

xij

1,

i 1, ..., n.

(3.9.6)

j 1

153

К приведенным ограничениям необходимо добавить условия на недопустимость подциклов, т.е. повторного посещения городов (за исключением исходного).

Общая задача календарного планирования формулиру-

ется следующим образом. Имеется п станков (машин), на которых требуется обработать m деталей. Заданы маршруты (в общем случае различные) обработки каждой детали на каждом из станков или группе станков. Задана также продолжительность операций обработки деталей. Предполагается, что одновременно на станке можно обрабатывать не более одной детали. Требуется определить оптимальную последовательность обработки. Критерием оптимальности могут выступать продолжительность обработки всех деталей, суммарные затраты на обработку, общее время простоя станков и др. Существует огромное число постановок данной задачи, учитывающих конкретные условия производства. Решение подобных задач осуществляется в рамках теории динамического программирования.

Большинство целочисленных и комбинаторных типов задач, таких, как задача с неделимостями, задача коммивояжера, задача календарного планирования, принадлежат к разряду так называемых труднорешаемых. Это означает, что вычислительная сложность алгоритма их точного решения – зависимость числа элементарных операций (операций сложения или сравнения), необходимых для получения точного решения, от размерности задачи – является экспоненциальной (порядка 2n), т.е. сравнимой по трудоемкости с полным перебором вариантов. В качестве п, например для задачи c неделимостями, служит число целочисленных переменных и число ограничений, для задачи коммивояжера – число городов (или узлов графа маршру-

154

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

Для решения целочисленных задач используются следующие методы:

– симплекс-метод (для транспортных задач, задач

оназначениях);

метод отсечения (метод Гомори);

метод ветвей и границ (в общем случае не обеспечивает получения точного решения);

эвристические методы (не обеспечивают получения точного решения).

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

Пример решения задачи о коммивояжере в Microsoft Excel

Постановка задачи

Имеется n городов. Выехав из одного из них, коммивояжер должен объехать все и вернуться в исходный город. В каждый город можно заезжать только один раз, и, следовательно, маршрут коммивояжера должен образовывать замкнутый цикл без петель (например, если есть

6 городов 1, 2, 3, 4, 5 и 6, то 1–4–2–1 и 3–5–6–3 – подцик-

лы (петли). Требуется найти кратчайший замкнутый

155

маршрут коммивояжера, если известна матрица расстояний между городами.

Имеется 6 пунктов. Коммивояжер должен посетить их по одному разу и вернуться в исходный город. Найти кратчайший маршрут. Расстояния между городами заданы в виде матрицы чисел, представленной в табл. 3.9.1.

Таблица 3.9.1 Матрица расстояний между городами

Города

№ 1

№ 2

№ 3

№ 4

№ 5

№ 6

 

 

 

 

 

 

 

№1

27

43

16

30

26

 

 

 

 

 

 

 

№2

7

16

1

30

25

 

 

 

 

 

 

 

№3

20

13

35

5

0

 

 

 

 

 

 

 

№4

21

16

25

18

18

 

 

 

 

 

 

 

№5

12

46

27

48

5

 

 

 

 

 

 

 

№6

23

5

5

9

5

 

 

 

 

 

 

 

Моделирование

Обозначим искомые переменные как xij. Тогда целевая функция

n

n

 

z cij xij min,

(3.9.7)

i 1

j 1

 

а система ограничений примет вид

n

 

 

xij 1,

i 1, ..., n;

(3.9.8)

i 1

 

 

n

 

 

xij 1,

i 1, ..., n;

(3.9.9)

j 1

 

 

ui u j nxij n 1;

i, j 1, 2, ..., n;

i j; (3.9.10)

xij 0 либо 1; i,

j 1, 2, ..., n; i

j.

156

Переменная xij принимает значение 1, если коммивояжер переезжает из города i в город j (i, j = 1, 2, ..., n, i не равен j) и 0 в противном случае. Условие (3.9.7) представляет собой оптимизируемую функцию, где cij – расстояние между городами (i, j = 1, 2, ..., n, i не равен j), причем в общем случае cij не равно cji; условие (3.9.8) означает, что коммивояжер выезжает из каждого города только один раз; (3.9.9) – что он въезжает в каждый город только один раз: (3.9.10) обеспечивает замкнутость маршрута и отсутствие петель, где ui и uj – некоторые вещественные значения (i, j = 1, 2, ..., n, i не равен j).

Решение

На рабочий лист Excel введем исходные данные и таблицу с изменяемыми ячейками (рис. 3.9.1).

Диапазон ячеек B3:G8 содержит исходную матрицу расстояний между городами, в которой расстояния от города до самого себя приняты достаточно большими по сравнению с другими расстояниями (например, 1000). Данный прием замены нулевых расстояний на бесконечные используется в классическом методе ветвей и границ решения задач данного типа с целью заранее исключить из решения нулевые по расстоянию переходы, которые хотя и являются кратчайшими, но не допустимы по смыслу задачи.

Диапазон ячеек B11:G16 предназначен для плана возможных переходов между городами, который будет получен в результате решения задачи. В ячейках B17:G17 и Н11:Н16 находятся формулы расчета количества въездов в города и выездов из городов.

157

Рис. 3.9.1. Исходные данные и таблица с изменяемыми ячейками

Вячейке D24 – целевая функция, использующая вспомогательные промежуточные расчеты блока D18:D23 (суммы переходов из городов).

Вячейку B17 введем =СУММ(B11:H16), а затем растянем эту формулу в ячейки C17:G17. В ячейку H11 – формулу =СУММ(B11:G11) и растянем ее в ячейки H12:H16. В ячейку D18 запишем формулу =СУММПРОИЗВ(B3:G3;B11:G11) и растянем в ячейки

D19:D23. В ячейку D24 введем =СУММ(D18:D23).

158

Рис. 3.9.2. Диалоговое окно Поиск решения

Для поиска оптимального набора значений параметров плана доставки, который соответствует минимальному значению целевой функции, воспользуемся надстройкой Поиск решения. Заполним диалоговое окно надстрой-

ки (рис. 3.9.2):

1.В поле Оптимизировать целевую ячейку введите адрес ЦФ D24.

2.Ниже выберите параметр Минимум.

3.В поле Изменяя ячейки переменных введите диапа-

зон ячеек с искомыми переменными B11:G16.

159

4.Установите флажок Сделать переменные без ограничений неотрицательными и выберите параметр Поиск решения линейных задач симплекс-методом.

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

B17:G17 = 1 – условие ограничения на въезды;

H11:H16 = 1 – условие ограничения на выезды;

B11:G16 – бинарные.

6.Нажав кнопку Найти решения, получим результаты решения.

На рис. 3.9.3 приведен маршрут следования.

Рис. 3.9.3. Результаты выполнения поиска решения

При упорядочении найденного решения получаем, что в качестве оптимального плана данной задачи найдены две цепочки (петли) переходов. Они отмечены стрелками на рисунке с результатом поиска решения. Коммивояжер выходит из города № 1 в город № 4, затем из № 4 в № 2, потом из № 2 в № 1 – замыкается первая цепочка. Вторая цепочка – № 3 – № 5 – № 6 – № 3. Следовательно,

160

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]