Автор: Пользователь скрыл имя, 22 Декабря 2012 в 20:34, курсовая работа
В последние годы в прикладной математике большое внимание уделяется новому классу задач оптимизации, заключающихся в нахождении в заданной области точек наибольшего или наименьшего значения некоторой функции, зависящей от большого числа переменных. Это так называемые задачи математического программирования, возникающие в самых разнообразных областях человеческой деятельности и прежде всего в экономических исследованиях, в практике планирования и организации производства. Изучение этого круга задач и методов их решения привело к созданию новой научной дисциплины, получившей позднее название линейного программирования.
Аннотация………………………………………………………………………………3
Введение………………………………………………………………………………..4
Глава 1. Теоретическая часть………………………………………………………….6
1.1 История возникновения линейного программирования………………………6-8
1.2 Основные теоремы линейного программирования………………………………9
1.3 Основные понятия линейного программирования………………………….10-11
1.4 Методы решения задач линейного программирования..................................12-16
1.5 Алгоритм симплексного метода……………………………………………...17-18
1.6 Реализация симплексного метода.........................................................................19
Глава 2. Практическая часть……………………………………………………...20-27
2.1 Решение задачи линейного программирования симплексным методом......20-24
2.2 Решение задачи линейного программирования с помощью электронных таблиц………………………………………………………………………………….25
2.3 Решение задачи линейного программирования с помощью программы......26-27
Заключение…………………………………………………………………………….28
Список литературы……………………………………………………………………29
Приложение. Код программы…………………………………………………….30-38
Симплекс-таблица Т(q), соответствует
допустимому базису КЗЛП β(q)), получаемому
на q-й итерации. Столбец N(β(q)) содержит
номера базисных столбцов (в той
последовательности, в которой они
входят в базис), столбец b(β(q)) —компоненты
вектора ограничений
Безусловно, следует добавить,
что табличная модификация
Глава 2. Практическая часть
2.1 Решение задачи линейного программирования симплексным методом
Решим прямую задачу линейного программирования симплексным методом, с использованием симплексной таблицы.
Поскольку в правой части присутствуют отрицательные значения, умножим соответствующие строки на (-1).
Определим максимальное значение целевой функции F(X) = 2x1 + x2 + 2x3 + 4x4 при следующих условиях-ограничений.
x1 + 2x2 - x3 + 5x4≥22
- 2x1 + 2x2 + 3x3 - 6x4≥12
2x1 - 2x3 - 7x4≤6
Для построения первого опорного плана систему неравенств приведем к системе уравнений путем введения дополнительных переменных (переход к канонической форме).
1x1 + 2x2-1x3 + 5x4-1x5 + 0x6 + 0x7 = 22
-2x1 + 2x2 + 3x3-6x4 + 0x5-1x6 + 0x7 = 12
2x1 + 0x2-2x3-7x4 + 0x5 + 0x6 + 1x7 = 6
Введем искусственные переменные x: в 1-м равенстве вводим переменную x8; в 2-м равенстве вводим переменную x9;
1x1 + 2x2-1x3 + 5x4-1x5 + 0x6 + 0x7 + 1x8 + 0x9 = 22
-2x1 + 2x2 + 3x3-6x4 + 0x5-1x6 + 0x7 + 0x8 + 1x9 = 12
2x1 + 0x2-2x3-7x4 + 0x5 + 0x6 + 1x7 + 0x8 + 0x9 = 6
Для постановки задачи на максимум целевую функцию запишем так:
F(X) = 2x1+x2+2x3+4x4 - Mx8 - Mx9 → max
Из уравнений выражаем искусственные переменные:
x8 = 22-x1-2x2+x3-5x4+x5
x9 = 12+2x1-2x2-3x3+6x4+x6
которые подставим в целевую функцию:
F(X) = (2-M)x1+(1+4M)x2+(2+2M)x3+(4-
Таблица 1 - Матрица коэффициентов A = a(ij) этой системы уравнений
1 |
2 |
-1 |
5 |
-1 |
0 |
0 |
1 |
0 |
-2 |
2 |
3 |
-6 |
0 |
-1 |
0 |
0 |
1 |
2 |
0 |
-2 |
-7 |
0 |
0 |
1 |
0 |
0 |
Решим систему уравнений относительно базисных переменных:
x8, x9, x7,
Полагая, что свободные переменные равны 0, получим первый опорный план:
X1 = (0,0,0,0,0,0,6,22,12)
Таблица 2 – Исходная симплекс- таблица
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
x8 |
x9 |
x8 |
22 |
1 |
2 |
-1 |
5 |
-1 |
0 |
0 |
1 |
0 |
x9 |
12 |
-2 |
2 |
3 |
-6 |
0 |
-1 |
0 |
0 |
1 |
x7 |
6 |
2 |
0 |
-2 |
-7 |
0 |
0 |
1 |
0 |
0 |
F(X0) |
-34M |
-2+M |
-1-4M |
-2-2M |
-4+M |
M |
M |
0 |
0 |
0 |
Переходим к основному алгоритму симплекс-метода.
Итерация №0.
Текущий опорный план неоптимален,
так как в индексной строке
находятся отрицательные
В качестве ведущего выберем столбец, соответствующий переменной x2, так как это наибольший коэффициент по модулю.
Вычислим значения Di по строкам как частное от деления: bi / ai2
и из них выберем наименьшее:
Следовательно, 2-ая строка является ведущей.
Разрешающий элемент равен (2) и находится на пересечении ведущего столбца и ведущей строки.
Таблица 3 - Исходная симплекс-таблица с обозначенными ведущими строкой и столбцом
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
x8 |
x9 |
min |
x8 |
22 |
1 |
2 |
-1 |
5 |
-1 |
0 |
0 |
1 |
0 |
11 |
x9 |
12 |
-2 |
2 |
3 |
-6 |
0 |
-1 |
0 |
0 |
1 |
6 |
x7 |
6 |
2 |
0 |
-2 |
-7 |
0 |
0 |
1 |
0 |
0 |
- |
F(X1) |
-34M |
-2+M |
-1-4M |
-2-2M |
-4+M |
M |
M |
0 |
0 |
0 |
0 |
Получаем новую симплекс-
Таблица 4 – Симплекс-таблица, полученная после вычислений
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
x8 |
x9 |
x8 |
10 |
3 |
0 |
-4 |
11 |
-1 |
1 |
0 |
1 |
-1 |
x2 |
6 |
-1 |
1 |
11/2 |
-3 |
0 |
-1/2 |
0 |
0 |
1/2 |
x7 |
6 |
2 |
0 |
-2 |
-7 |
0 |
0 |
1 |
0 |
0 |
F(X1) |
6-10M |
-3-3M |
0 |
-1/2+4M |
-7-11M |
M |
-1/2-M |
0 |
0 |
1/2+2M |
Итерация №1.
Текущий опорный план неоптимален,
так как в индексной строке
находятся отрицательные
В качестве ведущего выберем столбец, соответствующий переменной x4, так как это наибольший коэффициент по модулю.
Вычислим значения Di по строкам как частное от деления: bi / ai4
и из них выберем наименьшее:
Следовательно, 1-ая строка является ведущей.
Разрешающий элемент равен (11) и находится на пересечении ведущего столбца и ведущей строки.
Таблица 5 – Симплекс таблица с обозначенными ведущими строкой и столбцом
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
x8 |
x9 |
min |
x8 |
10 |
3 |
0 |
-4 |
11 |
-1 |
1 |
0 |
1 |
-1 |
10/11 |
x2 |
6 |
-1 |
1 |
11/2 |
-3 |
0 |
-1/2 |
0 |
0 |
1/2 |
- |
x7 |
6 |
2 |
0 |
-2 |
-7 |
0 |
0 |
1 |
0 |
0 |
- |
F(X2) |
6-10M |
-3-3M |
0 |
-1/2+4M |
-7-11M |
M |
-1/2-M |
0 |
0 |
1/2+2M |
0 |
Получаем новую симплекс-
Таблица 6 – Симплекс-таблица, полученная после вычислений
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
x8 |
x9 |
x4 |
10/11 |
3/11 |
0 |
-4/11 |
1 |
-1/11 |
1/11 |
0 |
1/11 |
-1/11 |
x2 |
88/11 |
-2/11 |
1 |
9/22 |
0 |
-3/11 |
-5/22 |
0 |
3/11 |
5/22 |
x7 |
124/11 |
310/11 |
0 |
-46/11 |
0 |
-7/11 |
7/11 |
1 |
7/11 |
-7/11 |
F(X2) |
124/11 |
-11/11 |
0 |
-31/22 |
0 |
-7/11 |
3/22 |
0 |
7/11+M |
-3/22+M |
Итерация №2.
Текущий опорный план неоптимален,
так как в индексной строке
находятся отрицательные
В качестве ведущего выберем столбец, соответствующий переменной x3, так как это наибольший коэффициент по модулю.
Вычислим значения Di по строкам как частное от деления: bi / ai3
и из них выберем наименьшее:
Следовательно, 2-ая строка является ведущей.
Разрешающий элемент равен (9/22) и находится на пересечении ведущего столбца и ведущей строки.
Таблица 7 – Симплекс таблица с обозначенными ведущими строкой и столбцом
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
x8 |
x9 |
min |
x4 |
10/11 |
3/11 |
0 |
-4/11 |
1 |
-1/11 |
1/11 |
0 |
1/11 |
-1/11 |
- |
x2 |
88/11 |
-2/11 |
1 |
9/22 |
0 |
-3/11 |
-5/22 |
0 |
3/11 |
5/22 |
211/3 |
x7 |
124/11 |
310/11 |
0 |
-46/11 |
0 |
-7/11 |
7/11 |
1 |
7/11 |
-7/11 |
- |
F(X3) |
124/11 |
-11/11 |
0 |
-31/22 |
0 |
-7/11 |
3/22 |
0 |
7/11+M |
-3/22+M |
0 |