Задачи для самостоятельного решения. 1. Пусть имеется три склада и четыре пункта потребления
1. Пусть имеется три склада и четыре пункта потребления. Запасы товара на складах: Стоимость перевозки единицы товара со склада
Составить наиболее экономичный план перевозок товара со складов в пункты потребления. 2. Напишите математическую постановку транспортной задачи, если матрица удельных транспортных затрат имеет вид: 3. Найдите начальный опорный план транспортной задачи двумя методами, сравните значения целевой функции для полученных планов:
Глава 3. Целочисленное программирование Очень часто из содержательного смысла задачи линейного программирования вытекает необходимость нахождения решения только в целочисленной форме. Строго говоря, такие задачи не относятся к задачам линейного программирования в их изначальном понимании и классической постановке, поэтому их выделяют в отдельный класс целочисленного или дискретного программирования. Рассмотрим несколько типов таких задач. Задача о назначении Имеется Математическая модель задачи о назначении. Найти максимум (минимум) целевой функции
при заданных ограничениях:
где
В такой постановке задачу можно решать путем простого перебора возможных значений искомых переменных. Число вариантов при этом будет равно Наиболее распространен венгерский метод решения задачи. Основой метода является следующая теорема. Пусть матрица Предположим, мы ищем максимум (минимум) целевой функции и нам удалось за несколько шагов, уменьшая или увеличивая на каждом шаге элементы строки или столбца очередной матрицы, получить матрицу
достигается выбором
Условия Для задачи в первоначальной постановке с исходной матрицей Алгоритм решения задачи о назначении, то есть поиск Шаг 1. Дана матрица эффективности (затрат):
1.1. В каждой строке матрицы 1.2. В каждом столбце матрицы
Шаг 2. 2.1. Рассматривается одна из строк матрицы 2.2. Аналогичная операция выполняется для всех строк, при выполнении каждой следующей операции уже зачёркнутые нули игнорируются. 2.3. Если после выполнения операций в каждой строке и каждом столбце стоит отмеченный знаком «*» нуль, то оптимальное решение найдено. В противном случае переходят к шагу 3. Шаг 3. 3.1. В матрице 3.1.1. все строки, в которых нет ни одного нуля 0*; 3.1.2. все столбцы, содержащие перечеркнутый нуль хотя бы в одной из отмеченных знаком «^» строчек; 3.1.3. все строки, содержащие отмеченные нули 0* хотя бы в одном из отмеченных «^» столбцов. 3.2. Шаги 3.1.2. и 3.1.3. повторяют до тех пор, пока есть что отмечать. 3.3. Зачёркивают все неотмеченные строки и каждый отмеченный столбец в матрице Шаг 4. 4.1. Вычитают 4.2. Прибавляют Если в каждой строке и каждом столбце матрицы Пример 1. Пусть для монтажа четырёх объектов требуется четыре крана. Известна матрица затрат
Распределить краны по объектам так, чтобы суммарное время монтажа было минимальным. Математическая постановка задачи: Найти при условиях:
. . .
. . .
для Заметим, что исходная матрица является матрицей затрат. Шаг 1. Модифицируем исходную матрицу затрат. 1.1. В каждой строке матрицы 1.2. В каждом столбце матрицы
Шаг 2. 2.1. Выбираем вторую строку матрицы
2.2. Аналогичную операцию выполним сначала для третьей строки, затем для первой. Получим:
Если после выполнения в каждой строке и каждом столбце стоит отмеченный нуль, то оптимальное решение найдено. В нашем примере это условие не выполнено, потому перейдем к шагу 3. Шаг 3. 3.1.1. Отметим четвертую строку знаком «^», так как в ней нет ни одного отмеченного нуля 0*. 3.1.2. Отметим третий столбец, содержащий перечеркнутый нуль в четвертой отмеченной знаком «^» строчке. 3.1.3. Отметим третью строку, содержащую 0* в третьем, отмеченном знаком «^» столбце. Больше вычеркивать нечего, получаем матрицу
3.2. Вычеркнем все неотмеченные строки и каждый отмеченный столбец в матрице
наименьший из элементов полученной матрицы Шаг 4. 4.1. Вычтем значение 4.2. Прибавим
В матрице Ответ: Задача коммивояжера Имеется Требуется найти самый короткий (дешевый) маршрут. Математическая модель имеет вид: Найти минимум целевой функции где
при заданных ограничениях:
где
Ограничения (1) Диагональные элементы матрицы Заметим, что в общем случае На практике для решения задачи коммивояжера используется метод ветвей и границ, обладающий эффективным алгоритмом. Этот метод можно использовать для решения вручную задач небольшой размерности. Реализация метода ветвей и границ в применении к задачи коммивояжера включает два основных момента: использование приведенных матриц и алгоритм разбиения маршрута на подмаршруты. Для задачи коммивояжера, так же как для транспортной задачи и задачи о назначениях, операция преобразования исходной матрицы Такая операция называется приведением матрицы, константы
Рассмотрим решение задачи на конкретном примере. Пример 1. Решите задачу о коммивояжере с матрицей стоимости переходов:
Метод является итерационным, на каждом шаге производится ветвление маршрута, обеспечивающее оптимальную стратегию. Итерация 0. Вычисление начальной оценки маршрута. Операция приведения. Для вычисления нижней границы величины затрат на любой допустимый маршрут для заданной матрицы Для удобства запишем матрицу
Вычтем эти константы из элементов соответствующих строк:
Теперь найдем приведенные константы
Вычтем константы из элементов соответствующих столбцов, получим «приведенную» таблицу 3.1., обозначим ее Таблица 3.1. Приведенная таблица
Оценка маршрута. Рассчитаем
Далее решение состоит из последовательности итераций, на каждой из которых выбирается очередной переход из одного города в другой. Итерация 1.Ветвление маршрута. Выбор первого перехода. Оценка переходов. На входе имеем приведенную матрицу На нулевой итерации в качестве перехода можно взять любой из переходов, для которого соответствующий элемент приведенной матрицы Рассмотрим эти переходы, построенные на основе приведенной таблицы 3.1. и проведем их оценку. Для каждого такого перехода Например,
Максимальная из оценок получена для перехода Оценка маршрутов. Следующий шаг — необходимо оценить маршруты Прежде всего, заметим, что фиксируя некоторый переход Оценка 1) вычеркивания элемента 2) запрета перехода
Оценка маршрута, который описывается полученной матрицей, осуществляется по уже известному алгоритму, используя операцию приведения. Эта матрица уже имеет нули во всех строках, значит:
нули есть и во всех столбцах, кроме первого, в котором минимальный элемент равен 1, следовательно:
Полная оценка подмаршрута
Приведенная матрица Таблица 3.3. Приведенная матрица
Оценка 1) элемент
Оценка маршрута, который описывается полученной матрицей, осуществляется по уже известному алгоритму, используя операцию приведения. Эта матрица уже имеет нули во всех строках, кроме первой, минимальный элемент которой равен 13, значит, сумма приведенных констант по строкам равна:
нули есть и во всех столбцах, кроме последнего, в котором минимальный элемент равен 7, следовательно, сумма приведенных констант по столбцам равна:
Полная оценка подмаршрута
Выбор подмаршрута. Сравним оценки. Выбираем маршрут с меньшей оценкой, это будет Итерация 2.Выбор второго перехода. Получен первый переход Исходная матрица для расчетов получена на итерации 1, приведенная матрица
Повторим все шаги, проделанные на итерации 1. Оценка переходов. Не будем здесь останавливаться на подробных расчетах, приведем только таблицу оценок переходов для матрицы
Максимальная из оценок получена для перехода Оценка Таким образом, подмаршруту будет соответствовать матрица 1) вычеркнут элемент 2) элемент
После этого полученная матрица, обозначим ее
Оценка Таким образом, подмаршруту 1) элемент
Эта матрица уже имеет нули во всех строках, кроме 6-ой, минимальный элемент которой равен 8. Значит, сумма приведенных констант по строкам равна:
нули есть и во всех столбцах, кроме 2-го, в котором минимальный элемент равен 17, следовательно, сумма приведенных констант по столбцам равна:
Полная оценка подмаршрута
Выбор подмаршрута. Сравним оценки. Выбираем маршрут с меньшей оценкой, это будет Итерация 3.Выбор третьего перехода. Получен маршрут Найдем третий переход. Исходная матрица для расчетов получена на итерации 2, это — приведенная матрица Повторим все шаги, проделанные на итерации 1.
Оценка переходов. Приведем таблицу оценок переходов для матрицы Таблица 3.5. Оценки переходов для матрицы
Максимальная из оценок получена для перехода
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ![]() ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1163)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |