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

Министерство  образования и науки Российской Федерации

ФГОУ  СПО «Псковский колледж строительства  и экономики» 
 
 
 
 
 
 
 
 
 
 
 
 

Предмет «Математические методы» 
 

Решение задач

линейного программирования 
 
 
 
 
 

                                                                                   Курсовая работа

студента  группы 320-ПО

Хруцкого  Максима Игоревича

Руководитель  курсовой работы

Васильева Наталья Анатольевна 
 
 

  
 

Псков, 2011

Содержание 

Введение 

Глава 1 Симплексный метод решения задач линейного программирования

1.1 Математическая модель задач линейного программирования

1.2 Стандартная и каноническая форма задач линейного программирования

1.3 Алгоритм решения задачи линейного программирования симплексным методом

1.4 Решение задачи симплексным методом

1.5 Вывод 

Глава 2 Транспортная задача линейного программирования

2.1 Транспортная задача

2.2 Особенности транспортной задачи ограничениями на пропускную способность

2.3 Алгоритм решения транспортной задачи

2.4 Методы построения начального опорного решения

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

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

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

2.8 Вывод 

Заключение  

Литература 
 
 
 
 
 
 
 
 
 
 
 

 

Введение 

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

     Линейное  программирование - один из первых и  наиболее  подробно изученных  разделов  математического   программирования.   Именно   линейное программирование явилось тем разделом, с которого  начала  развиваться  сама дисциплина «математическое программирование».  Термин  «программирование»  в названии  дисциплины  ничего  общего  с  термином  «программирование   (т.е. составление программ) для  ЭВМ»  не  имеет,  так  как  дисциплина  «линейное программирование» возникла еще до  того  времени,  когда  ЭВМ  стали  широко применяться при решении  математических,  инженерных,  экономических  и  др. задач. Термин «линейное  программирование»  возник  в  результате  неточного перевода  английского  «linear  programming».   Одно   из   значений   слова «programming» - составление планов, планирование. Следовательно,  правильным переводом «linear programming» было бы  не  «линейное  программирование»,  а

«линейное планирование», что более  точно  отражает  содержание  дисциплины.

      Однако, термин  линейное  программирование,  нелинейное  программирование  и т.д. в нашей литературе стали общепринятыми.

     Линейное программирование возникло после второй мировой войны и стало быстро развиваться, привлекая внимание математиков, экономистов и инженеров благодаря возможности широкого практического применения, а также математической стройности.

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

Линейное программирование применяется при решении экономических задач, в таких задачах как управление и планирование производства; в задачах определения оптимального размещения оборудования на морских судах, в цехах; в задачах определения оптимального плана перевозок груза (транспортная задача); в задачах оптимального распределения кадров и т.д.

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

 

Глава 1 Симплексный  метод решения  задач

линейного программирования 

1.1 Математическая модель задач линейного программирования 

     Математической моделью задачи называется совокупность математических соотношений, описывающих суть задачи.

    Составление математической модели включает:

  • выбор переменных задачи;
  • составление системы ограничений;
  • выбор целевой функции.

     Общая формулировка задачи использования ресурсов или планирования производства:

Для изготовления n-видов продукции P1;P2;…;Pn используется m-видов сырья (ресурсов) S1; S2; …; Sm. Расход ресурсов на единицу каждого вида продукции известен a (i = 1, 2, …, m; j = 1, 2, …, n). Также известна прибыль от реализации продукции каждого вида C1; C2; …; Cn. Требуется составить план выпуска продукции обеспечивающий максимальную выгоду.

Составим  математическую модель этой задачи:

  1. Выбираем переменные задачи: пусть х1; х2; …; xn – это количество продукции каждого вида, причем хj ≥ 0.
  2. Составляем систему ограничений задачи: ограничения задачи связаны с ресурсами имеющимся в наличии, поэтому система будет содержать m-ограничений по каждому ресурсу.
  Ресурсы Расход  ресурсов на производство единицы продукции Запас ресурсов
