- •1.2 Лабораторная работа «Решение задачи линейного
- •1.3 Лабораторная работа «Решение транспортной задачи
- •2 Нахождение условного экстремума функции
- •2.1 Лабораторная работа «Нахождение условного экстремума
- •3.2 Лабораторная работа «Нахождение кратчайшего пути»
- •3.3 Лабораторная работа «Определение максимального потока
- •Библиографический список
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Южно-Российский государственный университет экономики
и сервиса
(ЮРГУЭС)
РУКОВОДСТВО
к выполнению лабораторных работ по дисциплине
«Прикладные математические пакеты Maple»,
раздел «Решение оптимизационных задач в Maple»
для студентов всех специальностей и форм обучения
ШАХТЫ 2004
Составитель
ассистент кафедры математики ЮРГУЭС
О.В. Саакян
Рецензент
доцент кафедры математики ЮРГУЭС
к.т.н. Л.И. Син
Председатель редакционно-издательского совета ЮРГУЭС
д.ф.-м.н., проф. Фетисов В.Г.
Руководство предназначено для оказания помощи студентам при самостоятельном выполнении лабораторных работ по дисциплине «Прикладные математические пакеты Maple». Содержит описание необходимых операторов и функций, варианты индивидуальных заданий, примеры выполнения лабораторных работ по темам «Решение задач линейного программирования симплекс-методом», «Нахождение условного экстремума функции», «Решение оптимизационных задач в сетевой постановке». Используются версии Maple V R4 и старше.
Руководство может быть полезно студентам всех специальностей при выполнении лабораторных работ по дисциплинам «Математика» и «Экономико-математические методы и модели».
© Южно-Российский государственный
университет экономики и сервиса, 2004
© Саакян О.В., 2004
СОДЕРЖАНИЕ
1 |
РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ СИМПЛЕКС-МЕТОДОМ………………………………………… |
|
|
1.1 Некоторые функции пакета расширения simplex…………... |
4 |
|
1.2 Лабораторная работа «Решение задачи линейного программирования симплекс-методом»……………………………. |
5 |
|
1.3 Лабораторная работа «Решение транспортной задачи симплекс-методом»…………………………………………………... |
9 |
2 |
НАХОЖДЕНИЕ УСЛОВНОГО ЭКСТРЕМУМА ФУНКЦИИ... |
|
|
2.1 Лабораторная работа «Нахождение условного экстремума функции двух переменных»……………………………………… |
15 |
3 |
РЕШЕНИЕ ОПТИМИЗАЦИОННЫХ ЗАДАЧ В СЕТЕВОЙ ПОСТАНОВКЕ…………………………………………………… |
|
|
3.1 Некоторые функции пакета расширения networks…………. |
17 |
|
3.2 Лабораторная работа «Нахождение кратчайшего пути»…………………………………………………………………. |
18 |
|
3.3 Лабораторная работа «Определение максимального потока в сети»……………………………………………………………… |
21 |
|
БИБЛИОГРАФИЧЕСКИЙ СПИСОК…………………………… |
23 |
1 РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
СИМПЛЕКС-МЕТОДОМ
1.1 Некоторые функции пакета расширения simplex
Пакет расширения simplex содержит набор функций, предназначенных для решения задач линейной оптимизации. Отметим назначение некоторых функций этого пакета:
NONNEGATIVE |
ключевое слово, указывающее на неотрицательный тип переменных; |
standardize |
приведение заданной системы ограничений к системе неравенств со знаками . |
dual |
построение двойственной задачи для задачи линейного программирования следующего вида: целевая функция максимизируется; система ограничений записана в виде системы неравенств со знаками ; переменные задачи не отрицательны; |
feasible |
выяснение возможности решения заданной задачи линейного программирования; |
maximize |
вычисление максимума целевой функции; |
minimize |
вычисление минимума целевой функции; |
Кроме перечисленных выше функций, для решения задач линейного программирования может понадобиться специальная графическая функция inequal из пакета расширения plots, которая строит решение системы линейных неравенств и/или уравнений с двумя неизвестными. Некоторые полезные опции для этой функции:
optionsfeasible=(color=цвет) |
задает цвет внутренней области, все точки которой удовлетворяют системе неравенств и/ или уравнений; |
optionsclosed=(color=цвет) |
задает цвет граничных прямых области решений системы, соответствующих нестрогим неравенствам; |
optionsopen=(color=цвет) |
задает цвет граничных прямых области решений системы, соответствующих строгим неравенствам; |
optionsexcluded=(color=цвет) |
задает цвет внешней области. |
1.2 Лабораторная работа «Решение задачи линейного
программирования симплекс-методом»
Цель работы. Выработать у студентов практические навыки решения задач линейного программирования в среде Maple.
Задание. Построить на плоскости область решений системы линейных неравенств
и найти наименьшее (наибольшее) значение линейной функции в этой области. Построить и решить соответствующую двойственную задачу. Переменные задачи считать неотрицательными.
1. |
2. |
3. |
4. |
5. |
6. |
7. |
8. |
9. |
10. |
11. |
12. |
13. |
14. |
Пример выполнения лабораторной работы
Задача. Построить на плоскости область решений системы линейных неравенств
и найти наименьшее значение линейной функции в этой области. Построить и решить соответствующую двойственную задачу. Переменные задачи считать неотрицательными.
Решение. Введем систему неравенств и обозначим ее идентификатором sln:
> restart: sln:={4*x1-x2>=6, 9*x1+8*x2<=157, -3*x1+11*x2>=16};
На экране появится результат
Построим на координатной плоскости решение данной системы неравенств.
> plots[inequal](sln, x1=0..15,
x2=0..15,optionsfeasible=(color=red),optionsclosed=(color=black,
thickness=3),optionsexcluded=(color=yellow));
На экране появится графический объект. Из графика видно, что исходная задача имеет решение (объясните, почему)1.
Введем выражение для целевой функции и обозначим его идентификатором :
> f:=8*x1+5*x2;
На экране появится результат
Загрузим пакет simplex и преобразуем систему ограничений sln в систему неравенств со знаками . Обозначим полученную систему идентификатором slns:
> with(simplex):
> slns:=standardize(sln);
На экране появится результат
С помощью функции maximize определим значения переменных, для которых целевая функция при системе ограничений sln принимает наибольшее значение2. Так как переменные задачи неотрицательны, то при вызове функции maximize в списке параметров укажем ключевое слово NONNEGATIVE. Результат вычислений обозначим идентификатором varmax.
> varmax:=maximize(-f,slns,NONNEGATIVE);
Получим
Построим двойственную задачу. Обозначим ее идентификатором . Переменные двойственной задачи будем обозначать :
> d:=dual(-f,slns,y);
На экране появится результат
Полученное выражение для целевой функции двойственной задачи обозначим идентификатором :
> z:=157*y1-6*y2-16*y3;
Найдем решение задачи , учитывая неотрицательность ее переменных:
> varmin:=minimize(d,NONNEGATIVE);
Получим
Как видим, найденные нами решения varmax и varmin представляют собой множества простейших уравнений относительно неизвестных и соответственно, поэтому значения этих переменных по-прежнему остаются неопределенными. Чтобы определить их значения, необходимо воспользоваться функцией assign.
> assign(varmax); assign(varmin);
Теперь вычислить значение целевой функции для найденных значений неизвестных не составит труда. Для этого достаточно ввести идентификатор, обозначающий выражение для вычисления функций f и -z:
> f; -z;
Значения целевых функций f и -z прямой и двойственной задач совпадают, следовательно, задача в исходной постановке решена верно1.