Симплексный метод решения ЗЛП

Автор работы: Пользователь скрыл имя, 10 Мая 2013 в 21:59, курсовая работа

Краткое описание

Потенциальная возможность математического моделирования любых экономических объектов и процессов не означает, разумеется, ее успешной осуществимости при данном уровне экономических и математических знаний, имеющейся конкретной информации и вычислительной технике. И хотя нельзя указать абсолютные границы математической формализации экономических проблем, всегда будут существовать еще неформализованные проблемы, а также ситуации, где математическое моделирование недостаточно эффективно.

Содержание

ВВЕДЕНИЕ…………………………………………………………………4
І ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ СИМПЛЕКСНОГО МЕТОДА РЕШЕНИЯ ЗЛП…………………………………………………….…6
1.1 Теория линейного программирования……………………………...6
1.2 Общий вид задач линейного программирования………………….8
1.3 Методы решения задач линейного программирования…………..10
1.4 Общая характеристика симплекс-метода……………………………12
ІІ РЕШЕНИЕ ЗЛП СИМПЛЕКСНЫМ МЕТОДОМ………………..…..14
2.1 Примеры использования симплекс-метода в экономике…………14
2.2 Алгоритм решения ЗЛП симплексным методом……………………15
2.3 Решение задачи линейного программирования симплекс-
методом…………………………………………………………………...17
2.4 Двойственная задача………………………………………………....23
ІІІ КОМПЬЮТЕРНАЯ РЕАЛИЗАЦИЯ СИМПЛЕКС-МЕТОДА ПРИ РЕШЕНИИ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ……….....28
3.1 Описание программного продукта……………………………...…28
3.2 Тестирование программного продукта………………….…………30
ВЫВОДЫ………………………………………………………………….32
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ………………………….34

Прикрепленные файлы: 1 файл

Симплексный метод решения ЗЛП.docx

— 200.53 Кб (Скачать документ)

Базисными переменными  при этом будутxl,xk+1,xk+2,…,xr-1, xr-1,…,xr.

Предположим, что уравнения типа (2.2) для нового набора базисных и свободных переменных составлены. Тогда можно выразить через новые свободные переменные и линейную функцию Z.Если все коэффициенты при переменных в этой формуле положительны, то мы нашли оптимальное решение: оно получится, если все свободные переменные положить равными нулю. Если среди коэффициентов при переменных есть отрицательные, то процедура улучшения решения продолжается: система вновь разрешается относительно других базисных переменных, и так далее, пока не будет найдено оптимальное решение, обращающее функцию Z в минимум.

Пример 2. Пусть имеется задача линейного программирования с ограничениями-неравенствами:


-5x1-x2+2x3≤2;

-x1+x3+x4≤5; (2.5)

-3x1+5x4≤7.

 

Требуется минимизировать линейную функцию

 

Z=5x1-2x3

Приводя неравенства  к стандартному виду (≥0) и вводя добавочные переменныеy1,y2,y3переходим к условиям-равенствам:


y1=5x1+x2-2x3+2

y2=x1-x3-x4+5 (2.5)

y3=3x1-5x4+7

 

Число переменных (n = 7) на 4 превышает число уравнений (т = 3). Значит, четыре переменные могут  быть выбраны в качестве свободных.

Пусть в качестве свободных переменных выступаютx1,x2,x3,x4. Положим их равными нулю и получим опорное решение:

 

x1=x2=x3=x4=0;

y1=2, y2=5, y3=7.

 

При этих значениях  переменных Z= 0.

Это решение  не оптимально, поскольку в линейной функции Z коэффициент приx3отрицателен. Значит, увеличиваяx3можно уменьшить Z.

Попробуем увеличиватьx3.Из выражений (2.5) видно, что вy1и y2переменнаяx3входит с отрицательным коэффициентом, значит, при увеличенииx3соответствующие переменные могут стать отрицательными.

Определим, какая из этих переменных (y1илиy2)раньше обратится в нуль при увеличенииx3Очевидно, что этоy1она станет равной нулю приx3=1, а величинаy2— только приx3= 5.

Выбирается  переменная у, и вводится в число  свободных вместоx3Чтобы разрешить систему (2.5) относительноx3, y2, y3поступим следующим образом. Разрешим первое уравнение (2.5) относительно новой базисной переменнойx3:

 

x3=5/2*x1+1/2*x2-1/2*y1+1

Это выражение  подставляется вместоx3во второе уравнение:

 

x3=5/2*x1+1/2*x2-1/2y1+1;


y2=-3/2*x1-1/2*x2+1/2*y1-x4+4; (2.6)

y3=3x1-5x4+7.

 

Что касается третьего уравнения, то оно, как не содержащееx3не изменится. Система (2.2) приведена к виду со свободными переменнымиx1, x2, y1, x4и базиснымиx3, y2, y3.

Положим теперь свободные переменные равными нулю. Функция приобретает значение Z=-2, что меньше (лучше), чем прежнее  значение Z= 0.