P1 P2 Pn
S1 a11 a12 a1n b1
S2 а21 a22 a2n b2
Sm a
a
a
b
Прибыль c1 c2 cn max
 

S1:a11x1+a12x2+…+a1nxn≤ b1

“≤” ставится, т.к мы не можем израсходовать ресурсов больше, чем имеется в наличии, следовательно, аналогично и для остальных ресурсов.

S2:a21x1+a22x2+…+amnxn≤b

Sm: am1x1+am2x2+…+amnxn≤bm

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

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

Z(x)=c1x1+c2x2+…+cnxn      max

Таким образом, математическая модель этой задачи имеет вид:

найти такой план  X=(х1, х2, ..., хn) выпуска продукции удовлетворяющий системе ограничений :

и условию  неотрицательности хj ≥ 0, при котором целевая функция

Z(x)=c1x1+c2x2+…+cnxn      max

1.2 Стандартная и каноническая форма задач линейного программирования 

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

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

 Таким образом, каноническая форма имеет вид:

Z(x)= c1x1+c2x2+…+cnc  extrem

a11x1+…+a1nxn=b1

  -   -   -   -  -  -

am1x1+…+amnxn=bm 

xj 0  (j=1n) 

      Если  система содержит неравенства, то от неравенства к уравнению переходят  следующим образом:

Вводят  дополнительные переменные в левые  части неравенства;

  • если знак неравенства “≤”, то переменная берется с коэффициентом “+1”;
  • если знак “≥”, то дополнительная переменная “-1”.

В целевую  функцию эти переменные записываются с нулевыми коэффициентами.

      Если  на какую либо переменную не наложено условие не отрицательности, то ее заменяют на разность двух других переменных, каждое из которых неотрицательное. 

1.3. Алгоритм симплексного метода

1.Математическая  модель задачи должна иметь  каноническую форму. Если она записана в стандартной форме, то ее нужно привести к канонической.

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

Макет симплексной  таблицы 

Б   Zб С0 С1 С2 Сп ст+1 Сп+т
 
 
А0
А1 А2 Ап   Ап+1 Ап+т
               
               
               
               
    Δк
           

Все строки таблицы 1-го шага, за исключением строки Δк (индексной строки), заполняют по данным системы ограничений и целевой функции.

Проверяем начальное опорное решение на оптимальность. Индексная строка находится  по формуле Δк =∑СбАjj. При решении задачи возможны следующие случаи:

1) при решении задачи на максимум:

    а) все оценки Δ к > О, тогда найденное решение оптимальное;

б) хотя   бы   одна   оценка  Δк < 0,   но   при   соответствующей   переменной   нет ни   одного положительного коэффициента, тогда решение задачи прекращаем, т.к. тах Z(Х) = ∞, т.е. целевая функция не ограничена в области допустимых решений;

в) хотя бы одна оценка   Δк < 0   и при соответствующей переменной есть  хотя бы  один

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

2) при решении задачи на минимум можно поменять все знаки целевой функции на противоположные и решать задачу на максимум, при записи ответа обратно поменять все знаки.

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

При решении задачи на максимум:

    а) ключевым столбцом является столбец соответствующий наименьшей отрицательной оценке Ак в индексной строке;

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

    столбца, т.е.

    тiп Θ =                                  A0

                 {положит.эл.кл.столбца} 

    в) ключевым элементом является число, расположенное на пересечении ключегого столбца и ключевой строки;

5.Заполняем  следующую симплексную таблицу.

а) переписываем ключевую строку, разделив ее на ключевой элемент;

б) заполняем базисные столбцы;

в) остальные коэффициенты таблицы находим по правилу «прямоугольника».

Правило «прямоугольника» заключается в следующем:

                                  соотв.эл.кл.столбца х соотв.эл.кл.строки

новый эл.=старый эл

                                              ключевойэлемент

Получаем  новое опорное решение.

6.Возвращаемся  к третьему шагу алгоритма. 

