- •Оглавление
- •Введение
- •Работа №1. Графический метод решения задачи линейного программирования
- •Работа №2. Решение задачи линейного программирования симплекс-методом
- •Работа 3. Задача коммивояжера (метод ветвей и границ)
- •Матрица стоимостей (условные единицы)
- •Редукция строк
- •Редукция столбов
- •Значения АiиВj
- •Значения Фij
- •Преобразованная матрица стоимости
- •Вторая матрица решений
- •Третья матрица решений
- •Матрица стоимости возврата
- •Работа №4. Транспортная задача
- •Работа №5. Нелинейное программирование
- •Работа №6. Планирование рабочей силы
- •Работа №7. Оптимизация замены оборудования на предприятии
- •Варианты задания для выполнения работы
- •Работа №8. Задачи упорядочевания (алгоритм джонса)
- •Алгоритм джонсона для решения задачи упорядочения nх2
- •Варианты для задания №1
- •Варианты для задания №2
- •Вопросы к лабораторной работе №1
- •Список литературных источников
- •«Оптимизация инженерных решений»
- •400131, Г. Волгоград, пр. Им. В. И. Ленина, 28. Корп. 1
Работа №5. Нелинейное программирование
Цель работы — знакомство с простейшей задачей нелинейного программирования (нахождение оптимального значения функции одной переменной) и одним из методов ее решения — методом золотого сечения. Приобретение навыков решения оптимальных задач встроенными средствами системы MathCAD.
Программное обеспечение: интегрированная математическая системаMathCAD.
Теоретическое введение
Разработаны численные методы решения задач минимизации нелинейной функции как при ограничениях, так и без ограничений. Задачи и методы целесообразно изучать по схеме от простого к сложному. Сначала излагаются методы минимизации функции одной переменной. Далее рассматриваются методы для решения задач без ограничений с целевой функцией нескольких переменных. Наиболее сложными являются задачи оптимизации с ограничениями.
Универсального метода, с помощью которого можно было бы успешно решать разнообразные задачи оптимизации с ограничениями, не существует. Поэтому для решения каждого конкретного класса задач используют «свои» численные методы.
Классический метод минимизации функций одной переменной.Рассмотрим задачу нахождения минимума функции f(x)на отрезке [a; b]. Классический метод подробно излагается в курсе математического анализа. Основным недостатком классического метода является узкая область его применения.
Если значения целевой функции определены из наблюдений или в результате проведения экспериментов, то получить аналитическое выражение для производной трудно. Но даже если f'(х) найдена, то отыскание корней уравнения f'(х)=0 может составить сложную вычислительную задачу. Поэтому разработаны методы минимизации, которые не требуют числового значения производных и в которых объем вычисления значений целевой функции является наименьшим.
Унимодальные функции. Выделим класс функций, обладающих важным свойством.
Функция f(x)называется унимодальнойна отрезке [a; b],если онаимеет на этом отрезке единственнуюточку глобального минимума xmin и слева от этой точки является строгоубывающей, а справа — строго возрастающей.
Другими словами, функция f(x) унимодальная, если точка xminсуществует и является единственной. Нарис. 5.1 представлен пример графикаунимодальной функции.
Рис. 5.1
Имеет место следующее свойство унимодальной функции. Рассмотрим две произвольные точки x1, x2є[a; b] и a<x1<x2<b.
Если f(x1) <f (x2) , то xmin<x2(рис. 5.2, а), если же f (x1) >f(x2), то тогда xmin>xi(рис. 8.2, б).
Рис. 5.2
Метод золотого сечения. Будем искать точку глобального минимума унимодальной функции f(x)на отрезке [a;b]так, чтобы количество вычислений значений f(x) для заданной точности было наименьшим.
Рассмотрим на исходном отрезке точку x1и вычислимf(x).Зная значение f(x) только в одной точке, невозможно сузить область поиска точки xmin. Поэтому выбираем вторую точку x2так, чтобы a<x1<x2<bи вычисляем f(x2).
Возможен один из двух случаев:
f (x1) <f(x2), согласно свойству унимодальной функции область поиска сужается до [a; x2];
f (x1) >f (x2), тогда область поиска сужается до [x1; b].
Где же лучше всего на исходном отрезке брать точки х1 и х2?
Так как первоначально ничего неизвестно о положении точки xmin, то оба указанных выше случая равно возможны. Отсюда ясно, что точки х1 и х2 должны быть расположены симметрично относительно середины отрезка [a; b].
Чтобы найти «золотую середину», рассмотрим для простотыотрезок [1; 2] (рис. 5.3).
Рис. 5.3
Чтобы точкаВ была «выгодной» как на первом этапе, так и на следующем, она должна делить отрезок ADв таком же отношении, как и АС, т.е.АВ/AD = BC/AC. При этом в силу симметрии аналогичным свойствам будетобладать и точка С.
В
терминах координаты х
пропорция примет вид
Это
уравнение имеет корень меньше 1
и
равный
.
О
точке, которая расположена на
расстоянии
% длины
от одногоиз концов отрезка, говорят,
что она выполняет «золотое сечение»
данного отрезка. Очевидно, каждый отрезок
имеет две такие точки, расположенные
симметрично относительно середины.
Итак, точки x1и х2 должны осуществлять «золотое сечение» исходного отрезка [a; b].
Вычисляем
координаты точек, осуществляющих
«золотое сечение» исходного
отрезка,
, z0 =a0+b0-y0и
определяем значения f(y0)
иf(z0).
Сравниваем значения f(yk-1) и f(zk-1), (к>1).
Если f(yk-1) <f(zk-1), то полагаем ak = ak-1, bk= zk-1, zk= yk-1 и вычисляем координату точки (слева от имеющейся) yk = ak + bk-zkи значениеf(yk).
Если f(yk-1) >f(zk-1), то полагаем ak=ak-1, bk=zk-1, zk=yk-1 и вычисляем координату точки (справа от имеющейся) zk = ak + bk-ykи значение f(zk).
В любом из двух случаев вычисляется длина (k+1)-го отрезка: ∆k-1=bk-ykили∆k- 1= zk-ak
Работа выполняется до тех пор, пока ∆k-1<s, где s>0 — заданная точность вычислений.
Выбираем наименьшее из чисел f(yk)и f(zk)— приближенный минимум. А точка, которая ему соответствует, дает приближение к xmin.
Порядок выполнения работы
Решить задачу оптимизации в системе MathCADпо алгоритму:
задать начальные условия задачи оптимизации;
построить график функции f(x);
оформить вычислительный блок Givenс привлечением функции maximizeили minimize;
получить значения f(х)опт и хопт.
Проанализировать полученный результат.
Обратите внимание! Для поиска значений переменных x1,x2,…,xn,при которых функция f(x1,x2,...,xn) имеет максимальное или минимальное значение используются функцииmaximizef(x1, x2,..., xn) и minimizef(x1, x2, ., xn). Обе эти функции реализованы достаточно универсальным алгоритмами оптимизации. Эти функции должны использоватьсяв составе вычислительного блока, открываемого директивой Given, и возвращают векторнеизвестных, при котором заданная функция имеет максимальное или минимальное значение. Внутри блока могут быть различные ограничительные условия в виде равенств илинеравенств. Число условий ограничено только памятью ПК. Перед блоком решения нужнозадать начальные значения искомых переменных.
Объективности ради надо заметить, что результаты решения сильно зависят от выбораначальных значений и далеко не всегда имеют погрешность, устраивающую пользователя.
Пример выполнения лабораторной работы
Из круглой заготовки изготавливается пожарное ведро по простой технологии: вырезается сектор, затем полученная таким образом выкройка сворачивается в конус, а шов сваривается.
Длина
дуги выкройки становится длиной
окружности в основании конуса
,
где
R–
радиус заготовки;
–
значение угла вырезки; r
– радиус основания конуса.
Высота конуса h, радиус его основания rи радиус заготовки Rсвязаны теоремой Пифагора.
Пусть
радиус заготовки равен одному метру: R
= 1. Длина
окружностиоснования конуса
,
высота конуса
, объемконуса
.
Математическая формулировка задачи имеет следующий вид (рис. 5.4).Требуется рассчитать значение угла вырезки а, при котором объем V( ) будет максимальным, угол задаетсяв радианной мере.
При решении задачи воспользуемся встроенной функциейинтегрированной математической системы MathCADmaximize (f,varl, var2,...), возвращающей значения переменных varl, varl, ..., которыедоставляют функцииf максимальное значение.
Рис. 5.4
Решение задачи с использованием панели программирования приведено на рис.5.5.
Требования к отчету
Отчет должен содержать:
копию документа, созданного в MathCAD;
поясняющие записи из теории по теме лабораторной работы.
Варианты индивидуальных заданий
Вариант 1.Вычислить максимальное значение функции f (x) = 72x + 6х2- 8x3 -x4наотрезке [1,5; 2]. Точку х* определить с точностью до 0,05.
Вариант 2.Вычислить максимальное значение функции f (x) = 2х - x2- eXна отрезке[1; 1,5]. Точку х* определить с точностью до 0,05.
Вариант 3.Вычислить максимальное значение функции f(х) = 2 sinx–tgxна отрезке[0; π/4]. Точку х* определить с точностью до 0,05.
Вариант 4.Вычислить минимальное значение функции f(х) = 1 - 32х + 4х2+ х4наотрезке [1; 2]. Точку х* определить с точностью до 0,01.
Вариант 5.Вычислить минимальное значение функции f(х) = 1 + 4х + 2х2+ х4на отрезке [-1; 0]. Точку х* определить с точностью до 0,01.
Вариант 6.Вычислить максимальное значение функции f(х) = 2 + 5х -
-10х2+ 5х3- x5на отрезке [-3; -2]. Точку х* определить с точностью до 0,01.
Вариант 7.Вычислить максимальное значение функции f(х) = 3 + 120х - 4х2- х4наотрезке [2,5; 3]. Точку х* определить с точностью до 0,01.
Вариант 8.Вычислить максимальное значение функции f(х) = х -1х2+ 2х3- 1х7наотрезке [1,2; 2]. Точку х* определить с точностью до 0,01.
Вариант 9.Вычислить максимальное значение функции f(х) = 5х + х2- 1х4на отрезке [1; 3]. Точку х* определить с точностью до 0,01.
Вариант 10.Вычислить максимальное значение функции f(х) = 1 + х -2х2+ 4х4наотрезке [0; 1]. Точку х* определить с точностью до 0,01.
Вариант 11. Вычислить минимальное значение функции f(х) = 2х +х - -5x3+ 2x4на отрезке [-1; 0,5]. Точку х* определить с точностью до 0,01.
Вариант 12.Вычислить минимальное значение функции f(х) = 2х + (х + 1)4на отрезке [-3; -1]. Точку х* определить с точностью до 0,01.
Вариант 13.Вычислить минимальное значение функции f(х) = 2х + х -5х на отрезке [-1; -0,5]. Точку х* определить с точностью до 0,01.
Вариант 14.Вычислить максимальное значение функцииf(х) = х - 2х+ 5х на отрезке [1; 2]. Точку х* определить с точностью до 0,01.
Вариант 15.Вычислить максимальное значение функции f(х) = 1 - 6х - 3х2- х6наотрезке [-1; 0]. Точку х* определить с точностью до 0,01.
Вариант
16.Вычислить
максимальное значение функции f(х)
= 80х
- 30х2-
наотрезке
[1; 2]. Точку х*
определить с точностью до 0,01.
Вариант
17.Вычислить
максимальное значение функции f(х)
= 1 + 2х+
-
наотрезке
[1; 1,5]. Точку х*
определить с точностью до 0,01.
Вариант
18.Вычислить
минимальное значение функцииf
(x)
=
x2
+ x(lnx-1)
наотрезке [0,5; 1]. Точку х*
определить с точностью до 0,01.
Вариант 19.Вычислить максимальное значение функции f (x) = x3- ex- 2xна отрезке [-2; 1]. Точку х* определить с точностью до 0,01.
Контрольные вопросы
В чем состоит классический метод оптимизации функции одной переменной?
Какие функции называются унимодальными?
В чем состоит суть метода золотого сечения?
Какая точка выполняет золотое сечение отрезка [0;1]?
Рис. 5.5
