
- •Введение
- •1. Основы исследования систем и принятия решений
- •1.1. Постановка задач принятия решений и разработка моделей
- •1.2. Классификация математических моделей и методов принятия решений
- •1.3. Принятие решений в условиях определенности при векторном критерии
- •Способ 5
- •1.4. Принятие решений в условиях риска и неопределенности
- •1.5. Программное компьютерное обеспечение исследования транспортных систем
- •2. Построение математических моделей
- •2.1. Детерминированные модели
- •2.1.1. Решение систем линейных уравнений
- •2.1.2. Решение систем нелинейных уравнений
- •2.1.3. Численное интегрирование
- •2.1.4. Вычисление специальных функций
- •2.1.5. Сортировка чисел (символов)
- •Программа сортировки по индексам
- •Программа сортировки по методу "пузырька"
- •2.2. Стохастические модели
- •2.2.1. Исследование распределения случайных величин
- •1) Критерий хи - квадрат (Пирсона)
- •2) Критерий Романовского
- •3) Критерий Колмогорова
- •Ринунок 2.13 – Эмпирическая (1) и теоретическая (2) функции распределения
- •4) Критерий Мизеса-Смирнова
- •2.2.2. Генерация случайных чисел по различным законам распределения
- •2.2.3. Интервальная оценка параметров и определение интервалов распределения случайных величин
- •2.2.4. Исследование статистических зависимостей между случайными величинами
- •2.2.5. Исследование временных рядов
- •2.2.6. Системы массового обслуживания
- •1) Аналитическое исследование систем массового обслуживания
- •2) Статистическое имитационное моделирование
- •3. Оптимизационные задачи и методы их решения
- •3.1. Безусловная оптимизация для одномерной унимодальной целевой функции
- •3.2. Многомерная безусловная оптимизация
- •3.3. Оптимизация при наличии ограничений
- •3.4. Задача линейного программирования
- •3.5. Отыскание кратчайших расстояний и путей между пунктами транспортной сети. Кратчайшая связывающая сеть
- •3.6. Транспортная задача линейного программирования
- •3.7. Одномерная задача динамического программирования
- •3.8. Эвристические методы решения транспортных задач
- •3.8.1. Маршрутизация перемещения ресурсов помашинными отправками
- •3.8.2. Маршрутизация перемещения мелких партий ресурсов
- •3.9. Задачи дискретной оптимизации
- •3.9.1. Целочисленная задача линейного программирования
- •3.9.2. Задача о назначениях
- •3.9.3. Задача о ранце (рюкзаке)
- •3.9.4. Задача о коммивояжере
- •3.10. Задачи упорядочения и согласования
- •3.11. Состязательные задачи
- •3.1. Основная литература
- •3.2. Дополнительная литература
- •Приложение 1. Компьютерная программа принятия решений в условиях риска и неопределенности
- •Приложение 2. Компьютерная программа исследования распределения случайных величин
- •Приложение 3. Компьютерная программа однофакторного корреляционно-регрессионного анализа
- •Приложение 4. Компьютерная программа проведения многофакторного корреляционно-регрессионного анализа
- •Приложение 5. Компьютерная программа выравнивания динамического ряда многочленом ряда фурье
- •Приложение 6. Компьютерная программа решения задачи линейного программирования симплекс-методом
- •Приложение 7. Компьютерная программа отыскания кратчайших расстояний между пунктами транспортной сети
- •Приложение 8. Компьютерная программа решения транспортной задачи линейного программирования
- •Приложение 9. Компьютерная программа разработки сборочно-развозочных маршрутов на основе метода кларка-райта
- •Приложение 10. Компьютерная программа расчета параметров сетевого графика
- •Приложение 11. Компьютерная программа решения игровой задачи двух сторон на основе алгоритма брауна
- •Учебное издание
- •По дисциплине "Математические модели в транспортных системах" для студентов специальностей 1-44 01 01, 1-44 01 02
- •Подписано в печать .04.2006
- •220013, Г. Минск, проспект Независимости, 65.
3.4. Задача линейного программирования
Задача линейного программирования – это оптимизационная задача с линейной целевой функцией и линейными ограничениями в виде равенств и неравенств:
целевая функция
и ограничения
xi 0,
где xi, – вектор оптимизируемых управляемых параметров; сi – удельные эффект или затраты, приходящиеся на единицу xi ; aij и bi – параметры (коэффициены) ограничений; m – общее число оптимизируемых параметров; n – общее число ограничений.
Такой вид имеет формализованная постановка общей задачи линейного программирования.
Пример. Автомобиль при работе на объекте 1 имеет производительность 20 единиц, на объекте 2 – 25 единиц. На этих объектах необходимо освоить объем перевозок не более чем 175 единиц. Общее число автомобилей, задействованных на перевозках не должно превышать 8 единиц. Эффект от работы автомобиля на 1-м объекте составляет 5 единиц; на 2-м – 6 единиц. Требуется найти оптимальный вариант распределения автомобилей по объектам перевозок.
Пусть x1 – число автомобилей для работы на 1-м объекте и x2 – на 2-м объекте.
Тогда задача в математической форме имеет вид:
20 x1+ 25 x2 <= 175
x1 + x2 <= 8 ограничения
x1 >= 0
x2 >= 0
5 x1 + 6 x2 = max – целевая функция.
Двухмерная задача линейного программирования может быть решена графическим методом. Этот метод основан на получении выпуклого многоугольника допустимых решений и нахождении на нем точки (точек) экстремума.
Алгоритм графического метода следующий:
1) строятся линии ограничений и исключаются из рассмотрения запрещенные области по всем ограничениям. В результате получается выпуклый многоугольник допустимых решений;
2) строится изолиния целевой функции для произвольного ее значения;
3) изолиния целевой функция перемещается параллельно таким образом, чтобы она только касалась полученного многоугольника допускаемых решений по точке или линии при экстремуме целевой функции.
Рассмотрим графическое решение на вышеприведенном примере (рисунок 3.19).
Строим линии ограничений и исключаем запрещенные области.
1 ограничение:
x1 = 0; x2 = 175/25 = 7;
x2 = 0; x1 = 175/20 = 8.75.
2 ограничение:
x1 = 0; x2 = 8;
x2 = 0; x1 = 8.
Кроме того, ограничениями являются оси координат, так как x1 0; x2 0 .
Полученная незапрещенная область (на рисунке затемненная) – область допустимых решений.
Строим изолинию целевой функции.
Пусть Z = 30, тогда
x1 = 0; x2 = 5 ;
x2 = 0; x1 = 6.
Перемещая изолинию параллельно все выше и выше, находим наибольшее значение Z, когда изолиния только касается многоугольника допустимых решений и имеется хотя бы одна общая точка с ним. Точка "В", в которой x1 = 5 и x2 = 3 соответствует оптимальному решению поставленной задачи. Если линия уровня целевой функции касалась бы многоугольника допустимых решений не в точке, а по линии – то мы имели бы случай, когда задача имеет множество решений. Если ограничения задачи противоречивы, то задача не имеет решения (например, 1-е ограничение 20 х1 + 25 х2≥ 500).
При изменениях коэффициентов целевой функции оптимальное решение может изменяться. Так, например, при целевой функции вида 4 x1 + 6 x2 = max решение в точке А, при функции 5x1 + 6.25 x2 = max – множество точек отрезка [А,В], при функции 5x1 + 5 x2 = max – множество точек отрезка [В, C] и при функции 10x1 + 6 x2 = max решение в точке С.
При числе оптимизируемых параметров более двух мы имеем дело с выпуклым многогранником ограничений (при m = 3 ограничения определяются плоскостями, допустимая область – выпуклым многогранником, уровень целевой функции – плоскостью, решение – касание допустимой области плоскостью целевой функции).
Для решения задачи в m-мерном пространстве применяется симплекс-метод.
Идея метода – последовательный пересмотр вершин многогранника допустимых значений и выбор одной из них, соответствующей экстремуму целевой функции.
x2
8
А
7 2-е ограничение
6
изолиния целевой функции
5
4
В В
3
1-е ограничение
2
1
С
1 2 3 4 5 6 7 8 x1
Рисунок 3.19 – Графическое решение общей задачи линейного программирования
Для применения симплекс-метода исходные данные задачи приводят к каноническому (стандартному) виду путем ввода дополнительных переменных по числу ограничений типа неравенств из общего числа n. Цель – заменить ограничения типа неравенств ограничениями типа равенств. Стандартная форма задачи имеет вид:
целевая функция
ci
= 0 для
;
ограничения
где M = m+n
и
.
Для неравенств типа dij=1 и для типа dij= - 1.
Например, стандартная форма для ранее приведенной задачи следующая:
20 x1+ 25 x2 + 1 x3+ 0 x4 = 175
x1 + x2 + 0 x1+ 1 x2 = 8
Z = 5 x1+ 6 x2 + 0 x3+ 0 x4 = max.
Основные шаги решения задачи (после представления исходной системы в стандартном виде):
формируется первоначальное базисное решение;
выражается Z через небазисные переменные;
проверяется базисное решение на оптимальность. Если оптимально, то на п.10;
проверяется задача на наличие решения. Если решения нет, то выход;
выбирается из небазисных переменных та, которая способна при введении ее в базис в большей степени улучшить значение целевой функции, и вводится в базис;
определяется базисная переменная, которая выводится из базиса;
алгебраически выражается вводимая в базис переменная через переменную, выводимую из базиса и другие небазисные переменные;
алгебраически выражаются другие базисные переменные через небазисные;
переход на п. 2;
определяются значения базисных переменных. Они являются решением задачи.
Итерационный процесс (шаги 2–9) повторяются до тех пор, пока не произойдет выход на шаге 3 или 4. Алгоритм реализации отдельных шагов при решении задачи на максимум и ограничениях типа следующий:
Шаг
1 состоит в назначении базисных переменных
по числу ограничений в задаче. Базисные
переменные xu
выражаются
через небазисные xp
из равенств, в которые они входят через
значимые коэффициенты. При этом небазисные
переменные принимаются нулевыми. На
первом шаге в качестве базисных
принимаются дополнительные переменные,
а в качестве небазисных – основные,
т.е.
и
.
Тогда первое базисное решение
xm+1 = b1;
xm+2 = b2;
. . .
xM = bn;
x1 = 0;
x2 = 0;
. . .
xm = 0.
Шаг 2 – алгебраически выражается целевая функция Z через небазисные переменные
.
Шаг 3 – проверяется все ли сp≤0. Если да, то решение оптимально.
Шаг 4 – оценка наличия решения. Если при хp, имеющем сp >0, во всех уравнениях apj<0 (j =1, 2, ..., n), то решение отсутствует (выход из программы с соответствующим сообщением).
Шаг
5 – определяется та небазисная переменная,
которую наиболее целесообразно ввести
в базис, по максимуму положительного
коэффициента в текущем выражении для
целевой функции
,
где s–
номер переменной, вводимой в базис.
Шаг 6 – определяется одна из базисных переменных для вывода ее из базиса. Для этого во всех j-х равенствах для хs вычисляется отношение свободного члена bj к соответствующему коэффициенту asj (asj >0), т.е. bj/asj. Минимальное из отношений указывает на j-е равенство и соответственно на выводимую переменную из базиса.
Шаг 10 – формируется окончательное решение в виде численных значений искомых переменных, которые входят в базис. Вычисляются из последних выражений для них при значениях небазисных переменных, равных нулю. С практической точки зрения определение численных значений базисных переменных, которые являются дополнительными, не требуется. Основные переменные, которые не входят в базис, равны нулю.
Для ручного решения задачи могут использоваться симплекс-таблицы.
Решение задачи при ограничениях одновременно типа , = и отличается от приведенного алгоритма введением искусственных переменных /4/.
Рассмотрим решение симплекс-методом ранее приведенного примера задачи.
1-я итерация:
базисные переменные x3 = 175 и x4 = 8 и небазисные x1 = 0 и x2 = 0;
целевая функция Z = 5 x1 + 6 x2 ;
поскольку 5>0 и 6>0, то решение не оптимально;
так как a1.1 > 0 , a1.2 > 0 , a2.1 > 0 и a2.2 > 0, то не следует, что решения нет;
поскольку 6>5 и поиск на max, то вводим в базис x2 ;
исходя из минимума соотношений (175/25=7 в первом уравнении и 8/1=8 во втором) необходимо выводить из базиса переменную x3 (1-е уравнение);
выражаем x2 = (175-20.x1 -x3 )/25 = 7-0.8.x1-0.04.x3 (уравнение 0.8.x1+0.04.x3+ x2 =7);
выражаем другие базисные через небазисные x4 = 8 - x1 -x2 = 8 -x1 -(7- 0.8.x1 - 0.04.x3) =
= 1- 0.2.x1 + 0.04.x3 (уравнение 0.2.x1 - 0.04.x3 + x4 =1);
переход на шаг 2.
2-я итерация:
2) целевая функция Z = 5 x1 + 6 x2 = 5 x1 + 6 ( 7- 0.8.x1 - 0.04.x3) = 42 + 0.2.x1 - 0.24.x3;
3) поскольку 0.2>0, то решение не оптимально;
4) так как при x1 (c1> 0) a1.1 > 0 и a1.2 > 0 (для текущих уравнений, приведенных к основному виду со свободным членом в правой части), то не следует, что решения нет;
5) поскольку 0.2>-0.24 и поиск на max, то вводим в базис x1 ;
6) исходя из минимума соотношений 7/0.8=8.75 в первом уравнении и 1/0.2=5 во втором необходимо выводить из базиса переменную x4;
7) выражаем x1: x1 = (1+ 0.04.x3 -x4 )/0.2 = 5 + 0.2.x3 - 5.x4;
8) выражаем другие базисные переменные через небазисные
x2 = 7- 0.8.x1 - 0.04.x3 =7 - 0.8.(5 + 0.2.x3 - 5.x4)- 0.04.x3 = 3 - 0.20.x3 + 4.x4;
9) переход на шаг 2.
3-я итерация:
2) целевая функция Z=5 x1 + 6 x2 = 5 (5 + 0.2.x3 - 5.x4)+6 (3 - 0.20.x3 + 4.x4) = 43 - 0.2.x3 - 1.x4;
3) поскольку -0.2 <0 и -1 <0, то решение оптимально;
10) базисные переменные x1 = 5 и x2 = 3 .
Таким образом, как и при графическом методе, получаем, что оптимальное решение:
x1 = 5 и x2 = 3.
Компьютерная программа решения задачи линейного программирования рассмотренного вида (целевая функция на максимум и ограничения типа ≤) приведена в приложении 6.