Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инфа(1).doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.76 Mб
Скачать

I7) Математическая формулировка и особенности венгерского метода решения задач целочисленного программирования.

Шаг 1. Проводим предварительные преобразования матрицы C (получаем эквивалентную матрицу).

Формулы предварительных преобразований: 1) Преобразование в столбцах:

2) Преобразование в строках:

Шаг 2. Рассматривая столбцы матрицы сверху вниз поочередно, помечают звездочками нули таким образом, чтобы они не лежали в одной строке или одном столбце (отмечается первый попавшийся [но в соответствии с алгоритмом] в столбце ноль). Если количество поставленных звездочек равно m, то оптимальное решение найдено, и процесс решения закончен.

Шаг 3.

а) столбцы, в которых есть нули со звездочками, помечают сверху знаком «+», и далее эти столбцы считают занятыми;

б) просматривая строки матрицы слева направо, ищут незанятые нули. Незанятый ноль помечается знаком штрих, строку, в которой он находится, справа помечают знаком «+», и далее эту строку считают занятой. Если в строке нуля со штрихом есть ноль со звездочкой, то снимают знак занятости «+» со столбца, где находится ноль со звездочкой. Если в строке 0’ нет нуля со звездочкой, переходят к шагу 5. Если в процессе поиска незанятых нулей оказалось, что незанятых нулей больше нет, а решение при этом не менялось, то переходят к шагу 4.

Шаг 4. Выбирается минимальный незанятый элемент (h). Число (h) вычитается из всех незанятых строк, и прибавляется ко всем занятым столбцам. Таким образом, получаем следующую эквивалентную матрицу. В новой матрице все пометки сохраняются. После этого повторяют выполнение шага 3 в части «б».

Шаг 5. Производим построение цепочки из нулей. Начиная от последнего отмеченного 0’, двигаясь по столбцу к 0*, далее по строке к 0’, и так далее, пока это возможно. Внутри цепочки знаки * снимаются, а вместо штрихов ставятся звездочки. После этого все знаки, кроме *, снимаются (штрихи, плюсы), и возвращаются к шагу 2.

18) Математическая формулировка и особенности метода ветвей и границ.

Он сводится к последовательному дихометрическому разбиению множества допустимых планов задачи целочисленного про­граммирования Lu на подмножества. Процесс разбиения продолжается до тех пор. пока каждое подмножество не будет представлять собой точку в многомерном пространстве. Процесс последовательного сече­ния исходного множества решений L0 гиперплоскостями на L11 и LI2. L12 на L21 и L22 и т. д. Чтобы уменьшить объем перебора, производят оценку образуемых подмножеств по наибольшему (наименьшему) значению для задач максимизации (минимизации) целевой функции. Это позволяет на каждом шаге исключать из рассмотрения те подмножества, для кото­рых ожидаемое значение целевой функции оказывается наихудшим.

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

Тогда процесс разбиения можно записать следующим образом:

I °. Просматриваем список L. Если он пуст, то вычисления пре­кращаются, в противном случае выбираем из списка одну из задач и исключаем ее из L.

2°. Решаем выбранную задачу без учета требований на целочис-ленность переменных. Если она не имеет допустимого решения или найденное оптимальное значение целевой функции F(X t) F(X0), то возвращаемся к 1 °.

3°. Если полученное оптимальное решение удовлетворяет цело­численным ограничениям, то F(X0) принимаем равным F(X t) и воз­вращаемся к 1 °.

4°. Выбираем любую переменную xi i= I, 2…, pt не имеющую целого значения. Пусть хit= dit a [dt] определяет наибольшее число, меньшее или равное dt. Заносим в список L две задачи, иден­тичные задаче, выбранной на шаге 10 В одной из них верхняя граница х, заменена на [dj, а в другой нижняя граница xt заменена на [dt] + I. Переходим к 1°.