Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие Методы оптимизации.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2.3 Mб
Скачать

Алгоритм метода потенциалов:

1). Построение первоначального опорного плана.

2). Определение потенциалов пунктов отправления (ui) и пунктов назначения ( ).

Потенциалы находят из системы уравнений где Cij - тарифы, стоящие в заполняемых клетках таблицы. Число переменных в этой системе равно m+n, число уравнений m+n-1. Для нахождения решения системы один из потенциалов приравнивается произвольному числу (например, u1=0) и последовательно находятся значения всех остальных потенциалов.

3). Проверка оптимальности плана.

Проверяем условия оптимальности: для всех свободных клеток. Вычисляем - оценки свободных переменных для оптимального базиса. Если все , то получаемый план является оптимальным, иначе - к шагу 4.

4). Выбор переменной для включения в базис (выбор клетки, в которую необходимо послать переменную).

. Если таких клеток несколько, то для заполнения выбирается клетка, имеющая минимальный тариф.

5). Построение цикла пересчета для выбранной свободной клетки i0j0.

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

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

6). Определение величины перераспределения груза.

, где xij - перевозки, стоящие в вершинах цикла, отмеченных знаком «-». Клетку, которой соответствует d, обозначим через i1j1.

7). Сдвиг по циклу пересчета (перераспределение грузов).

В выбранную для заполнения свободную клетку (i0,j0) заносится значение d. Одновременно это число прибавляется к значениям перевозок, стоящих в клетках со знаком «+», и вычитается из значений перевозок, стоящих в клетках со знаком «-». Т.о. клетка (i0,j0) становится занятой, а i1j1 - свободной.

Замечание: при сдвиге по циклу пересчета число занятых клеток остается const=n+m-1. Если d соответствует нескольким клеткам таблицы, то освобождают одну из них, а в остальные записываются нулевые перевозки и считают их занятыми. Нулевые перевозки записываются и в клетки, которые имеют меньшие тарифы.

8). Переход к шагу 2.

Пример. На 3-х складах сосредоточен однородный груз в количествах 80, 100, и 70 единиц. Данный груз необходимо доставить 4-м потребителям, потребности которых равны соответственно 80, 50, 50, 70 единиц. Матрица тарифов имеет вид:

. Необходимо определить: оптимальный план перевозок.

Составим таблицу транспортной задачи. Начальный план перевозок определим методом минимального элемента. При этом сначала помещаем 70 единиц груза в клетку с индексом 14, имеющую минимальный тариф, затем 10 единиц в клетку 12, 40 единиц в клетку 32, 30 единиц в клетку 38, 50 единиц в клетку 23, 50 единиц в клетку с индексом 21.

Пункты отправления

Пункты назначения

Запасы

B1

B2

B3

B4

A1

4

2

3

1

80

10

70

A2

6

3

5

6

100

50

50

A3

3

2

6

3

70

30

40

Потребности

80

50

50

70

Затем определяем потенциалы пунктов отправления и потенциалы пунктов назначения. Для этого составляем уравнения для занятых клеток таблицы:

U1 +V2 = 2

U1 +V4 = 1

U2 +V1 = 6

U2 +V3 = 5

U3 +V1 = 3

U3 +V2 = 2

положим U1 = 0 и последовательно найдем значения остальных потенциалов.

Получим: U1 = 0, U2 = 3, U3 = 0, V1 = 3, V2 = 2, V3 = 2, V4 = 1.

Вычислим оценки ij для всех свободных клеток таблицы:

11 = 0 + 3 – 4 = -1

13 = 0 + 2 – 3 = -1

22 = 3 + 2 – 3 = 2

24 = 3 + 1 – 6 = -2

33 = 0 + 2 – 6 = -4

34 = 0 + 1 – 3 = -2

Выбираем максимальную положительную оценку. Это оценка 22 = 2. Следовательно, на следующем шаге будет заполнятся клетка с индексом 22. Составим цикл пересчета для данной клетки и пометим его вершины последовательно знаками «+» и «–»:

Пункты отправления

Пункты назначения

Запасы

B1

B2

B3

B4

A1

4

2

3

1

80

10

70

A2

3

5

6

100

50

50

3

2

6

3

30

40

Потребности80505070

Определим величину перераспределения груза как минимальную из величин, стоящих в минусовых клетках. Это 40 единиц. Прибавляем данную величину к величинам перевозок, стоящим в клетках со знаком + и вычитаем ее из величин перевозок, стоящих в клетках со знаком – :

Пункты отправления

Пункты назначения

Запасы

B1

B2

B3

B4

A1

4

2

3

1

80

70

A2

6

3

