Mathcad - УМКД_ПМС_Лабораторная работа_3 2012
.pdfЛабораторная работа №3
Решение задач оптимизации в программной среде MathCad
Цели работы: Решение задач условной оптимизации.
Использование специальных функций MathCad для решения задач оптимизации.
1.1 Решение задачи условной оптимизации.
Рассмотрим следующую общую задачу нелинейного программирования: Минимизировать F(x) при ограничениях:
φi(x) = 0
ψj(x) 0
где x = x1, x2 , ... , xn
Ограничения в виде неравенства ψj(x) 0
- называется активным, или связывающим, в точке (x'), если ψj(x') = 0,
- и называется неактивным, или не связывающим, в точке (x'), если ψj(x') < 0,
где (x') - допустимая точка, то есть удовлетворяющая всем ограничениям.
Пример 1.1 Оптимизация с использованием встроенных функций Maximize() и Minimize()
Найти минимум или максимум целевой функции в Mathcad удобно с использованием функций для минимизацииMinimize()
или максимизации Maximize().
Найдем миниум функции цели, соблюдая ограничения задачи
F(x1,x2) := x12 - x2
φ1(x1,x2) := x1 + x2 - 6 |
где |
|
φ1(x1,x2) = 0 |
|||||
ψ1(x1,x2) := -x1 + 1 |
где |
|
ψ1(x1,x2) 0 |
|||||
ψ2(x1,x2) := x12 + x22 - 26 |
где |
|
ψ2(x1,x2) 0 |
|||||
x1 |
4 |
- начальные приближения для искомых переменных. |
||||||
|
|
:= |
|
|||||
x2 |
8 |
При применении функций Minimize()/Maximize() в блоке решения [Given ... Minimize()/Maximize()] должны |
||||||
|
|
|
|
|||||
|
|
|
|
быть заданы только ограничения, |
|
|
||
|
|
|
|
сама оптимизируемая функция F(x) указывается непосредственно в функции Minimize()/Maximize(). |
||||
Given |
|
|
Если условия/ограничения отсутствуют, то ключевое слово Given не используется. |
|||||
|
|
|
|
|
|
|
||
|
φ1(x1,x2) = 0 |
При формировании ограничений вида равенства или неравенства |
||||||
|
шаблоны знаков равенства =, больше >, меньше <, |
|||||||
|
ψ1(x1,x2) 0 |
больше или равно |
, меньше или равно |
|||||
|
ψ2(x1,x2) 0 |
следует брать из панели булевские |
|
|||||
Для повышения точности полученного результата выполнить команду Инструменты/Параметры документа. |
||||||||
Выбрать вкладку Встроенные переменные; |
|
|
|
|||||
для переменных TOL и CTOL задать значения 0.0000001 |
|
|
||||||
|
|
|
|
|
|
Для получения формата результата, представленного в образце |
||
Нахождение минимума и присвоение искомым |
установить курсор в блок с выведенным результатом; |
|||||||
вызвать команду Формат/Результат; выбрать вкладку Формат числа; |
||||||||
переменным найденных значений: |
|
задать формат Десятичный, число десятичных знаков 5 |
||||||
|
|
|
|
|
|
|||
|
x1 |
|
|
|
|
|
|
|
|
|
:= Minimize(F,x1,x2) |
|
x1 |
1 |
|||
|
x2 |
|
|
|
||||
|
|
|
|
|
|
|
= |
|
|
|
|
|
|
|
x2 |
5 |
Проверим полученную точку на соблюдение ограничений
φ1(x1,x2) = 0
ψ1(x1,x2) = -5.093 10- 8
ψ2(x1,x2) = -4.074 10- 7
Для анализа функции цели в окрестности точки решения получим графическое отображение функции цели
Графическое отображение минимизируемой функции F(x) и ограничений φ1,ψ1,ψ2 |
при помощи графика поверхности: |
||
|
|
Для отображения графика в соответствующем рисунку виде |
|
|
|
вставьте шаблон График поверхности, в нижнем углу |
|
|
|
шаблона перечислите имена вставляемых функций. |
|
|
|
Откройте окно форматирования диаграммы, |
|
|
|
на вкладке Дополнительно выберите Карту цветов |
|
|
|
Радуга. |
|
|
|
Для График2, График3, График4 задайте на этой вкладке |
|
|
|
Блеск 0, |
|
|
|
%прозрачности |
60. |
|
|
На вкладке Оформление для каждого из графиков с |
|
|
|
График1 по График4 задайте |
|
|
|
в области Параметры заливки |
|
|
|
опцию Заливка контуров |
|
|
|
|
|
F,φ1,ψ1,ψ2
Пример 2 - Оптимизация с использованием функций Maximize()/Minimize()
Найти максимумы и минимумы функции
(x22 - 0.5)2
F(x1,x2) := sin(x1 + x2) -
0.132 |
|
|
|
на заданном интервале изменения переменных: |
0 x1 7 |
-1 x2 0.5 |
|
Для оценки поведения функции цели полезно построить график линий уровня и график поверхности |
|||
для функции цели в заданном интервале: |
Для отображения графика в соответствующем рисунку виде вставьте |
||
|
|
||
|
|
шаблон График поверхности, |
|
|
|
||
|
|
в нижнем углу шаблона перечислите имена вставляемых функций. |
|
|
|
Откройте окно форматирования диаграммы, |
|
|
|
на вкладке Общиедля График1 выберите График поверхности, |
|
|
|
для График 2 - Линии уровня; |
|
|
|
на вкладке Дополнительно выберите Карту цветов Радуга. |
|
|
|
На вкладке Данные быстрого графика |
|
|
|
задайте для каждого из графиков в областях дискретных значений |
|
|
|
диапазоны изменения переменных. |
|
|
|
Область 1 соответствует диапазону изменения x1, |
|
|
|
0 x1 7 |
|
|
|
область 2 соответствует x2 -1 x2 0.5 |
|
|
F,F |
Проверьте, чтобы на этой вкладке в области Система координат |
|
|
было отмечено Декартовы. |
|
|
|
|
На вкладке Оформление для каждого из графиков График1 и |
|
|
|
График2 задайте в области Параметры заливки |
|
|
|
опцию Заливка контуров |
|
Аналогичным образом постройте поверхность только для одного графика функции F.
Переведите в режим отображения линий уровня.
На вкладке Специальная снять отметку с опции Автоматический контур и
отметить опцию Нумерация.
F
Проведем поиск минимумов и максимумов функции при помощи встроенных функций MathCad
Для решения примера 2 удобно использовать функции Maximize()/Minimize(), которые позволяют найти локальный максимум/минимум. В этом случае нет необходимости в явном вычислении производных, т.к. встроенные функции имеют свои средства для проверки экстремумов.
Начальные |
|
|
|
Решение и |
|
|
|
|
|
|
Значение целевой функции |
||
приближения |
|
|
результат: |
|
|
|
|
|
|
в точке решения: |
|||
из графика: |
|
|
|
|
|
|
|
|
|
|
|||
x1 |
|
4.5 |
x1 |
|
|
|
|
4.712 |
|
|
|
||
|
|
|
|
|
|
|
|
||||||
|
:= |
|
|
|
|
:= Minimize(F,x1,x2) |
= |
|
-2.165 10 |
- 11 |
|
F(x1,x2) = -2.894 |
|
x2 |
|
0.1 |
x2 |
|
|
|
|
|
|
||||
x1 |
|
2.2 |
|
x1 |
|
|
|
2.278 |
|
|
F(x1,x2) = 1 |
||
|
:= |
|
|
|
|
:= Maximize(F,x1,x2) = |
|
|
|
|
|||
x2 |
|
-0.7 |
|
x2 |
|
|
-0.707 |
|
|
|
1.3 Тестирование встроенных функций Maximize() и Minimize()
Тестовая функция Пауэлла (при x1' =0, x2' = 0, x3' =0, x4' = 0, значение F(x1', x2', x3', x4') = 0 ):
Pauell(x1,x2,x3,x4) := (x1 + 10 x2)2 + 5 (x3 - x4)2 + (x2 - 2 x3)4 + 10 (x1 - x4)4
Pauell(0,0,0,0) = 0
x1 |
|
0.1 |
x1 |
|
|
0.025 |
|
|||
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
-2.462 10- 3 |
|
x2 |
:= |
0.2 |
|
x2 |
:= |
|||||
x3 |
0.3 |
|
x3 |
Minimize(Pauell,x1,x2,x3,x4) = |
|
|
||||
|
|
|
0.012 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
x4 |
|
0.4 |
x4 |
|
0.012 |
|||||
|
|
|
|
Pauell(x1,x2,x3,x4) = 7.258 10- 7
Задания для самостоятельного решения
Пример С.1 На минимизацию с использованием встроенных функций Mathcad Minimize() и Maximize()
Минимизировать
F(x1, x2, x3) = 1000 - x12 - 2x22 -x32 - x1x2
при ограничениях:
x12 + x22 + x32 - 25 = 0 8x1 + 14x2 + 7x3 - 56 = 0 x1 ≥ 0
x2 ≥ 0 x3 ≥ 0
Решите пример используя встроенные функции Mathcad:
[Given ... Minimize()/Maximize()].
Пример С.2 На минимизацию с использованием встроенных функций Mathcad Minimize() и Maximize()
Найти максимальное и минимальное значение функции
F(x1,x2):= sin(x1)+ sin(x2)- sin(x1 x2)
заданной в интервале независимых переменных
-3 x1 3
-4 x2 4
Решите пример используя встроенные функции Mathcad: [Given ... Minimize()/Maximize()].