Ск- это коэффициент
целевой функции при переменной Хк.
Оценки векторов,
входящих в базис всегда равно 0. Опорное
решение коэффициенты разложений и оценки
разложения векторов условий по базису
опорного решения записываются в симплексную
таблицу. (Рис 1.1.2)
Рис.1.1.2
Б |
Сб |
А0 |
А1 |
А2 |
А3 |
А4 |
А5 |
А6 |
Д2 |
А4 |
0 |
826 |
346 |
266 |
326 |
1 |
0 |
0 |
2,3 |
А5 |
0 |
726 |
196 |
156 |
136 |
0 |
1 |
0 |
3,7 |
А6 |
0 |
926 |
406 |
466 |
476 |
0 |
0 |
1 |
2,2 |
Δ
|
0 |
-57 |
-49 |
-46 |
0 |
0 |
0 |
|
В первом столбце под названием
Б записываются векторы, входящие в базис
опорного решения. Порядок записи этих
векторов соответствуют разрешенных неизвестных
в уравнениях ограничений.
Во втором столбце таблицы записывают
коэффициент целевой функции для базисных
переменных в том же порядке.
В 3 столбце таблицы записывают
значения целевой функции на опорном решении
f(Х1). Начальное
опорное решение не является оптимальным,
т.к. задачи на максимум оценки Δ1 =-57, Δ2 = -49, Δ3 = -46.
По теореме об улучшении опорного
решения, если задачи на максимум хотя
бы один вектор имеет отрицательное значение,
то можно найти новое опорное решение,
на котором значений целевой функции будет
больше.( Рис 1.1.3)
Δ0=(0 ;0;57) * (30,2
; 275,2 ; 2,3)-0= 131, 1
Δ1=(0, 0; 57) * ( 0;0;1)-57
= 0
Δ2= (0;0;57) *
( - 26,6; -59,6 ; 1,1)-49 = 8
Δ3 = (0;0;57) * (-89,2;-99,2;
1,2) -46 =22,4
Δ4=(0;0;57)* (1, 0,
0) – 0=0
Δ5=(0;0;57)* (0,1,0)
– 0 =0
Δ6=(0;0;57)* (-0,692
; -0, 392 ; 0, 002 ) – 0 = 0, 144
Вводим А1.
Выводим А6.
Рис. 1.1.3
Б |
Сб |
А0 |
А1 |
А2 |
А3 |
А4 |
А5 |
А6 |
А4 |
0 |
30,2 |
0 |
-26,6 |
-89,2 |
1 |
0 |
-0,692 |
А5 |
0 |
275,2 |
0 |
-59,6 |
-99,2 |
0 |
1 |
-0.392 |
А6 |
57 |
2,3 |
1 |
1,1 |
1,2 |
0 |
0 |
0.002 |
Δ
|
131,1 |
0 |
8 |
22,4 |
0 |
0 |
0,114 |
Ответ : это решение является
единственным оптимальным, т.к. для
всех векторов не входящих в базис оценки
положительный max f(x)=131, 1 , при Х= ( 0 ; 8 ; 22,
4; 0; 0; 0, 114)
1.2 Графический
метод решения задач линейного
программирования.
Наиболее простым и наглядным методом
линейного программирования (ЛП) является
графический метод. Он применяется для
решения задач ЛП с двумя переменными.
Рассмотрим задачу ЛП в стандартной
форме записи:
Положим n=2, т.е. рассмотрим эту
задачу на плоскости. Пусть система неравенств
совместна (имеет хотя бы одно решение).
Каждое неравенство этой системы
геометрически определяет полуплоскость
с граничной прямой ai1 x1 + ai2 x2 = bi , i=1,2,…m.
Условия
неотрицательности определяют
полуплоскости, соответственно, с граничными
прямыми x1=0,x2 =0. Система совместна, поэтому
полуплоскости, как выпуклые множества,
пересекаясь, образуют общую часть, которая
является выпуклым множеством и представляет
собой совокупность точек, координаты
каждой из которых являются решением данной
системы. Совокупность этих точек называют
многоугольником решений. Он может быть
точкой, отрезком, лучом, многоугольником,
неограниченной многоугольной областью.
Таким образом, геометрически
задача линейного программирования (ЗЛП)
представляет собой отыскание такой точки
многоугольника решений, координаты которой
доставляют линейной функции цели максимальное
(минимальное) значение, причем допустимыми
решениями являются все точки многоугольника
решений.
Линейное уравнение описывает
множество точек, лежащих на одной
прямой. Линейное неравенство описывает
некоторую область на плоскости.
Определим, какую часть плоскости
описывает неравенство 2х1+3х2£ 12. Во-первых, построим прямую
2х1+3х2=12. Эта
прямая проходит через точки (6, 0) и (0, 4).
Для того чтобы определить, какая полуплоскость
удовлетворяет неравенству необходимо
выбрать любую точку на графике, не принадлежащую
прямой, и подставить ее координаты в неравенство.
Если неравенство будет
выполняться, то данная точка
является допустимым решением и полуплоскость,
содержащая точку, удовлетворяет неравенству.
Удобной для использования при подстановке
в неравенство является начало координат.
Подставим х1=х2=0 в неравенство
2х1+3х2£12. Получим 2´0+3´0£12. Данное утверждение является
верным, следовательно, неравенству 2х1+3х2£12 соответствует нижняя полуплоскость,
содержащая точку (0.0).
Решением каждого неравенства
системы ограничений ЗЛП является полуплоскость,
содержащая граничную прямую и расположенная
по одну сторону от нее. Пересечение полуплоскостей,
каждая из которых определяется соответствующим
неравенством системы, называется областью
допустимых
решений или областью определения.
Необходимо помнить, что область допустимых
решений удовлетворяет условиям неотрицательности
(xj ³0, j=1,…,n). Координаты любой точки,
принадлежащей области определения являются
допустимым решением задачи.
Для нахождения экстремального
значения целевой функции при графическом
решении задач ЛП используют вектор–градиент,
координаты которого являются частными
производными целевой функции.
Этот вектор показывает направление
наискорейшего изменения целевой функции.
Прямая
, перпендикулярная вектору–градиенту,
является линией уровня целевой функции.
В любой точке линии уровня целевая функция
принимает одно и то же значение. Приравняем
целевую функцию постоянной величине
“a”. Меняя значение “a”, получим семейство
параллельных прямых, каждая из которых
является линией уровня.
Важное свойство линии
уровня линейной функции состоит
в том, что при параллельном
смещении линии в одну сторону
уровень только возрастает, а
при смещении в другую сторону
– убывает.
С геометрической точки зрения
в задаче линейного программирования
ищется такая угловая точка или набор
точек из допустимого множества решений,
на котором достигается самая верхняя
(нижняя) линия уровня, расположенная дальше
(ближе) остальных в направлении наискорейшего
роста.
Решение задач нелинейного программирования.
- Решение задач методом
золотого сечения.
Метод золотого сечения — метод поиска значений
действительно-значной функции на заданном
отрезке. В основе метода лежит принцип
деления в пропорциях золотого
сечения. Наиболее широко известен
как метод поиска экстремума в решении задач
оптимизации.Пусть задана функция
. Тогда для того, чтобы найти определённое
значение этой функции на заданном отрезке,
отвечающее критерию поиска (пусть это
будет минимум), рассматриваемый отрезок
делится в пропорции золотого сечения
в обоих направлениях, то есть выбираются
две точки
и
.
b-a/b-x1= b-a/x2-a=
, где
— пропорция золотого сечения.
Таким образом:
То есть точка
делит отрезок
в отношении золотого сечения. Аналогично
делит отрезок
в той же пропорции. Это свойство и используется
для построения итеративного процесса.
Алгоритм:
1) На первой итерации
заданный отрезок делится двумя
симметричными относительно его
центра точками и рассчитываются
значения в этих точках.
2) После чего тот из
концов отрезка, к которому среди
двух вновь поставленных точек
ближе оказалась та, значение
в которой максимально (для случая
поиска минимума), отбрасывают.
3) На следующей итерации
в силу показанного выше свойства
золотого сечения уже надо
искать всего одну новую точку.
4) Процедура продолжается
до тех пор, пока не будет
достигнута заданная точность.
- Решение задач методом
Фибоначчи.
В силу того, что в асимптотике
, метод золотого сечения может быть трансформирован
в так называемый метод чисел Фибоначчи.
Однако при этом в силу свойств чисел Фибоначчи
количество итераций строго ограничено.
Это удобно, если сразу задано количество
возможных обращений к функции.Алгоритм
:
Шаг 1. Задаются начальные границы отрезка
и число итераций
, рассчитывают начальные точки деления:
и значения в них целевой функции:
.
Шаг 2.
.
Шаг 3.
Пример решения задачи
методом Фибоначчи.
Найти min функции F(x) = 28x2 -30x – 42 на
отрезке с ограничением [ 0; 50 ].
Решение :
Fn+2= F10 =55
Fn+1=F9=34
Fn=F8=21
Fn-1=F7=13
Fn-2=F6=8
Fn-3=F5=5
Fn-4=F4=3
Fn-5=F3=2
Fn-6=F2=1
Fn-7=F1=1
Итерация 1.
Х1 1=a + Fn/Fn+2 =a+ F8/F10(b-a) = 21/55 * 50
=19,1
X12 =a+ Fn+1/Fn+2(b-a)
=a+ F9/F10(b-a) = 34/35 * 50= 30,9
F(X11) = 28*(19,1)2 -30*19,1-42 =10214,7-
573-42 = 9599,7
F(X12) = 28(30,9)2 – 30* 30,9 -42
= 26734,6 – 927- 42 = 25765,6
Т.к F(X11) при 1 итерации
меньше, чем F(X12) при 1 итерации,
то получаем отрезок ограничений [0 ; 30,9].
Итерация 2.
X21= a+ Fn-1/Fn+1( b-a)
= a+ F7/F9(b-a)= 13/34 * 30,9= 11,8
X22= a+ Fn/Fn+1(b-a)
= a+ F8/F9(b-a) = 21/34 * 30,9 = 19,1
F(X12)= 28* (11,8)2 – 30*11,8-42
=3898,7-354-42= 3502,7
F(X22) = 28 * (19,1)2-30(19,1)-42 = 10214,7
– 573 -42 =9599,7
Т.к. F(X12) при 2 итерации
меньше, чем F(X22) при 2 итерации,
то получаем отрезок ограничений [0
; 19,1 ].
Итерация 3.
X31=a+ Fn-2/Fn(b-a) =
a+ F6/F8(b-a) = 8/21 * 19,1= 7,3
X32=a+ Fn-1/Fn(b-a)=
a+ F7/F8(b-a)= 13/21 * 19,1= 11,8
F (X31) = 28 *(7,3)2- 30* 7,3-42 = 1492,1-
219-42= 1231,1
F(X32) = 28* (11,8)2 – 30*11,8-42
=3898,7-354-42= 3502,7
Т.к. F (X31) при 3 итерации
меньше, чем F(X32) при 3 итерации,
следовательно получаем отрезок ограничений
[0 ; 11, 8 ].
Итерация 4.
X41 = a+ Fn-3/Fn-1(b-a)
= a+F5/F7(b-a)= 5/13 * 11,8= 4,5
X42=a+ Fn-2/Fn-1(b-a)=a+
F6/F7(b-a)= 8/13 *11,8=7,3
F (X41)=28 *(4,5)2-30*4,5-42=567-135-42=390
F(X42 )= 28 *(7,3)2- 30* 7,3-42 = 1492,1-
219-42= 1231,1
Т.к F (X41) при итерации
4 меньше, чем F(X42 ) при 4 итерации,
следовательно получаем отрезок ограничений
[0 ; 7,3].
Итерация 5.
X51=a+ Fn-4/Fn-2(b-a)=
a+F4/F6(b-a)= 3/8 *7,3= 2,7
X52=a+Fn-3/Fn-2(b-a)
= a+ F5/F6(b-a) = 5/8 * 7,3=4,5
F(X51)= 28*(2,7)2-30*2,7-42= 204,1-81-42=81,1
F(X52)= 28 *(4,5)2-30*4,5-42=567-135-42=390
Т.к. F(X51) при итерации
5 меньше, чем F(X52) при 5 итерации
, следовательно получаем отрезок ограничений
[0 ; 4,5].
Итерация 6.
X61=a+Fn-5/Fn-3(b-a)=a+F3/F5(b-a)=
2/5*4,5=1,8
X62=a+Fn-4/Fn-3(b-a)=
a+F4/F5(b-a)= 3/5*4,5=2,7
F(X61)=28*(1,8)2-30*1,8-42=90,7-54-42=-5,3
F(X62)= 28*(2,7)2-30*2,7-42= 204,1-81-42=81,1
Т.к. F(X61) при итерации
6 меньше, чем F(X62) при 6 итерации
, следовательно получаем отрезок ограничений
[0 ; 2,7].
Итерация 7.
X71=a+Fn-6/Fn-4(b-a)=a+F2/F4(b-a)=1/3*2,7=0,9
X72=a+Fn-5/Fn-4(b-a)=
a+F3/F4(b-a)=2/3*2,7=1,8
F(X71)=28*(0,9)2-30*0,9-42= 22,7-27-42=
-46,3
F(X72)= =28*(1,8)2-30*1,8-42=90,7-54-42=-5,3
Т.к. F(X71) при итерации
7 меньше, чем F(X72) при 7 итерации
, следовательно получаем отрезок ограничений
[0 ;1,8 ].
Итерация 8.
X81=a+Fn-7/Fn-5(b-a)=a+
F1/F3(b-a) = ½*1,8=0,9
X82= a+Fn-6/Fn-5(b-a)=a+F2/F3(b-a)=
½*1,8=0,9
F(X81)= 28*(0,9)2-30*0,9-42= 22,7-27-42=
-46,3
F(X82)= 28*(0,9)2-30*0,9-42= 22,7-27-42=
-46,3
Ответ : -46,3 – это и есть точка
минимума.