- •Экономико-математические методы и модели
- •Тема 1. Модели экономического программирования.
- •Модели линейного программирования.
- •Геометрическая интерпретация задачи лп. Графический способ решения задач лп.
- •Общие случаи решения задач лп. Симплекс-метод.
- •1 Этап:
- •Все остальные элементы пересчитываются по следующим правилам:
- •Задачи целочисленного программирование.
- •Транспортная задача.
- •Полученная задача - классическая транспортной задачей в матричной постановке.
- •Специальные виды задач линейного программирования
- •Задачи параметрического программирования (зпп)
- •Общие случаи решения зпп
- •Многоцелевые задачи (мцз)
- •Задача нелинейного математического программирования (знмп)
- •Метод неопределенных множителей Лагранжа
Специальные виды задач линейного программирования
Задача дробно-линейного программирования (ЗДЛП)
ЗДЛП возникает в том случае когда целевая функция представляет собой дробь, в числителе и знаменателе которой стоят линейные функции от переменных задач а система ограничений является линейной и определяет выпуклую область в n-мерном пространстве
F (x)=P(x)/Q(x)= max(min)
=<bi (i=1….k)
>=bi (i=k-1….l)
=bi i=l+1….m
Xi=>0
К ЗДЛП приводит например задача планирования производства в которой критерием оптимальности является рентабельность всего производства.
Геометрическая интерпретация ЗДЛП
Пусть имеется 2 переменные в задаче - Х1 и Х2
F (x)=P1x1+p2x2/q1x1+q2x2 max
A11x1+a12x2=<b1
…..
Am1x1+am2x2>=bm
Изобразим систему ограничений на плоскости Х1Х2
q1x1f+q2x2f=p1x1+p2x2
x2(q2f-p2)=x1(p1-q1f)
x2=(p1-q1f/q2f-p2)*x1
x2=kx1
k = (p1-q1f/q2f-p2)
Так как угловой коэффициент зависит от F то целевая функция вращается вокруг начала координат.
Чтобы установить характер вращения целевой функции найдем производную d(k) по d(f)
dk/df=-q1(q2f-p2)-q2(p1-q1f)/(q2f-p2)2= q1p2-q2p1/(q2f-p2)
Знак производной определяется числителем.
Если q1p2-q2p1>0 то целевая функция вращается против часовой стрелки, иначе – по часовой
Из этих условий можно сформулировать алгоритм графического решения задачи дробно-линейного программирования
Изобразить на плоскости многоугольник решений
Через точку начала координат провести прямую Х2=kX1 (с произвольным угловым коэффициентом)
Определить знак углового коэффициента (установить направление вращения прямой X2=kX1 при увеличении целевой функции)
При решении задачи на максимум вращать прямую Х2=kX1 в установленном направлении до тех пор, пока она не достигнет крайней точки многоугольника решений
Определить координаты этой точки
Пример.
f (x) = 0,5Х1+0,6Х2/Х1+Х2
0,3Х1+0,2Х2=<5
0,2X1+0,3X2=<4
0,3X1+0,2X2>=3
Xi>=0
X1/16,66+X2/25=<1
X1/20+X2/13,33=<1
X1/10+X2/15=<1
Q1p2-q2p1 = 1*2,5-1*0,5=0,1 > 0 (против часовой стрелки)
p1 = 0,5
p2 = 0,6
q2 = 1
q1 = 1
В случае когда число переменных больше 2 для нахождения её решения используется модифицированный симплекс-алгоритм. В этом случае необходимо
Привести систему ограничений к канонической форме
Записать задачу в виде симплекс-таблицы в которой две последние строки представляют собой коэффициенты числителя и знаменателя целевой функции
Для того чтобы избавиться от этой неоределенности наобходимости реализовать один шаг симплекса-алгоритма (ввести переменную х1, х2…хn)
В число базисных переменных может быть введена любая переменная (то есть в качестве разрешающего столбца можно выбрать любой столбец).
Разрешающая строка выбирается из условий минимума симплексных отношений.
Предположим что один шаг симплекс-алгоритма реализован и получено допустимое базисное решение. В этом случае полученное решение приобретет следующий вид.
После получения допустимого решения необходимо провести анализ на оптимальность.
F(x)=C/T - предположим не является максимальным. Тогда необходимо от существующего решения перейти к новому.
Переход к новому решению осуществляется путем введения в число базисных переменных переменной Х*r вместо переменной X*n+k.
F’(X)=C’/T'
C’=С*a*kr-b*k*p*r/a*kr
T’= T*a*kr-b*k*p*r/a*kr
F’(x)= (С*a*kr-b*k*p*r/a*kr)/(T*a*kr-b*k*p*r/a*kr)
Поскольку решается задача на максимум то переход будет оправдан в том случае если f’(x)-f(x)>0
f’(x)-f(x)=(C’/T')-(C/T)=(-b*k/a*kr)*(T*p*r-C*q*r)/(T*T’)
T*p*r-C*q*r=0 (*)
Для анализа оптимальности решения необходимо симплекс таблицу необходимо дополнить строкой содержащей определитель рассчитанный по правилам (*).
Если какой либо из этих определителей имеет отрицательный знак, то в этом случае решение не оптимально и необходимо осуществить переход к новому решению путем реализации одного шага симплекс алгоритма. Необходимо применить столбец с наибольшим по модулю отрицательным определителем, выбрать исходя из условия минимум симплексных отношений.
F (x) = 0,5x1+0,6x2/x1+x2 max
0,3X1+0,2X2=<5
0,2X1+0,3X2=<4
0,3X1+0,2X2>=3
Xi>=0
0 ,3X1+0,2X2+X3=5
0,2X1+0,3X2+X4=4
0,3X1+0,2X2-X5=3
Xi>=0
Б.П |
С.Ч |
Х1 |
Х2 |
Х3 |
5 |
0,3 |
0,2 |
Х4 |
4 |
0,2 |
0,3 |
Х5 |
-3 |
0,3 |
0,2 |
P |
0 |
-0,5 |
-0,6 |
Q |
0 |
-1 |
-1 |
Б.П |
С.Ч |
Х3 |
Х2 |
Х1 |
1,67 |
3,33 |
0,67 |
Х4 |
0,67 |
-0,67 |
0,16 |
Х5 |
-8 |
-1 |
0 |
P |
8,33 |
1,67 |
-0,26 |
Q |
16,06 |
3,33 |
-0,33 |
∆ |
0,5 |
0,2 |
-1,6 |
∆1= =0,2
∆2= =-1,6
X1=1,67
X2=0
F(x)=0,5