Решение задач линейного программирования в среде wxMaxima. Практикум. Учебное пособие
.pdf
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ
ФГБОУ ВО «ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ»
Л. А. КОРОБОВА, С. Н. ЧЕРНЯЕВА, Ю. А. САФОНОВА, В. В. ДЕНИСЕНКО
РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
В СРЕДЕ wxMAXIMA
Утверждено редакционно-издательским советом университета
в качестве учебного пособия
ВОРОНЕЖ
2020
УДК 519.2 ББК З973.2-018я7
Р47
Научный редактор профессор Д. С. САЙКО
Р е ц е н з е н т ы:
кафедра систем управления и информационных технологий в строительстве Воронежского государственного технического университета;
д-р техн. наук В. В. ЛАВЛИНСКИЙ (Воронежский лесотехнический университет им. Д.С. Морозова)
Печатается по решению редакционно-издательского совета
Воронежского государственного университета инженерных технологий
|
Решение задач линейного программирования в среде |
Р47 |
wxMaxima. Практикум [Текст] : учеб. пособие / Л. А. Коробова, |
|
С. Н. Черняева, Ю. А. Сафонова, В. В. Денисенко; Воронеж. гос. |
|
ун-т инж. технол. - Воронеж : ВГУИТ, 2020. – 55 с. |
ISBN 978-5-00032- 452-3
Учебное пособие разработано в соответствии с требованиями ФГОС ВО подготовки выпускников по направлениям09.03.02 - «Информационные системы и технологии», 09.03.03 - «Прикладная информатика», 27.03.01 - «Стандартизация и метрология», 27.03.02 - «Управление качеством», 15.03.02 - «Технологические машины и оборудование», 15.03.03 - «Прикладная механика», 19.03.01 - «Биотехнология». В пособии рассматривается решение типовых задач линейного программирования с использованием системы компьютерной математики wxMAXIMA.
Может использоваться для направлений 09.04.02 - «Информационные системы и технологии», 09.04.03 - «Прикладная информатика», 27.04.01 - «Стандартизация и метрология», 27.04.02 - «Управление качеством» 15.04.02 - «Технологические машины и оборудование».
|
1602090000-02 |
УДК 519.2 |
Р |
Без объявл. |
ББК З973.2-018я1 |
|
ОК2(03) – 2020 |
|
ISBN 978-5-00032-452-3 |
© Коробова Л. А., Черняева С. Н., |
|
Сафонова Ю. А., Денисенко В. В., 2020
© ФГБОУ ВО «Воронеж. гос. ун-т инж. технол.», 2020
Оригинал-макет данного издания является собственностью Воронежского государственного университета инженерных технологий, его репродуцирование (воспроизведение) любым способом без согласия университета запрещается.
Практическая работа № 1.
Графическое решение задачи линейного программирования
Цель работы: изучить графический способ решения задач линейного программирования.
Справка. Линейное программирование (ЛП) – раздел математики, посвященный методам нахождения оптимума линейной функции нескольких переменных при линейных ограничениях типа равенства и неравенства.
Если число входных параметров(искомых переменных) равно двум, то задача линейного программирования имеет -на глядное графическое решение.
Порядок выполнения работы
q = x1 - x2 ® min |
|
|
ì x1 - 2 × x2 £ 1 |
(1) |
|
ï |
|
(2) |
ï- 2 × x1 + x2 £ 2 |
||
D : í |
£ 3 |
(3) |
ï3 × x1 + x2 |
||
ï |
³ 0 |
(4) |
îx1 ³ 0, x2 |
||
где D – область допустимых значений переменных x1, x2. Построим систему координат Х1ОХ2, так как xj ≥ 0 (4), то вся область D принадлежит первому координатному углу.
1-й этап. Изображение области D на плоскости. Обозначим D1 – множество точек (х1, х2), удовлетворяющих неравенству (1). Вся плоскость разбивается на множество точек, принадлежащих D1 (условие выполняется) и не принадлежащих D1 (условие не выполняется). Построим границу областиD1. На плоскости это будет прямая x1 - 2×x2 = 1 или x1 =1 + 2×x2. Ее можно построить по двум точкам: (0; -0,5), (1; 0). Полученная прямая делит плоскость на две полуплоскости. Одна из них удовлетворят условию, а вторая – нет. Чтобы проверить, какая полуплоскость удовлетворяет условию, надо взять любую точку плоскости и подставить ее координаты в условие(1). Если условие выполняется, то точка находится в полуплоскости, принадлежащей D1. Например, подставим
3
точку (0, 0) - неравенство выполняется, следовательно, D1 находится выше прямой.
Аналогичным образом строим для неравенств (2) и (3). Область D – точки, которые одновременно принадлежат D1, D2 и D3
(рис. 1).
Рис. 1. Область допустимых значений |
|
|
Справка. Если условие имеет вид равенства, то |
множество |
|
точек, удовлетворяющих ему – это прямая. |
|
|
Пример: |
|
|
ì x1+ x2 £ 2, |
(5) |
|
ï |
- x2 = 0, |
(6) |
íx1 |
||
ï |
³ 0, x2 ³ 0. |
(7) |
î x1 |
||
Условия (5) и (7) дают треугольник ОАВ. Второе условие (6) дает прямую х1 = х2. Так как условия должны выполняться одновременно, то областью D будет отрезок ОС внутри D1 (рис. 2).
Рис. 2. Область - отрезок
4
2-й этап. Изображение целевой функции. Целевая функция
– это функция, для которой нужно найти min или max. Если она зависит от двух переменных, то ее изображают в виде линий рав-
ного уровня – таких |
линий, в |
каждой |
точке которых функция |
имеет одинаковое значение. |
|
|
|
Способ построения линий равного уровня. Зафиксируем |
|||
любое значение q, |
например, |
q = |
0. Получим уравнение |






