Решение задач линейного программирования

Автор работы: Пользователь скрыл имя, 16 Ноября 2012 в 14:56, курсовая работа

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

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

Содержание работы

Введение
Задание
Глава 1. Симплексный метод решения задач линейного программирования
Математическая модель линейного программирования
Стандартная и каноническая форма задачи линейного программирования
Алгоритм решения задачи линейного программирования симплексным
методом
Решение задачи симплексным методом
Вывод
Глава 2. Транспортная задача линейного программирования
2.1 Транспортная задача
2.2 Особенности транспортной задачи с ограничением на пропускную
способность
2.3 Алгоритм решения транспортной задачи
2.4 Методы построения начального опорного решения
2.5 Метод потенциалов
2.6 Переход от одного опорного решения к другому
2.7 Решение транспортной задачи
2.8 Вывод
Заключение
Литература

Содержимое работы - 1 файл

Курсовая.docx

— 281.62 Кб (Скачать файл)

 

2.5  Метод потенциалов

 

Для каждого поставщика и потребителя находят потенциал или силу. Для этого, составляют систему уравнений Ui+Vj=Cij для каждой заполненной решением клетки таблицы. В системе будет (m+n-1) уравнение с m+n неизвестными, то есть неизвестных на одну больше чем уравнений, такая система имеет бесконечное множество решений, по этому, для её решения, одной из переменных, дают конкретное значение (обычно U1=0) и система будет иметь единственное решение.

Потенциалы записываются рядом с таблицей.

Для всех не заполненных решением клеток таблицы, вычисляют оценку ij= Ui+Vj-Cij.

Если всеij0, то решение оптимальное.

Если хотя бы одинij0, то решение не оптимально и его можно улучшить.

 

2.6 Переход от  одного опорного решения к  другому

 

  Переход к новому опорному решению, осуществляется с помощью цикла.

  Циклом называется такая последовательность клеток таблицы, в которой две и только две соседние клетки, расположенные в одной строке или столбце, причем первая и последняя клетки цикла, так же находится в одной строке или столбце.

Цикл строится для клетки, в которой наибольшая положительная оценка max”+”{}. В эту клетку таблицы ставится знак плюс и она добавляется к заполненным клеткам таблицы (то есть заполненных клеток становится m+n). Затем методом вычеркивания строится цикл.

 

 

 

 

 

Метод «вычеркивания»

В таблице можно вычеркнуть те строки и столбцы, в которых  по одной заполненной клети таблицы, причем вычеркнутые строки и столбцы уже не учитываются. Оставшиеся клети таблицы после вычеркивания, образуют цикл. В найденном цикле расставляют знаки плюс и минус в нечетных клетках плюсы, а в четных минусы, начиная с уже поставленного знака плюс. По циклу перераспределяется груз величиной =min”-“{xij}. При построении нового решения, все вычеркнутые клетки переписываются без изменения, в клетках со знаком «плюс», величина перевозки увеличивается на , со знаком «минус» уменьшив на при этом одна из помеченных клеток останутся пустой.

 

2.7 Решение транспортной  задачи

 

Склады

Аптеки  больниц

 

 

№15

№7

№23

№50

Запасы

АС №1

1

3

4

1

50

Фарма К.

3

2

2

4

100

ПРОТЕК

4

8

9

5

150

ФАРМАКОР

9

6

7

10

150

Заявки

50

100

100

150

 




Условие:            

Из четырёх аптечных складов  города АС №1, Фарма К., ПРОТЕК, ФАРМАКОР надо доставить лекарства в четыре больницы города №15,  №7, №23 и №50. 

Запасы лекарств на складах, заявки потребителей и тарифы перевозок  представлены в транспортной таблице.   

 

 

 

 

Однако  имеются дополнительные условия: объём  перевозки лекарств со склада ФАРМАКОР больнице №23 должен быть не менее 50 (х43 ≥ 50), а со склада ПРОТЕК больнице №50 – не более 100 (х34 ≤ 100).

Определить  минимальный план поставок лекарств в больницы города, обеспечивающий минимальные затраты.

 

 

 

 

 

                  bj

ai

50

100

100

150

           50            Ф

50

1

3

4

1

                   0

100

3

2

2

4

                   0

150

4

8

9

5

                   0

150

9

6

7

10

                   0





 

Проверяем баланс задачи:

=50+100+100+150 = 450

=50+100+100+150 = 400

Т.к. > => вводим фиктивного поставщика b5 = 450 - 400 = 50,

сi5 = 0.

 

Требуется при решении транспортной задачи ограничить перевозки от поставщика с номером 4 и потребителю с номером 3.

