
- •1. Математическое программирование
- •1.1. Линейное программирование
- •Упражнения
- •1.2. Решение задач линейного программирования в Microsoft Excel
- •Лабораторная работа № 1
- •1.3. Геометрическое решение задач линейного программирования
- •1.4. Симплекс-метод решения задач линейного программирования
- •1.4.1. Поиск опорного решения задачи линейного программирования
- •1.4.2. Поиск оптимального решения
- •Лабораторная работа № 2
- •1.5. Нелинейное программирование
- •Решение задач нелинейного программирования в Microsoft Excel
- •Решение задач нелинейного программирования методом Лагранжа
- •Лабораторная работа № 3
- •2. Динамическое программирование
- •Лабораторная работа № 4
- •3. Сетевое планирование
- •3.1. Этапы сетевого планирования
- •3.2. Пример сетевого планирования
- •4. Потоки в сетях
- •4.1. Алгоритм построения максимального потока в транспортной сети
- •4.2. Построение максимального потока в сетях с неориентированными дугами
- •Лабораторная работа № 5
- •5. Принятие решений в условиях неопределённости
- •5.1. Основные понятия теории игр
- •5.2. Платёжная матрица игры
- •5.3. Нижняя и верхняя цены игры. Принцип минимакса
- •5.4. Решение игр в смешанных стратегиях
- •Лабораторная работа № 6
- •Литература
1.3. Геометрическое решение задач линейного программирования
Если система ограничений и целевая функция задачи линейного программирования содержат две переменные, то эту задачу можно решить геометрически.
Геометрическое решение задачи линейного программирования состоит в следующих действиях:
заменить в каждом ограничении знак неравенства на знак равно;
в прямоугольной системе построить соответствующие прямые,
выделить область точек на плоскости, координаты которых удовлетворяют системе ограничений (ограничению со знаком "" удовлетворяют точки, находящиеся выше прямой, а знаку "" – ниже прямой);
в целевой функции отбросить свободный член и построить соответствующую прямую;
при поиске максимума последнюю прямую параллельно перемещаем вверх, а минимума – вниз;
координаты точки области, которую прямая пересечёт последней, будут давать максимум (минимум) целевой функции, если эта точка существует.
Пример. Решить задачу линейного программирования:
f = x1 + 2x2 + 3 max
Решение.
1. Заменим в ограничениях знаки "" на знак равно, получим уравнения двух прямых:
Построим эти прямые в прямоугольной системе координат:
2. Выделим область точек на плоскости, координаты которых удовлетворяют системе ограничений (на рисунке эта область 0ABC закрашена):
первому ограничению удовлетворяют точки на плоскости, которые лежат ниже прямой L1, второму ограничению – ниже прямой L2, третьему – точки, находящиеся правее оси Ox2, четвёртому – выше оси Ox1
3. Отбросим свободный член в целевой функции, получим функцию y = x1 + 2x2, построим график этой функции (прямую L3).
4. Перемещая прямую L3 параллельно вверх, находим, что последней точкой области 0ABC, которую она пересечёт, будет точка B.
5. Для нахождения координат точки В решаем систему уравнений:
решение системы: x1
= 3, x2 = 4.
Вывод: максимальное значение целевой функции f равно 3 + 2*4 + 3 = 14 и достигается при x1 = 3, x2 =4.
Примечание.
Упражнения. Решить геометрически задачу линейного программирования, результат проверить в Microsoft Excel.
1.
2.
3.
4.
1.4. Симплекс-метод решения задач линейного программирования
Решение задач линейного программирования симплекс-методом осуществляется по следующему алгоритму.
1. Если требуется найти максимум целевой функции f,
то найти минимум целевой функции –f.
2. Найти любое опорное решение задачи линейного программирования.
3. Если опорное решение существует,
то
найти оптимальное (min) опорное решение;
4. Если требовалось найти максимум целевой функции,
то
умножить на -1 найденный минимум.
1.4.1. Поиск опорного решения задачи линейного программирования
1. Преобразовать систему ограничений к стандартному виду:
(1)
Примечание. Переменные слева от равенств называются базисными, а в круглых скобках – свободные.
2. Если в системе (1) все i 0,
то
приравнять к нулю все свободные переменные и этим получить опорное решение.
3. Если в системе (1) найдётся i < 0,
то
найти и поменять местами свободную переменную xk и базисную переменную xn (то есть свободную переменную xk ввести в состав базисных, а базисную переменную xn – в состав свободных).
4. Если обмен произвести удалось,
то
продолжить с п. 2,
иначе
опорного решения не существует.
Пример. Найти опорное решение следующей задачи линейного программирования
(2)
Решение.
1. Приводим систему ограничений к стандартному виду:
а) получаем систему линейных уравнений по правилу:
если в системе ограничений есть неравенства, то в левые части неравенств со знаком "" следует добавить новые переменные , а из левых части неравенств "" – вычесть новые переменные:
в системе ограничений (2) есть неравенства и все со знаком "", поэтому, добавляем к левым частям неравенств новые переменные:
(3)
б) Приводим систему линейных уравнений (3) к ступенчатому виду:
записываем расширенную матрицу системы из коэффициентов при неизвестных и свободных членов:
;
умножаем вторую строку на -1 и меняем местами первую и вторые строки:
;
умножаем первую строку на 5 и складываем со второй, умножаем первую строку на 3 и складываем с третьей и получаем ступенчатый вид матрицы:
.
в) Приводим систему линейных уравнений к приведённому ступенчатому виду:
первую строку умножаем на -1, третью строку делим на -3:
;
умножаем третью строку на -3 и складываем со второй, складываем третью и первую строки и получаем приведённый ступенчатый вид матрицы:
или
или
приводим систему к стандартному виду:
(4)
Базисные переменные: x1, x2 и x3, свободные переменные: x4, y1, y2 и y3.
2. В системе (4) есть не отрицательные свободные члены, поэтому ищем для обмена свободную и базисную переменные:
взять любое уравнение с отрицательным свободным членом,
в системе (4) берём первое уравнение;
если во взятом уравнении нет отрицательных коэффициентов при свободных переменных, то опорного решения не существует,
в первом уравнении два отрицательных коэффициента при x4 и y3;
взять любую свободную переменную с отрицательным коэффициентом и выделить столбец, содержащий взятую переменную,
возьмём переменную x4 и выделим столбец с x4;
|
|
|
- |
( |
|
|
|
|
) |
|
|
9 |
- |
( |
|
|
|
|
) |
|
|
|
- |
( |
|
|
|
|
) |
в выделенном столбце найти наименьшее отношение свободных членов к коэффициентам при свободных переменных, знаки которых совпадают со знаками свободных членов,
в столбце с x4 два коэффициента в первой и второй строках, знаки которых совпадают со знаками свободных членов, находим минимальное отношение:
взять базисную переменную, которая находится в строке с минимальным отношением,
минимальное отношение находится в первой строке, поэтому берём базисную переменную x1:
|
|
|
- |
( |
|
|
|
|
) |
|
|
9 |
- |
( |
|
|
|
|
) |
|
|
|
- |
( |
|
|
|
|
) |
(выделенные столбец и строка)
обменять местами выбранные свободную и базисную переменные, для этого:
выразить в выбранной строке свободную переменную через все оставшиеся и подставить полученное выражение во все оставшиеся уравнения
в нашем случае меняем местами переменные x4 и x1:
в первой строке выражаем x4 через оставшиеся переменные:
подставляем выражение для x4 во второе и третье уравнения:
и получаем новый стандартный вид системы:
(5)
В этой системе все свободные члены не отрицательные, поэтому, приравнивая к нулю все свободные переменные, получим опорное решение: