РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

  • pdf
  • 07.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 52. РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ.pdf

РАБОТА № 2 РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

Цель работы: ознакомление с методами решения задач линейного программирования в табличном процессоре Excel.

Решение экономических задач, как правило, связано с необходимостью учета разнообразных факторов и характеристик (параметров), которые влияют друг на друга и на экономические процессы. С этой целью проблемы экономики исследуют на адекватных математических моделях и далее применяют методы оптимизации в соответствии с выбранными критериями. Большое число экономических задач сводится к линейным математическим проблемам, которые традиционно называют моделями линейного программирования. Аппарат линейного программирования широко используется для анализа возможностей экономических систем и принятия обоснованных решений об их развитии.

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

В настоящей работе кратко рассматриваются теоретические аспекты задач линейного программирования, а также практические приемы их решения на примерах конкретных экономических задач средствами табличного процессора Excel 2000.

2.1. ОБЩИЙ ВИД ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

В общем виде задача линейного программирования ставится следующим образом:

Найти максимум (минимум) целевой функции

n

F =c j x j

j=1

при ограничениях

(2.1)

n

aij x j bi ,(i =1,...,m1)

j=1

n aij x j = bi ,(i = m1 +1,...,m)

(2.2)

j=1

x j 0,( j =1,...,n),



где xj – (управляющие) переменные, bi , aij – параметры, F – целевая функция.

Функция (2.1) – линейная, ограничения (2.2) – линейные. Задача содержит n переменных и m ограничений.

Решить задачу линейного программирования – это значит найти такие значения управляющих переменных xj , которые удовлетворяют ограничениям (2.2) и при которых целевая функция (2.1) принимает наибольшее (наименьшее) значение. Для решения задач линейного программирования обычно используют симплекс-метод.

2.2. СИМПЛЕКС-МЕТОД

Для использования симплекс-метода задачу необходимо записать в канонической форме – целевая функция должна достигать максимума, ограничения, налагаемые на переменные, должны быть равенствами, а сами переменные неотрицательными:

                              F = c1 x 1+ c2 x2 + + cn xn    max                               (2.3)

a11x1 + a12x2 + ...+ a1n xn = b1 a21x1 + a22x2 + ...+ a2n xn = b2

                                    ......                                                                                 (2.4)

am1x1 + am2x2 + ... + amn xn = bm

xij 0, j =1,...n

Симплекс-метод представляет собой направленный перебор решений системы (2.3) – (2.4), при этом каждое следующее решение улучшает (увеличивает) значение целевой функции.

2.3. РЕШЕНИЕ ЗАДАЧИ ПЛАНИРОВАНИЯ ПРОИЗВОДСТВА

В качестве иллюстрации рассмотрим решение задачи планирования производства продукции в условиях наличия ограничений на ресурсы. Пусть требуется определить, в каком количестве необходимо выпускать продукцию четырех типов Прод1, Прод2, Прод.3 и Прод4, для изготовления которой требуются ресурсы трех видов: трудовые, сырьевые и финансы. Норма расхода, а также прибыль, получаемая от реализации каждого вида продукции, приведены в табл. 2.1:

Таблица 2.1

Ресурс

Прод1

Прод2

Прод3

Прод4

Знак

Наличие

Прибыль

60

70

120

130

max

 

Трудовые

1

1

1

1

16

Сырье

6

5

4

3

110

Финансы

4

6

10

13

100

Данная задача относится к типу задач, которые называют задачами планирования производства. Пусть x1, x2, x3, x4 - количество каждого из четырех видов продукции; Z – целевая функция, которая представляет собой прибыль от реализации произведенной продукции. Математическая модель задачи может быть представлена следующим образом:

                                               Z = 60 x1 + 70 x 2+ 120 x3 + 130 x4 max                       (2.5)

x1 + x2 + x3 + x4 16 6x1 + 5x2 + 4x3 + 3x4 110

                                                                                                                                 (2.6)

4x1 + 6x2 +10x3 +13x4 100

x1 0, x2 0, x3 0, x4 0

Решение задачи будем производить в следующей последовательности:

1.       В Excel на Листе 1 создайте форму и введите в нее исходные данные задачи (рис. 2.1 ).

Рис. 2.1

2.       Введите зависимость для целевой функции: установите курсор в ячейку F6 и вызовите Мастер функций. В списке математических функций выберите функцию СУММПРОИЗВ, в массив1  введите B$3:E$3, в массив2 введите B6:E6.

3.       Введите зависимость для левых ограничений. Для этого скопируйте формулу из ячейки F6 в ячейки F9, F10 и F11, используя специальную вставку.

4.       Установите курсор в ячейку F6 и выполните команду Сервис – Поиск решения.

5.       Введите направление целевой функции: Максимальному значению.

6.       Введите адреса искомых переменных – установите курсор в поле Изменяя ячейки  и введите $B$3:$E$3.

7.       Нажмите кнопку Добавить. На экране появится диалоговое окно Добавление ограничения. Введите граничные условия на переменные:

$B$3>=$B$4, $C$3>=$C$4, $D$3>=$D$4, $E$3>=$E$4, $F$9<=$H$9, $F$10<=$H$10, $F$11<=$H$11 (см. рис. 2.1). После ввода последнего ограничения в диалоговом окне Добавление ограничения вместо Добавить нажмите кнопку OK. Если при вводе задачи возникает необходимость в изменении или удалении уже введенных ограничений, то это можно сделать с помощью кнопки Изменить или Удалить.

8.       Нажмите кнопку Параметры диалогового окна Поиск решения. С помощью команд, включенных в это диалоговое окно, можно вводить условия для решения задач оптимизации всех классов. Команды, используемые по умолчанию, подходят для решения  большей части практических задач. Команда Максимальное время служит для назначения времени в секундах, выделяемого на поиск решения задачи (не более 32767 секунд = 9 часов).

9.       Установите опцию Линейная модель и Неотрицательные значения, что будет означать применение симплекс-метода. Нажмите кнопку OK.

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

Для нашего примера мы получаем, что целевая функция принимает максимум, равный 1320 ед. при x1 =10, x2 = 0, x3 = 6, x4 = 0. Правые части ограничений соответственно принимают значения, равные 16, 84 и 100.

Анализ оптимального решения

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

Рассмотрим, например, как формируется отчет по результатам. Для этого перейдем на Лист1 и выполним команду Сервис – Поиск решения – Выполнить. Выберем тип отчета – Результаты  и нажмем кнопку OK. Отчет по результатам состоит из таблицы, в которой приводятся сведения о целевой функции, о значениях искомых переменных, полученных в результате решения задачи; о количестве неиспользованных ресурсов и о статусе переменных (связанное/несвязанное).

Аналогичным образом можно вызвать и другие два вида отчетов – устойчивость и пределы.

Параметрический анализ

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

Финансы

50

100

150

200

250

1.       Скопируйте Лист1 ,присвоив ему имя Параметрический анализ, удалите результат решения, находящийся в B3:E3.

2.       Решите задачу для первого значения финансов (50), выполнив команду

Сервис - Поиск решения – Выполнить; на экране появится диалоговое окно

Результаты поиска решения. Нажмите кнопку Сохранить сценарий. Введите имя сценария – Финансы = 50 и нажмите кнопку OK. На экране снова откроется диалоговое окно Результаты поиска решений, где надо также нажать кнопку OK. Аналогично нужно решить задачу для всех других значений выбранного параметра, присваивая каждому соответствующее имя сценария. Не забывайте перед каждым решением задачи с новым значением параметра удалять предыдущий результат решения!

Графическое представление результатов

С помощью «Диспетчера сценариев» восстановим все полученные результаты. Для этого выполним команду Сервис – Сценарии – добавить (адреса изменяемых ячеек) – структура и т. д., следуя подсказкам. Результатом будет таблица, приведенная ниже.

Для наглядного представления результатов параметрического анализа на основании полученных данных построим соответствующие графики. Например, можно построить график, на котором будет видно, что при различном финансировании в план входит продукция различных видов, однако ни в один вариант не войдет выпуск продукции Прод 2 (Рис. 2.2). Это можно объяснить тем, что при высоком потреблении ресурсов прибыль от ее производства ниже, чем от производства других видов продукции. На рис. 2.3 отражено изменение прибыли в зависимости от значений выбранного параметра, а на рис. 2.4 - зависимость использованного сырья от финансов.

 

ф=50

ф=100

ф=150

ф=200

ф=250

Пр1

12,50

10,00

1,67

0,00

0,00

Пр2

0,00

0,00

0,00

0,00

0,00

Пр3

0,00

6,00

14,33

2,67

0,00

пр4

0,00

0,00

0,00

13,33

16,00

прибыль

750,00

1320,00

1820,00

2053,33

2080,00

труд.

13,00

16,00

16,00

16,00

16,00

сырье

75,00

84,00

67,00

50,67

48,00

финансы

50,00

100,0

150,00 Рис.2.2

200,00

208,00

Рис.2.3

Зависимость использованного сырья от финансов

300,00

250,00

сырье финансы

 

Рис.2.4

2.4. ТРАНСПОРТНАЯ ЗАДАЧА

Допустим, что ваша фирма занимается переработкой сельскохозяйственной продукции на нескольких заводах, расположенных в разных районах Москвы. Сырье поставляется объединениями производителей со складов, расположенных в различных городах Московской области. Стоимость сырья не зависит от того, где оно произведено, однако перевозка со склада на завод зависит от расстояния и различна для каждого склад и завода. Тарифы на перевозку одной тонны груза известны и могут быть представлены в виде матрицы стоимостей

(сij):

47,00

39,00

23,65

19,50 39,00

41,50

32,30

27,30

19,40

36,00

45,00

38,00

21,00

9,00

27,50

32,65

41,0018,00

24,00

44,00

(2.9)

Потребности заводов в сырье (bj) различны и запасы на каждом складе (ai) ограничены:

  ai \ bj

240

115

280

370

300

 

 

 

 

240

 

 

 

 

170

 

 

 

 

120

 

 

 

 

320

 

 

 

 

Требуется составить план перевозок так, чтобы их общая стоимость была минимальна.

Прежде всего, как всегда, необходимо построить математическую модель задачи. Цель задачи состоит в минимизации суммарной стоимости всех перевозок, что может быть достигнуто с помощью оптимальной организации доставки грузов. Следовательно, в качестве переменных нужно взять xij - количество тонн сырья, перевозимого от i - го поставщика j - му потребителю; cij - коэффициенты матрицы стоимостей (2.9). Параметры задачи – число поставщиков и потребителей, предложения и спрос сырья в каждом пункте, тарифы на перевозки.

Ограничения задачи – это ограничения на предложение и спрос сырья: запасы сырья у поставщиков ограничены, с одной стороны, а с другой стороны, запросы производителей должны быть удовлетворены. Целевая функция представляет собой суммарные затраты S на перевозку сельхозпродукции, равные сумме произведений тарифов на перевозку на количество перевозимого сырья от каждого поставщика каждому потребителю.

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

Целевая функция:

c11x11 + c12x12 + c13x13 + c14x14 + c21x21 + c22x22 + c23x23 + c24x24 +

         Z(X) = c31x31 + c32x32 + c33x33 + c34x34 +                                                (2.10)

c41x41 + c42x42 + c43x43 + c44x44 + c51x51 + c52x52 + c53x53 + c54x54 min Ограничения задачи:

x11 + x12 + x13 + x14 300

x21 + x22 + x23 + x24 240

x31 + x32 + x33 + x34 170

x41 + x42 + x43 + x44 120

x51 + x52 + x53 + x54 320

     x11 + x21 + x31 + x41 + x51 = 240                                                           (2.11)

x12 + x22 + x32 + x42 + x52 =115

x13 + x23 + x33 + x43 + x53 = 280 x14 + x24 + x34 + x44 + x54 = 370

xij 0

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

Создайте на листе Транспортная задача таблицу, представленную на

рис.2.7

Рис. 2.7  Исходные данные транспортной задачи

В ячейке B4 находится формула =СУММ(C4:F4); скопируйте содержимое ячейки B4 в ячейки B5:B8. Массив ячеек C4:F8 заполнен единицами в качестве начального плана перевозок; установите числовой формат для этих ячеек. В ячейку C9 введите формулу = СУММ(C4:C8). Скопируйте формулу в ячейки D9:F9.

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

Далее введите требуемые объемы поставок и цены поставок. Скопируйте названия складов в ячейки с A11 по A15. В ячейки B11:B15 занесите объемы месячных запасов сырья на различных складах; в ячейки C11:F15 занесите стоимости перевозки тонны сырья с конкретного склада на конкретный завод. В ячейку С16 введите формулу = =C4*C11+C5*C12+C6*C13+C7*C14+C8*C15, которая вычисляет полную стоимость перевозок сырья на первый завод. Скопируйте формулу из ячейки С16 в ячейки D16:F16. В ячейку B16 введите формулу = СУММ(C16:F16). В данной ячейке будет вычисляться общая стоимость перевозки сырья. Выполните поиск решения (Сервис – Поиск решения)  с целью определения минимальных затрат на перевозки при соблюдении всех заданных условий:

       Объем поставок с конкретного склада должен быть меньше или равен запасам на складе;

       Объем перевозок не должен быть отрицательным;

       Запросы заводов должны быть выполнены полностью. Перевыполнение поставок допустимо, а недовыполнение – нет. Значения полей диалогового окна Поиск решения выглядят следующим образом:

Обратите внимание: целевая ячейка – B16!

Сохраните результаты поиска решения. Проверьте правильность полученных результатов – см. рис. 2.8.

Рис. 2.8

2.5. ВАРИАНТЫ ЗАДАНИЙ

I.        Решить симплекс-методом следующие задачи линейного  программирования.

1.      Составить математическую модель.

2.      Найти оптимальное решение.

3.      Проанализировать его (результаты, устойчивость, пределы).

4.      Провести параметрический анализ по одному из видов ресурсов (выбрать самостоятельно). Составить диаграммы зависимостей (см.

рис. 2.2, 2.3 и 2.4)

Вариант 1.

Тип

Ресурса

 

Вид изделий

 

Всего ресурсов

А

В

С

D

Трудовые

2

2

2

2

30

Сырье

12

10

8

6

150

Финансы

8

12

20

25

200

Прибыль c(i)

100

150

200

250

 

Вариант 2.

Тип

Ресурса

 

Вид изделий

 

Всего ресурсов

А

В

С

D

Трудовые

1

2

1

2

15

Сырье

8

10

6

4

100

Финансы

6

4

12

15

120

Прибыль c(i)

100

150

200

250

 

Вариант 3.

Тип

Ресурса

 

Вид изделий

 

Всего ресурсов

А

В

С

D

Трудовые

10

8

6

2

100

Сырье

5

10

4

15

150

Финансы 1

6

8

8

4

100

Финансы 2

15

10

10

10

200

Прибыль c(i

30

30

30

30

 

Вариант 4.

Тип

Ресурса

 

Вид изделий

 

Всего ресурсов

А

В

С

D

Трудовые

10

6

6

4

100

Сырье

6

12

5

15

150

Финансы 1

6

10

10

4

100

Финансы 2

10

15

10

15

150

Прибыль c(i

20

20

20

20

 

Вариант 5.

Тип

Ресурса

Вид издел

ий

Всего ресурсов

A

B

C

Сырье 1

10

6

6

100

Cырье 2

6

12

5

150

Трудовые

6

10

10

100

Финансы

10

15

10

150

Прибыль c(i)

40

40

40

 

Вариант 6.

Тип

Ресурса

В

ид издел

ий

Всего ресурсов

A

B

C

Сырье

1

2

1

10

Трудовые

2

1

2

6

Финансы

3

1

2

10

Прибыль c(i)

6

6

6

 

Вариант 7.

Тип

Ресурса

В

ид издел

ий

Всего ресурсов

A

B

C

Трудовые

1

2

1

10

Cырье

2

1

2

6

Финансы

3

1

2

12

Прибыль c(i)

3

4

4

 

Вариант 8.

Тип

Ресурса

 

Вид изделий

 

Всего ресурсов

А

В

С

D

Трудовые

1

3

4

7

15

Сырье

2

1

3

4

10

Прибыль

-1

1

2

4

 

Вариант 9.

Тип

Ресурса

 

Вид изделий

 

Всего ресурсов

А

В

С

D

Трудовые

1

2

1

1

20

Сырье

6

8

10

4

100

Финансы

4

6

15

12

100

Прибыль c(i)

60

70

120

100

 

Вариант 10.

Тип

Ресурса

Вид издел

ий

Всего ресурсов

A

B

C

Сырье 1

6

10

5

150

Cырье 2

10

6

6

100

Трудовые

6

10

10

100

Финансы

10

15

10

150

Прибыль c(i)

40

40

40

 

      II.     Решить транспортные задачи.

Ответ представить в виде таблицы (см. рис. 2.8).

       Вариант 1.                                             Вариант 2.

ai \ bj

100

200

200

300

 

ai \ bj

200

400

400

800

100

1

3

4

1

200

1

6

9

3

200

5

2

2

7

400

3

2

2

4

400

4

4

3

6

600

4

5

4

7

200

7

2

5

3

200

1

4

3

9

       Вариант 3.                                             Вариант 4.

ai \ bj

300

200

300

100

 

ai \ bj

200

300

400

200

300

3

4

3

1

200

1

3

4

2

200

2

3

5

6

200

1

2

4

1

100

1

2

3

3

300

3

4

5

9

200

4

5

7

9

300

6

3

7

6

150

6

7

5

3

100

3

4

5

6

       Вариант 5.                                             Вариант 6.

ai \ bj

100

200

300

200

 

ai \ bj

300

200

200

400

300

3

3

3

1

200

1

3

4

2

200

2

3

5

4

300

1

2

4

2

100

5

2

3

3

300

3

4

4

8

200

4

5

7

6

200

6

6

7

3

       Вариант 7.                                             Вариант 8.

ai \ bj

200

150

100

200

 

ai \ bj

400

100

100

150

200

3

4

3

1

150

1

3

4

2

300

2

3

5

6

150

1

2

4

1

150

1

2

3

3

300

3

4

5

9

100

4

5

7

9

200

6

3

7

6

       Вариант 9.                                             Вариант 10.

ai \ bj

300

200

300

100

 

ai \ bj

200

300

400

200

300

3

4

3

1

200

1

3

4

2

200

2

3

5

6

200

1

2

4

1

100

1

2

3

3

300

3

4

5

9

200

4

5

7

9

300

6

3

7

6

150

7

6

5

4

100

8

5

6

4

ЛИТЕРАТУРА

1.Кузнецов Ю.Н., Кузубов В.И., Волощенко А.Б. Математическое программирование.М.: Высшая школа, 1980.

2.     Матвеев В.И., Сагитов Р.В., Шершнев В.Г. Курс линейного программирования. М.: Менеджер, 1998.

3.     Завьялова Н.Б., Бирюкова Л.Г., Киселева Е.В., Конева И.А. Решение задач линейного программирования средствами MS OFFICE. М., 2000.