Это решение  все еще не оптимально, так как  коэффициент приx2в выражении (2.7) отрицателен, и переменнаяx2может быть увеличена. Это увеличение, как это видно из системы (2.6), может сделать отрицательнойy2(в первое уравнениеx2входит с положительным коэффициентом, а в третьем — отсутствует).

Поменяем  местами переменныеx2 и y2— первую исключим

из числа  свободных, а вторую — включим. Для  этого разрешим второе уравнение (2.6) относительноx2и подставимx2в первое уравнение. Получим следующий вид системы (2.5):

 

x3=x1-y2-x4+5


y2=-3x1-2y2+y1-2x4+8  (2.7)

y3=3x1-5x4+7

 

Выразим Z через  новые свободные переменные:

Z=3x1+2y2-y1+2x4-8+y1-2=3x1+2y2+2x4-10 (2.8)

Полагаяx1=y1=y2=x4=0 , получим Z = -10.

Это решение  является оптимальным, так как коэффициенты при всех свободных переменных в выражении (2.8) неотрицательны. Итак, оптимальное решение ОЗ найдено (2.9):

x1*=0, x2*=8, x3*=5, x4*=0, y1*=0, y2*=0, y3*=7. (2.9)

При таких  значениях переменных линейная функция Z принимает минимальное значение (2.10):

 

Zmin=-10 (2.10)

 

Заметим, что  в рассмотренном примере нам  не пришлось искать опорное решение: оно сразу же получилось, когда  мы положили свободные переменные равными  нулю. Это объясняется тем, что в уравнениях (2.5) все свободные члены были неотрицательны и, значит, первое же попавшееся решение оказалось опорным. Если это окажется не так, можно будет прийти к опорному решению с помощью такой же процедуры обмена местами некоторых базисных и свободных переменных, повторно решая уравнения до тех пор, пока свободные члены не станут неотрицательными 

 

2.4 Двойственная  задача

 

Использование идей двойственности в сочетании с общей идеей симплекс-метода позволило разработать еще один метод решения задач ЛП - двойственный симплекс-метод. Впервые этот метод был предложен Лемке в 1954г. Решение задачи ЛП двойственным симплекс-методом сводится к отысканию оптимального плана прямой задачи последовательным переходом от одного базиса к другому.

Задача ЛП в канонической форме имеет вид:  
максимизировать L(x) = сумма от j=1 до n (сjчj) 
при условиях: 
сумма от j=1 до n (аjXj)=bv, (v=1,2,....m) 
или 
сумма от j=1 до n (АjXj)=b, xj>=0,  j=1,2,...n

Составим двойственную задачу по условиям прямой задачи и определим области допустимых решений ДП:  
Прямая задача Двойственная задача

 
maxZ=x1-3x3-3x4-MR1-MR2

y1: x1+2x3-2x4+x5=4

y2: 3x1-4x3+4x4+R1=11

y3: x1+x3-x4-x6+R2=0

minW=4y1+12y2

x1: y1+3y2+y3≥1

x3: 2y1-4y2+y3≥-3

-2y1+4y2-y3≤3(1)

X4: -2y1+4y2-y3≥3  (2)

X5: y1≥0

X6: -y3≥0 => y3≤0

R1: y2≥-M

R2: y3≥-M 
Итак, получено: y1≥0,y2≤≥0 ,y3≤0. 

 
2. Приведём запись двойственной задачи к канонической форме. На основании полученных ОДР двойственных переменных введём необходимые подстановки:y2=y4-y5; y3=-ỹ3; 3,y4,y5≥0 
Для удобства решения свернём ограничения (1) и (2) в одно со знаком равенства, а также введем в ограничения и целевую функцию избыточные, остаточные и искусственные переменные. 

 

minW=4y1+12y4-12y5+MR1+MR2

y1+3y4-3y5-ỹ3-y6+R1=1  (3)

-2y1+4y4-4y5+ỹ3+R2=3  (4)

 
3. Решим ДЗ симплекс методом:  
Из (3) выразим: R1=1-y1-3y4+3y5+ỹ3+y6 
Из (4) выразим:R2=3+2y1-4y4+4y5-ỹ3

W+y1(-4-M)+y4(-12+7M)+y5(12-7M)-My6=4M

 

Создаём симплекс-таблицы:

 

Таблица 2.2 – симплекс-таблица №1 

 

W

y1

y4

y5

3

y6

R1

R2

ПЧ

W

1

-4-M

7M-12

12-7M

0

-M

0

0

4M

R1

-3 

-1 

-1 

R2

-2 

-4 


 

 

B-1(0)= B(0)=

 

Таблица 2.3 –  симплекс-таблица №2 

 

y1

y4

y5

3

y6

R1

R2

ПЧ

W

1

-10/3M

0

0

7/3M-4

4/3M-4

-7/3M+4

0

5/3M+4

y4

1/3 

-1 

-1/3 

-1/3 

1/3 

1/3 

R2

-10/3 

7/3 

4/3 

-4/3 

5/3 


 

B-1(1)=   B(1)=  