- это будет линия q = 0. Зафиксируем другое значение, например, q = -1. Получим две линии уровня – параллельные прямые. При переходе от линииq = 0 к линии q = -1 целевая функция уменьшается, и т. к. нужно найти минимум, то она “улучшается”, т. е. при перемещении линии уровня в направлении, указанном стрелкой (рис. 3), целевая функция уменьшается.
Для решения задачи ЛП надо найти такую точку, чтобы она лежала на границе области D и через нее проходила линия равного уровня с минимальным q. Очевидно, что линия q = -1 не является оптимумом. Этим свойством будет обладать линия, проходящая через точку b.
Рис. 3. Линии равного уровня
Так как точка b находится на пересечении прямых 2 и 3, то для того чтобы определить ее координаты, необходимо решить
5
систему уравнений: íì- 2 × x1 |
+ x2 |
= 2 |
(2) . В результате получим |
î 3× x1 |
+ x2 |
= 3 |
(3) |
координаты b(0.2; 2.4).
Подставив координаты точки b в целевую функцию, найдем ее значение в этой точке: q = 0.2 – 2.4 = -2.2.
Справка. Иногда линия уровня параллельна какой-либо линии ограничения. В этом случае оптимальным решением будет являться целый отрезок.
Пример: 






ì x1 + x2 £ 2,
ï
í x1 - x2 = 0,
ïîx1 ³ 0, x2 ³ 0.
В данном случае решением будет отрезок [a, b] (рис. 4).
Рис. 4. Решение - отрезок
В целевую функцию можно подставлять координаты любой точки, принадлежащей этому отрезку.
Задание. Исходные данные - в приложении 1.
1.Построить область допустимых значений.
2.Построить линии равного уровня.
3.Записать результат.
Оформление отчета
Отчет должен быть оформлен грамотно, аккуратно, написан разборчиво. Все этапы выполнения работы необходимо пояснить в отчете.
6
Отчет должен содержать название лабораторной работы, задание в соответствии с вариантом, выданным преподавателем,
атакже следующие пункты:
1)условие задачи;
2)обозначения переменных;
3)целевую функцию;
3)ограничения в виде равенств и неравенств;
4)при решении с помощью программы wxMaxima в отчет необходимо включить:
–распечатку фрагмента программы wxMaxima с исходными данными, промежуточными расчетами и обращением к функции поиска решения;
–распечатку результатов.
Защита работ проводится по контрольным вопросам и -за даниям. Оформление отчета одинаково для всех практических работ.
Контрольные вопросы
1.Что такое линейное программирование?
2.Каков алгоритм построения области допустимых значений?
3.Что такое линии равного уровня?
4.Всегда ли линии равного уровня в задаче ЛП параллельные прямые?
Практическая работа № 2.
Симплекс-метод
Цель работы: изучить способ решения задач линейного программирования симплекс-методом.
Порядок выполнения работы
Пусть имеем задачу линейного программирования в канонической форме:
7
ì a1,1 x1 + a1,2 x2 |
+ ... + a1,n xn |
= b1; |
|||||||||||||
ï a |
|
x |
+ a |
2,2 |
x |
2 |
+ ... + a |
2,n |
x |
n |
= b ; |
||||
ï |
|
2,1 1 |
|
|
|
|
|
|
2 |
||||||
í |
|
|
|
|
|
|
......... |
|
|
|
|
|
|
||
ï |
|
|
|
|
|
|
|
|
|
|
|
|
|||
ïa |
m,1 |
x |
+ a |
m,2 |
x |
2 |
+ ... + a |
m,n |
x |
n |
= b ; |
||||
î |
1 |
|
|
|
|
|
m |
||||||||
q(x) = c1x1 + c2 x2 + ... + cn xn ® min.
Решение системы называется базисным, если n-m переменных равны нулю. Переменные, которые равны нулю в базисной точке, называются небазисными переменными, остальные - базисными.
Симплекс-метод заключается в целенаправленном переборе допустимых базисных решений канонической задачи линейного программирования:
-ищется начальная базисная точка;
-на последующих шагах переход от одного базисного -ре шения к другому осуществляется по правилам.
Правило 1. В базис переводится переменная xj, которая имеет в целевой функции коэффициент, максимальный по модулю среди отрицательных.
Правило 2. Из базиса исключается переменнаяxj, для кото-
рой выполняется условие: bi ® min, (ai, j > 0) ,
ai, j
где ai,j – коэффициент при хj; bi – свободный коэффициент, правая часть уравнения.
Правило 3. Если целевая функция не содержит отрицательных коэффициентов при х, то оптимальное решение найдено.
Правило 4. Если при сj не существует ai,j > 0, то задача не имеет решения.
Пример.
Решить задачу симплекс-методом: q = x1- x2 ® min
ì x1 - 2x2 £ 1,
ïï- 2x1 + x2 £ 2,
í
ï 3x1 + x2 £ 3,
ïî x1, x2 ³ 0.
8
1. Приводим задачу к каноническому виду: если знак «≤», то добавляем xj; если знак «≥», то вычитаем xj. Если ищется максимум целевой функции, то коэффициенты при xj умножаем на (-1) и устремляем функцию к минимуму.
q = x1 - x2 ® min |
|
ì x1 - 2x2 + x3 = 1, |
(1) |
ï |
(2) |
í- 2x1 + x2 + x4 = 2, |
|
ï |
(3) |
î 3x1 + x2 + x5 = 3. |
У нас получилось пять переменных: х1, х2, х3, х4, х5. Разбиваем переменные на два вида: базисные и небазисные. Количество базисных переменных равно числу ограничении, т.е. равно трем. Остальные переменные – небазисные.
2. Составляем начальную симплекс-таблицу, т. е. выражаем базисные переменные через небазисные, так чтобы свободные члены в уравнении были неотрицательные.
Выразим переменную x1 из уравнения (1) и подставим в уравнения (2) и (3). Тогда из уравнения(2) легко найти x4, из уравнения (3) найдем x5. Подставив х1 в целевую функцию, получим:
q = 1 + 2x2 - x3 - x2 = 1 + x2 - x3 ® min;
ì x1 = 1 + 2x2 - x3; |
(1' ) |
|
ï |
= 4 + 3x2 - 2x3; |
(2' ) |
í x4 |
||
ï |
= 3x3 - 7 x2 . |
(3' ) |
îx5 |
||
Получили, что х1, х4 и х5 – базисные переменные, а х2 и х3 - небазисные. Затем небазисные переменные х2 и х3 приравниваем к нулю, подставляем в получившиеся уравнения и находим значения базисных переменных и целевой функции. Таким образом, получили симплекс-таблицу для первой базисной точки:
х1 |
х2 |
|
х3 |
|
х4 |
|
х5 |
q |
|
1 |
0 |
|
0 |
|
4 |
|
0 |
1 |
|
Полученная |
базисная |
точка |
соответствует |
координатам |
|||||
точки С(1;0) (см. рис. 1, с. 4).
Так как в полученной целевой функции есть отрицательные коэффициент при х3, то оптимальное решение еще не найдено, поэтому переходим к новому базису.
9
3. В соответствии с правилом 1 в базис переводим переменную х3, так как она имеет отрицательный знак в целевой функ-
ции. В соответствии с правилом 2: |
|||
a13 |
= 1 |
b1 = 1 |
b1/a13 = 1 – min; |
a43 = 2 |
b4 = 4 |
b4/a43 = 2; |
|
a53 = -3 b5 = 0 |
a53 < 0. |
||
Из базиса исключаемх1, т. к. ему соответствует минимальное значение.
Выражаем переменную x3 из уравнения (1’) |
и подставляем |
|
в уравнения (2’), (3’) и целевую функцию. |
|
|
q = x1 - x2 ® min; |
|
|
ìx3 =1 + 2x2 - x1; |
(1'') |
|
ï |
= 2 + 2x1 - x2; |
(2'') |
íx4 |
||
ï |
= 3 - 3x1 - x2. |
(3'') |
îx5 |
||
Небазисные переменные х1 и х2 приравниваем к нулю, подставляем в получившиеся уравнения и находим значения базисных переменных и целевой функции. Таким образом, получили симплекс-таблицу для второй базисной точки:
х1 |
х2 |
|
х3 |
|
х4 |
|
х5 |
q |
|
0 |
0 |
|
1 |
|
2 |
|
3 |
0 |
|
Полученная |
базисная |
точка |
соответствует |
координатам |
|||||
точки О(0; 0) (см. рис. 1, с. 5).
Так как в полученной целевой функции есть отрицательные коэффициент при х2, то оптимальное решение еще не найдено, поэтому переходим к новому базису.
4. В соответствии с правилом 1 в базис переводим переменную х2, так как она имеет отрицательный знак в целевой функции. В соответствии с правилом 2:
a32 = -2 b3 = 1 |
a32 < 0; |
|
a42 = 1 |
b4 = 2 |
b4/a42 = 2 – min; |
a52 = 1 |
b5 = 3 |
b5/a52 = 3. |
Из базиса исключаемх4, т. к. ему соответствует минимальное значение.
Выражаем переменную x2 из уравнения (2”) и подставляем в уравнения (1”), (3”) и целевую функцию.
10
