Контрольная работа: Задачи линейного программирования. Алгоритм Флойда

Перейдем теперь к рассмотрению более общих моделей и задач.

Простейшая задача производственного планирования. Пусть имеется некоторый экономический объект (предприятие, цех, артель и т. п.), который может производить некоторую продукцию п видов. В процессе производства допустимо использование т видов ресурсов (сырья). Применяемые технологии характеризуются нормами затрат единицы сырья на единицу производимого продукта. Обозначим через ai , j количество i-го ресурса (iÎ1: m), которое тратится на производство единицы j-го продукта (jÎ1:n). Весь набор технологических затрат в производстве j-го продукта можно представить в виде вектора-столбца

а технологию рассматриваемого предприятия (объекта) в виде прямоугольной матрицы размерности т на п:

Если j-й продукт производится в количестве xj , то в рамках описанных выше технологий мы должны потратить a1, j xj первого ресурса, a2, j xj — второго, и так далее, amj xj — т-го. Сводный план производства по всем продуктам может быть представлен в виде n-мерного вектора-строки x = (x1, x2 ,...,xj ,...,xn ) . Тогда общие затраты по i-му ресурсу на производство всех продуктов можно выразить в виде суммы

представляющей собой скалярное произведение векторов аj и х. Очевидно, что всякая реальная производственная система имеет ограничения на ресурсы, которые она тратит в процессе производства. В рамках излагаемой модели эти ограничения порождаются m-мерным вектором b = (b1, b2 ,...,bm ), где bi — максимальное количество i-го ресурса, которое можно потратить в производственном процессе. В математической форме данные ограничения представляются в виде системы т неравенств:

a1,1 xl +al,2 x2 +...+al,n xn £ bl ,

o2,l xl +a2,2 x2 +...+a2,n xn £ b2 ,

am ,l xl +am,2 x2 +...+am,n xn £ bn .(7)

Применяя правила матричной алгебры, систему (7) можно записать в краткой форме, представив левую часть как произведение матрицы А на вектор х, а правую — как вектор b:

Ах £ b. (8)

К системе (8) также должны быть добавлены естественные ограничения на неотрицательность компонентов плана производства: x1 , ³ 0,..., xj ³0, ..., хп ³0, или, что то же самое,

x³ 0. (9)

Обозначив через сj цену единицы j-го продукта, получим выражение суммарного дохода от выполнения плана производства, задаваемого вектором х:

(10)

Формулы (8)-(10) являются не чем иным, как простейшей математической моделью, описывающей отдельные стороны функционирования некоторого экономического объекта, поведением которого мы хотим управлять. В рамках данной модели, вообще говоря, можно поставить различные задачи, но, скорее всего, самой «естественной» будет задача поиска такого плана производства xÎRn , который дает наибольшее значение суммарного дохода, т. е. функции (10), и одновременно удовлетворяет системе ограничений (8)-(9). Кратко такую задачу можно записать в следующем виде:

где (11)

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

Поскольку любая научная модель содержит упрощающие предпосылки, для корректного применения полученных с ее помощью результатов необходимо четкое понимание сути этих упрощений, что, в конечном счете, и позволяет сделать вывод об их допустимости или недопустимости. Наиболее «сильным» упрощением в рассмотренной модели является предположение о прямо пропорциональной (линейной) зависимости между объемами расхода ресурсов и объемами производства, которая задается с помощью норм затрат аi , j . Очевидно, что это допущение далеко не всегда выполняется. Так, объемы расхода многих ресурсов (например, основных фондов) изменяются скачкообразно в зависимости от изменения компонентов объема производства х. К другим упрощающим предпосылкам относятся предположения о независимости цен сj от объемов хj , что справедливо лишь для определенных пределов их изменения, пренебрежение эффектом кооперации в технологиях и т. п. Данные «уязвимые» места важно знать еще и потому, что они указывают принципиальные направления совершенствования модели.

2 Алгоритм Флой д а. Постановка задачи

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

Основная идея метода Флойда. Пусть есть три узла i, j и k и заданы расстояния между ними (рис. 1). Если выполняется неравенство dij + djk < dik, то целесообразно заменить путь i -> k путем i -> j -> k. Такая замена (далее ее будем условно называть треугольным оператором) выполняется систематически в процессе выполнения алгоритма Флойда.

Рис.1. Треугольный оператор

Определяем начальную матрицу расстояния D0 и матрицу последовательности узлов S0. Диагональные элементы обеих матриц помечаются знаком "-", показывающим, что эти элементы в вычислениях не участвуют. Полагаем k = 1:

Рис.2. Начальная ситуация

Основной шаг k. Задаем строку k и столбец k как ведущую строку и ведущий столбец. Рассматриваем возможность применения треугольного оператора ко всем элементам dij матрицы Dk-1. Если выполняется неравенство dik + dkj < dij, (i <> k, j <> k, i <> j), тогда выполняем следующие действия:

создаем матрицу Dk путем замены в матрице Dk-1 элемента dij на сумму dik + dkj,

создаем матрицу Sk путем замены в матрице Sk-1 элемента sij на k. Полагаем k = k + 1 и повторяем шаг k.

Поясним действия, выполняемые на k-м шаге алгоритма, представив матрицу Dk-1 так, как она показана на рисунке 3. На этом рисунке строка k и столбец k являются ведущими. Строка i - любая строка с номером от 1 до k - 1, а строка p - произвольная строка с номером от k + 1 до n. Аналогично столбец j представляет любой столбец с номером от 1 до k - 1, столбец q - произвольный столбец с номером от k + 1 до n. Треугольный оператор выполняется следующим образом. Если сумма элементов ведущих строки и столбца (показанных в квадратах) меньше элементов, находящихся в пересечении столбца и строки (показанных в кружках), соответствующих рассматриваемым ведущим элементам, то расстояние (элемент в кружке) заменяется на сумму расстояний, представленных ведущими элементами:

Рис.3. Иллюстрация алгоритма Флойда


После реализации n шагов алгоритма определение по матрицам Dn и Sn кратчайшего пути между узлами i и j выполняется по следующим правилам.

К-во Просмотров: 278
Бесплатно скачать Контрольная работа: Задачи линейного программирования. Алгоритм Флойда