Т.к. x43 ≥ 50, то необходимо прежде, чем решать задачу, сократить запасы 4-го поставщика и запросы 3-го потребителя на величину 50 (т.е. зарезервировать перевозку x43 = 50). В полученном оптимальном решении следует увеличить объем перевозки x43 на величину 50.

                  bj

ai

50

100

50

150

           50            Ф

50

1

3

4

1

                   0

100

3

2

2

4

                   0

150

4

8

9

5

                   0

100

9

6

7

10

                   0




 

 

 

 

 

 

 

Т.к. x34 ≤ 100, то необходимо вместо одного потребителя с запросами b4 ввести двух других потребителей. Один из них с номером 4 должен иметь запросы b4 = 100, а другой с номером 6 с запросами b6 = 150 – 100 = 50. Стоимости перевозок для этих потребителей остаются прежними, за исключением стоимости c36, которая принимается равной сколь угодно большому числу M (M>> 1). После получения оптимального решения величины грузов, перевозимых к 6-му потребителю, прибавляются к величинам перевозок 4-го потребителя. Так как c36=M – самая большая стоимость перевозки, то в оптимальном решении клетка с номером (3,6) останется пустой (x36= 0) и объем перевозки x34 не превзойдет 100.

 

         bj

ai

50    

100

50

100     *

     50     Ф

      50     *

50

1

3

 

4

 

1

0

 

               1

100

3

 

2

2

4

 

0

 

               4

 

150

4

 

8

 

9

 

5

0

M

 

100

9

 

6

 

7

10

 

0

10




 

Дополнительные условия  выполнены, теперь нужно заполнить  таблицу и проверить решение  на оптимальность. Как только решение  будет оптимально, нужно будет  свернуть таблицу в исходный вид.

 

 

 

 

 

 

 

         bj

ai

50    

100

50

100     *

     50     Ф

      50     *

50

1

50

3

 

0

4

 

-

1

      0

0

 

-

               1

+

5

100

3

-

2

100

2

0

4

 

-

0

 

-

               4

 

1

150

4

 

1

8

 

-

9

 

-

5

   100 

0

  50 

M

 

-

100

9

 

-

6

 

1

7

50

10

 

-

0

     0

10

     50




 

 

m+n-1=4+6-1=9

 

 

С=

 

 

Задаем целевую функцию:

Z(x)=50+0+200+0+500+0+350+0+500=1600

Проверяем решение на оптимальность, для этого:

  1. Для каждой заполненной решение клетки таблицы составляем уравнение вида Ui+Vj=Cij и решаем систему:

Пусть U1=0, тогда

 

 

  1. Для каждой незаполненной клетки таблицы находим оценки ij= Ui+Vj-Cij

 

12=00

13=-10

15=-40

16=50

21=-30

24=-40

25=-50

26=10

31=10

32=-10

33=-20

36=M0

41=-40

42=10

44=-50

 

так как 16,26,31,42>0, то решение неоптимальное, его можно улучшить. Для этого строим цикл для клетки max”+”{}=16=>(1;6) в которую ставим знак «+» добавляем его к заполненным клеткам.

=min”-“{0;50;50}=0

 

 

 

 

 

 

         bj

ai

50    

100

50

100     *

     50     Ф

      50     *

50

1

     50

3

 

-

4

 

-

1

 

-

0

 

-

               1

     0

100

3

 

2

2

100

2

0

4

 

-

0

 

-

               4

 

1

150

4

+

6

8

 

-

9

 

-

5

100

0

     50

M

 

-

100

9

 

1

6

 

1

7

50

10

 

-

0

      0

10

     50




 

 

Задаем целевую функцию:

Z(x)=50+0+200+0+500+0+350+0+500=1600

Проверяем решение на оптимальность

Пусть U1=0, тогда:


U2=4

U3=9

U4=9

V1=1

V2=-2

V3=-2

V4=-4

V5=-9

V6=1

 

Для каждой незаполненной  клетки таблицы находим оценки ij= Ui+Vj-Cij

 

12=-50

13=-60

14=-50

15=-90

21=20

24=-40

25=-50

26=10

31=60

32=-10

33=-20

36=M0

41=10

42=10

44=-50

 

так как 21,26,31,41,42 >0 то решение не оптимальное, его можно улучшить. Для этого строим цикл для клетки max”+”{}=31=>(3;1) в которую ставим знак «+» добавляем его к заполненным клеткам.

=min”-“{50;50;50}=50

 

         bj

ai

50    

100

50

100     *

     50     Ф

      50     *

50

1

       0

3

 

1

4

 

0

1

+

1

0

 

-

               1

50

100

3

 

-

2

100

2

0

4

 

-

0

 

-

               4

 

-

150

4

50

8

 

-

9

 

-

5

100

0

0

M

 

-

100

9

-

6

 

1

7

50

10

 

-

0

50

10

 

-

Информация о работе Решение задач линейного программирования