1.4. Решение задачи симплексным методом

      Предприятие изготавливает три вида станков I, II, III. При этом расходуются сырье, трудовые ресурсы и учитываются накладные расходы.

      Известно, что для изготовления станка I-го вида требуется по1 ед. сырья, трудовых ресурсов и накладных расходов; для станка II-го вида – 2 ед. сырья, 1 ед. трудовых ресурсов и 2 ед. накладных расходов; для станка III-го вида – 3 ед. сырья, 1 ед. трудовых ресурсов и 6 ед. накладных расходов. Предприятие может обеспечить 15 ед. сырья, 12 ед. трудовых ресурсов и 14 ед. накладных расходов. Прибыль от реализации станка I вида 5 тыс. руб., II вида – 9 тыс. руб., III вида – 8 тыс.руб.

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

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

Запишем условие задачи в виде таблицы: 

Ресурсы Количество  ресурсов затраченных на производство станка каждого вида Запас сырья
I II III
Сырье 1 2 3 15
Трудовые  ресурсы 1 1 1 12
Накладные расходы 1 2 6 14
Прибыль(тыс.руб) 5 9 8 max
 

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

Вводим  переменные:

Пусть x1; x2; x3 – количество станков каждого вида, причем х1 ≥ 0, х2 ≥ 0, х3 ≥ 0.

Составляем  систему ограничений:

S1:1х1+2х + 3≤15

Знак  “≤” ставим потому, что мы не можем использовать ресурсов больше, чем имеется в наличии.

S2:1х1+1х2+1х3=12

Знак  “=” ставим потому, что условие задачи требует, чтобы трудовые ресурсы были использованы полностью.

 S3:1х1+2х2+6х3≥14

Знак  “≥” ставим потому, что условие задачи требует, чтобы накладные расходы были не менее указанных.

Т.к. цель задачи получение максимальной прибыли от реализации продукции, то целевая функция имеет вид:

Z(x)=5x1+9x2+8x3 max

      Таким образом, математическая модель этой задачи имеет вид: найти такой план X=(х1, х2, ...,хn) производства станков, удовлетворяющий стстеме ограничений:

хj≥0 (j=1,2,3), при  Z(x)=5x1+9x2+8x3       max 

Приводим  задачу к канонической форме. Для  этого в систему ограничений  вводим дополнительные переменные, чтобы  уравнять правые и левые части: +x4; -x5. В целевую функцию дополнительные переменные входят с нулевыми коэффициентами.

Таким образом, каноническая форма задачи:

Z(x)=5x1+9x2+8x3+0x4+0x5  max

хj>=0 (j=1,2,3); 

 Z(x)=5x1+9x2+8x3+0x4+0x5        max

Строим начальное опорное решение методом Гаусса.

хj>=0 (j=1,2,3); 

 Z(x)=5x1+9x2+8x3+0x4+0x5         max 

+  

 
Домножим вторую строку матрицы  на (-1) и сложим ее с первой, а потом  с третьей.  В результате получим:
 

+   

       

Домножим  вторую строку на (-5) и сложим ее со строкой  под чертой. В результате получим  : 

 +    
 

Домножим  третью строку на (-1) и сложим ее с первой, а потом со второй. В результате получим: 

+ 

Домножим  третью строку на -4 и сложим ее со строкой  под чертой. В результате получим  матрицу:

xx2    x3  x4   x5

0   0   -3   1   1    1  

1   0   -4   0   1    10

0   1    5   0   -1    2

0   0  -17  0    4    -68 

Составляем симплексную  таблицу. 

Б -68 0 0 -17 0 4 Ɵ
А0 А1 А2 А3 А4 А5
X4 0 1 0 0 -3 1 1 1
X1 0 10 1 0 -4 0 1 10
X2 0 2 0 1 5 0 -1
∆k 68 0 0 17 0 -4  
 

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

0=   × -(-68)=68

1=   × -0=0

2 = × -0=0

3= × -(-17)=17

  ∆4= × - 0 = 0

 ∆5= × -4=-4