Таблица 2.4 – симплекс-таблица №3

 

y1

y4

5  

3

y6

R1

R2 

ПЧ

W

-40/7 

-12/7 

-7/3M+4

-M+12/7 

48/7 

y4

-1/7 

-1 

-1/7 

1/3 

1/7 

4/7 

3

0

-10/7

0

0

1

4/7

-4/3

-3/7

5/7

                   

 

Симплекс-таблица №3 – оптимальная, т. к. коэффициенты приНБП≥0 
minW=48/7, maxZ=minW=48/7,

y1*=0, y2*=y4*-y5*=4/7, y3*=-5/7

Двухфазовый симплекс метод, иначе называют методом искусственного базиса:

Если в условии задачи линейного программирования не все ограничения представлены неравенствами типа «≤», то далеко не всегда нулевой вектор будет допустимым решением. Однако каждая итерация симплекс-метода является переходом от одной вершины к другой, и если неизвестно ни одной вершины, алгоритм вообще не может быть начат.

Процесс нахождения исходной вершины не сильно отличается от однофазного симплекс-метода, однако может в итоге оказаться сложнее, чем дальнейшая оптимизация. Из изложенного выше не прозвучало отчетливо почему если ограничения отличается от <= не всякий 0-вектор будет допустимым решением. В самом деле пусть i - уравнение имеет вид Ai1X1+...AinXn>=Bi но просто можно изменить знаки записав -Ai1X1- ... AinXn<=-Bi и тем самым привести все неравенства к канонической форме. Это было бы нельзя сделать если бы на вектор B было наложено условие неотрицательностиBi>=0 Но в формулировке выше ограничения вектор B отсутствуют. (это очевидная неточность для теоретической статьи в энциклопедии, где все предпосылки должны формулироваться полно) Если бы все было так просто и легко, непонятно зачем изобретали двухфазный метод... Кроме того по этой же причине классический симплекс метод не годится для решения задачи Min F (точнее не годится в случае положительности всех коэфф целевой функции, т.к. тогда метод не сделает ни одной итерации).

 

ІІІ  КОМПЬЮТЕРНАЯ РЕАЛИЗАЦИЯ СИМПЛЕКС-МЕТОДА ПРИ РЕШЕНИИ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

 

 

3.1 описание программного продукта

 

Методы  линейного программирования оказались  весьма эффективными для решения  задач из различных областей человеческой деятельности. Исключительно важное значение приобретает использование  таких методов и средств при  решении задач оптимального проектирования, в которых необходимо учитывать  огромное количество ограничивающих факторов, что связано с большим объемом  вычислений. Разработанный программный комплекс позволяет решать следующие задачи:

 •  порождение начального базисного  допустимого решения;

 •  поиск оптимального плана и  экстремума нецелочисленной задачи  линейного программирования;

 •  поиск оптимального плана и  экстремума полностью целочисленной  задачи линейного программирования;

 •  поиск оптимального плана и  экстремума частично целочисленной  задачи линейного программирования;

При проектировании был использован принцип модульного программирования, что упрощает отладку  программы и позволяет расширять  ее функциональные возможности. Алгоритмическая  часть программы имеет модульно-иерархическую  структуру, в которой каждый модуль является самостоятельной частью программы  и взаимодействует с другими  модулями в порядке, установленном  разработчиками. Методы решения задач  линейной оптимизации, реализованные  в программно-алгоритмическом комплексе, основаны на построении симплекс-таблиц, поэтому в структуре программы все алгоритмические модули связаны с модулем, организующим решение задачи линейного программирования симплекс-методом. Входными данными для этого модуля является целевая функция с указанием типа экстремума (максимум или минимум) и ограничения, накладываемые на управляемые переменные. Ограничения задаются в виде уравнений или неравенств. Далее управление передается второму модулю, где формируется начальное допустимое базисное решение. Второй, третий и четвертый модули на каждой итерации реализуемого метода вызывают модуль построения симплекс-таблиц, которому они передают текущий результат. Связь между модулями организована через внешние структуры данных. Так, например, для задания линейного критерия оптимальности, вектора управляемых переменных, вектора ограничений и матрицы ограничений используются одномерные и двумерные статические массивы, а симплекс-таблица в памяти ЭВМ представлена как двумерный динамический массив, способный изменять свою размерность, удаляя или добавляя строки и столбцы к симплекс-таблице.

 Рассмотрим  особенность функционирования программного  комплекса. Для организации диалога  с пользователем применяется  стандартный графический интерфейс  Windows, построенный на основе библиотеки  визуальных компонентов VCL (VisualComponentLibrary), поставляемой вместе с пакетом  Delphi. При разработке программы  использовалась MDI-технология (MultipleDocumentInterface – многодокументный пользовательский  интерфейс), что позволяет пользователю  работать сразу с несколькими  задачами линейного программирования. В программе реализована активная  форма диалога, позволяющая выбирать  режимы: расчет, просмотр и редактирование  информации, получение справки и т.д.

Информация о работе Симплексный метод решения ЗЛП