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

2. Метод редукции множеств.

Разбиение на множества - это такое разделение множества на подмножества (классы), что последние в сумме дают множество, но между собой не пересекаются (т.е. ).

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

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

Пример. Задача о назначении (о женихах и невестах).

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

В формализованном виде задача выглядит следующим образом:

- польза от i-го претендента на j-м месте

- i-й претендент занимает / не занимает j-е место

1

2

...

n

1

2

...

n

(1)

В данной ситуации метод последовательного перебора неприменим. Запишем при j = 5.

1

2

3

4

5

1

4

3

5

6

5

2

1

1

2

4

3

3

2

5

4

3

2

4

2

3

3

7

1

5

4

3

4

4

5

Последовательно перебирая строки, выберем в каждой строке максимальный элемент (учитывая выбор, сделанный на предыдущем шаге). Получиì решение <4,5,2,3,1> при значении целевой функции, равном 21.

1

2

3

4

5

1

1

2

1

3

1

4

1

5

1

Очевидно, что это решение не является оптимальным и его модно улучшить, поменяв местами 1-го и 4-го претендентов. При этом значение целевой функции улучшится на 3 единицы (решение <3,5,2,4,1> при значении F=24), однако уверенности в том, что именно это решение является оптимальным, нет. Такой метод носиò название венгерского (метод Эстерхази).

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

1

2

3

4

5

1

-2

-3

-1

0

-1

2

-3

-3

-2

0

-1

3

-3

0

-1

-2

-1

4

-5

-4

-4

0

-6

5

-1

-2

-1

-1

0

Таким образом, невозможно получить решение с F>25 (6+4+5+7+5-1-1). Это верхняя граница оптимума. Далее произведем выбор нулей, являющихся единственными в строке/столбце с последующим условным "вычеркиванием" этих строк и столбцов из дальнейшего рассмотрения. При отсутствии в строке/столбце свободных нулевых элементов рассматривается максимальный из свободных элементов.

1

2

3

4

5

1

-1

-3

0

0

-1

2

-2

-3

-1

0

-1

3

-2

0

0

-2

-1

4

-4

-4

-3

0

-6

5

0

-2

0

-1

0

Процесс решения можно отразить в виде порфириана, а выполняемые операции свести к следующим:

  • разбиение исходного множества на подмножества с фиксацией фрагмента решения (< , , , ,1>);

  • получение верхних границ максимума на полученных ветвях;

  • выбор лучшего варианта.

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

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

Подводя итог вышесказанному, можно отметить следующие моменты:

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

  • использование схемы построения порфириана;

  • получение оценки оптимума подмножеств путем решения упрощенной задачи. При расширении границ (снятии ограничения (1)) максимум целевой функции на расширенном множестве есть верхняя оценка максимума целевой функции искомого множества;

  • проведение редукции на каждом шаге ветвления путем фиксации фрагмента множества;

  • быстрое нахождение первоначального решения и формулировка правила останова.

Рассмотрим произвольную задачу линейного программирования.

Часто встречаются ситуации, когда m и n различны (ресурсов, а следовательно, и ограничений, больше, чем продуктов, а следовательно, и переменных или наоборот). Тем не менее в оптимальном решении количество ненулевых элементов будет равно min (m,n). В такой ситуации можно воспользоваться описанным выше методом снятия ограничений с целью нахождения значения верхней границы оптимума и последующего его использования.

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

Соседние файлы в папке 2