5

6

100

10

40

50

A3

3

2

6

3

70

70

Потребности

80

50

50

70

Составляем систему уравнений для определения потенциалов и последовательно находим из нее значения всех потенциалов.

U1 +V2 = 2

U1 +V4 = 1

U2 +V1 = 6

U2 +V2 = 3

U2 +V3 = 5

U3 +V1 = 3

Тогда,

U1 = 0, U2 = 1, U3 = -2, V1 = 5, V2 = 2, V3 = 4, V4 = 1.

Пересчитываем оценки:

11 = 0 + 5 – 4 = 1

13 = 0 – 2 + 3 = 1

24 = 1 + 1 – 6 = - 4

32 = -2 + 2 – 2 = -2

33 = -2 + 4 – 6 = -4

34 = -2 + 1 – 3 = -4

Имеем две максимальные положительные оценки 11 = 13 = 1. Для заполнения на следующем шаге целесообразно выбрать клетку с индексом 13, т.к. ей соответствует меньший тариф. Строим цикл пересчета для клетки 13:

Пункты отправления

Пункты назначения

Запасы

B1

B2

B3

B4

A1

2

3

1

80

10

70

6

3

5

6

10

40

50

3

2

6

3

70

80505070

Величина перераспределения груза равна 10. Перераспределяем груз:

Пункты отправления

Пункты назначения

Запасы

B1

B2

B3

B4

A1

4

2

3

1

80

10

70

A2

6

3

5

6

100

10

50

40

A3

3

2

6

3

70

70

80

50

50

70

Находим потенциалы пунктов отправления и назначения:

U1 +V3 = 3

U1 +V4 = 1

U2 +V1 = 6

U2 +V2 = 3

U2 +V3 = 5

U3 +V1 = 3

U1 = 0, U2 = 2, U3 = -1, V1 = 4, V2 = 1, V3 = 3, V4 = 1.

Пересчитываем оценки:

11 = 0 + 4 – 4 = 0

12 = 0 + 1 – 2 = -1

24 = 2 + 1 – 6 = -3

32 = -1 + 1 – 2 = -2

33 = -1 + 3 – 6 = -4

34 = -1 + 1 – 3 = -3

Все оценки неотрицательны. Следовательно, полученный план перевозок является оптимальным.

ЦЕЛОЧИСЛЕННОЕ ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ

Задачей целочисленного линейного программирования (ЗЦЛП) называется задача линейного программирования, в которой на переменные наложено требование целочисленности. При этом если все переменные задачи должны принимать целочисленные значения, задача называется полностью целочисленной, иначе – частично целочисленной. Если множество допустимых решений задачи является конечным, то задача называется комбинаторной. В-частности, к классу комбинаторных относятся задачи булевой оптимизации, в которых переменные могут принимать только два значения: 0 или 1.

Прикладные задачи целочисленного программирования

Задача о раскрое.

Для изготовления заготовок D1,…,Dm имеется n способов раскроя материала A1,…,An. -количество заготовок i-го типа, получаемых из единицы материала при способе Aj. Имеется D единиц материала. При раскрое единицы материала по способу Aj имеются отходы площадью . Надо произвести не менее заготовок i-го типа и выполнить план с минимизацией отходов.

Таблица 11

Виды заготовок

Способы раскроя

План производства

A1

A2

An

D1

D2

Dm

A11 a21 ... am1

a12 a22 ... am2

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

a1n a2 n ... amn

b1

b2

...

bm

Отходы

C1

c2

cn

Пусть - количество единиц материала, раскраиваемого по j-му способу.

Математическая модель задачи запишется следующим образом:

;

.

Задача о ранце. Имеются предметы n видов, для каждого предмета j-го вида (j=1,n) известны его объем и стоимость . Необходимо определить такой набор предметов, суммарный объем которых не превышал бы заданного числа b, а суммарная ценность была бы максимальной. Эта задача интерпретируется как задача загрузки ранца объема b и называется одномерной задачей о ранце.

Введем целочисленные переменные , значения которых характеризует количество предметов j-го вида, помещенных в ранец. Тогда математическая модель данной задачи имеет вид:

Если ограничениями могут быть не только объем ранца, но и другие его характеристики , то получим многомерную задачу о ранце.

В случае, если количество предметов j-го вида ограничено и равно , к задаче добавляется ограничение . Если =1, то получим задачу о ранце с булевыми переменными. Тогда , причем , если j-й предмет помещен в ранец, в противном случае.

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

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

Пусть n – общее количество параметров. Введем альтернативные булевы переменные:

Тогда математическую модель задачи можно сформулировать как одномерную задачу о ранце: