моделирование / Modul1._Modeli_matematicheskogo_programmirovanija
.pdfМОДЕЛИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
ВВЕДЕНИЕ
Математического программирование представляет собой математическую дисциплину, изучающую экстремальные задачи и методы их решения. Термин «программирование» в данной дисциплине используется в смысловом значении «планирование», т.е. составление оптимального плана (программы) действий с использованием математических методов. Содержание математического программирование составляют теория и методы решения задач о нахождении экстремумов функций на множествах, определяемых линейными и нелинейными ограничениями.
Задачи математического программирования находят применение в различных областях практической деятельности, где необходим выбор одного из возможных вариантов (одной из возможных программ) действий. В частности, математическое программирование применяется при решении задач планирования производственных процессов, планирование информационных процессов различной природы, при проектировании и оптимизации структуры производства и других видов деятельности человека.
Математическое программирование тесно связано с построением и анализом математических моделей исследуемых объектов или решаемых задач. Чем удачнее построена модель, тем практически более ценны вытекающие из произведенного исследования выводы и рекомендации.
Математическое программирование это область математики, разрабатывающая теорию и численные методы решения задач на экстремум функции.
В данном пособии в сжатой и доступной форме изложен теоретический материал в первую очередь по разделу “Линейное программирование”. Основные теоретические положения наглядно проиллюстрированы большим числом примеров и решенных задач.
1.Общие сведения о математическом программировании.
Задачи математического программирования находят применение в различных областях человеческой деятельности, где необходим выбор одного из возможных образов действий(программа действий), например при решении проблем управления и планирования производственных процессов, работы различных коммерческих или финансово-кредитных учреждений, при проектировании, в перспективном планировании, в военном деле и т.д. Значительное число задач, возникающих в обществе, связано с управляемыми явлениями, т.е. с явлениями, регулируемыми на основе сознательно принимаемых решений. Термин «программирование» предполагает наличие трех смысловых значений из которых наиболее распространенным в настоящее время является третье из перечисленных:
1)Планирование(составление плана или программы действий);
2)Процесс нахождения оптимального плана (программы) с использованием математических методов(линейное, целочисленное, динамическое, квадратичное и т.д.);
3)Составление программ для ЭВМ.
В рамках математического программирования термин программирование используется во втором смысловом значении.
Математическое программирование.
Представляет собой математическую дисциплину, занимающуюся изучением экстремальных задач и разработкой методов их решения.
Содержание математического программирования составляют теория
и методы решения задач о нахождении экстремумов функций на множествах, определяемых линейными и нелинейными ограничениями (равенствами и неравенствами).
Математическое программирование является одним из разделов науки об исследовании операций. Теория и методы решения этих задач как раз и составляют содержание математического программирования.
И наконец 4 этап – составление результатов вычислений полученных на 3м этапе с моделируемым объектом, т.е. экспертная проверка результатов (критерий практики).
На этом этапе устанавливается степень адекватности модели и моделируемого объекта в пределах точности исходной информации.
1.1.Основные направления математического программирования.
В математическом программировании можно выделить два направления:
К первому, уже вполне сложившемуся направлению собственного математическому программированию относятся детерминируемые задачи – когда исходная информация является полностью определенной.
Ко второму направлению - так называемому стохастическому программированию – относятся задачи, в которых исходная информация содержит элементы неопределенности, либо когда некоторые параметры задачи носят случайный характер с известными вероятностными характеристиками. Так планирование производственной деятельности зачастую производится в условиях неполной информации о реальной ситуации, в которой будет выполняться план.
Или, когда экстремальная задача моделирует работу автоматических устройств, которая сопровождается случайными помехами. Одна из главных трудностей стохастического программирования состоит в самой постановки задач, из-за сложности анализа исходной информации.
В обобщенном виде математическая постановка экстремальной задачи, решаемой в математическом программировании, состоит в определении
наибольшего или наименьшего значения целевой функции.
f ( x1 , x2 , ..., x j , ..., xm ) ( j |
1, m ) |
|
|
При условиях |
|
|
|
g i ( x1 , x2 , x j , xm ) bi (i 1, n ) |
g |
i |
b |
|
где f и |
- заданные функции, а i – некоторые |
|
действительные числа. |
|
|
|
В зависимости от свойств функций f и g i математическое программирование можно рассматривать, как ряд самостоятельных дисциплин (разделов), занимающихся изучением и разработкой методов решения определенных классов задач. Традиционно в математическом программировании выделяют следующие разделы:
Линейное программирование – целевая функция линейна, а множество на котором ищется экстремум целевой функции, задается системой линейных равенств и неравенств.
В свою очередь в линейном программировании существуют классы задач, структура которых позволяет создать специальные методы их решения выгодно отличающиеся от методов решения задач общего характера.
Так в линейном программировании появляется класс транспортных задач.
Нелинейное программирование – не линейны целевая функция и ограничения. Нелинейное программирование принято подразделять следующим образом:
а) - выпуклое программирование – когда выпукла целевая функция(если рассматривается задача ее минимизации) и выпукло множество на котором решается экстремальная задача;
б) - квадратичное программирование – когда целевая функция квадратична, а ограничения линейного равенства и неравенства; в)-многоэкстремальные задачи – специальные классы задач, часто встречающихся в приложениях, например задачи о минимизации на выпуклом множестве вогнутых функций.
Отдельными классами задач математического программирования являются
задачи:
-целочисленного;
-параметрического; программирования
-дробно-линейного;
Взадачах целочисленного программирования неизвестные могут принимать только целочисленные значения.
Взадачах параметрического программирования целевая функция или функция определяющая область возможных изменений переменных, либо и то и другое зависит от некоторых параметров.
Взадачах дробно-линейного программирования целевая функция представляет собой отношение двух линейных функций, а функции определяющие область возможных изменений переменных также являются линейными.
1.2. Математические модели задач планирования и управления.
Общая постановка задач оптимизации
Математическое программирование - это область математики, разрабатывающая теорию и численные методы решения задач на экстремум функции многих переменных с ограничениями на область изменения этих переменных.
Для практического решения экономической задачи математическими методами ее прежде всего следует записать с помощью математических выражений (уравнений, неравенств и т.п.), т.е. составить экономико-математическую модель данной задачи. Для этого необходимо:
1)ввести переменные величины ( x1 , x2 , ..., xn ) числовые значения которых однозначно определяют одно из возможных состояний исследуемого явления;
2)выразить взаимосвязи (присущие исследуемому параметру) в
виде математических ограничений (уравнений, неравенств), налагаемых на неизвестные величины. Эти соотношения определяют систему ограничений задачи, которая образует область
допустимых решений (область экономических возможностей). Решение (план) Х= ( x1 , x2 , ..., xn ) , удовлетворяющее системе ограничений задачи, называют допустимым (базисным);
3)записать критерий оптимальности в форме целевой функции z = z(X), которая позволяет выбрать наилучший вариант из множества возможных;
4)составить математическую формулировку задачи отыскания экстремума целевой функции при условии выполнения ограничений, накладываемых на переменные. Допустимый план, доставляющий целевой функции экстремальное значение, называется оптимальным и обозначается Xopt или Х*.
Составим, например, математическую модель следующей задачи.
Пример 1. Пошивочный цех изготавливает три вида обуви из поступающих из раскройного цеха заготовок. Расход заготовок на пару обуви каждого вида, запасы заготовок, а также прибыль, получаемая фабрикой при реализации пары обуви каждого вида, заданы в табл. 1.1. Сколько пар обуви каждого вида следует выпускать фабрике для получения максимальной прибыли при условии, что заготовки II вида необходимо израсходовать полностью?
Т а б л и ц а 1.1
Обувь вида
|
А |
В |
С |
Запасы |
|
заготовок, ед. |
|||
|
|
|
|
|
Виды |
|
|
|
|
заготовок |
|
|
|
|
I |
1 |
2 |
- |
12 |
II |
1 |
- |
1 |
4 |
III |
2 |
2 |
- |
14 |
Прибыль, ден. |
3 |
2 |
1 |
|
|
||||
ед. |
|
|||
|
|
|
|
Решение. Чтобы сформулировать эту задачу математически, обозначим через x1 , x2 , x3 ) количество пар обуви соответственно видов А, В и С, которое необходимо выпускать фабрике для получения максимальной прибыли. Согласно условиям задачи прибыль от выпуска обуви вида А составит 3 x1 ден. ед., от вида В −2x2 ден.ед., от вида С −x3 ден. ед. Следовательно, целевая функция прибыли z выразится формулой
z=3 x1+2 x2+x3→max
Поскольку переменные x1, x2 и x3 определяют количество пар обуви, они не могут быть отрицательными, т. е.
x1≥0, x2≥0, x3≥0
Согласно условиям задачи на изготовление всей обуви будет использовано x1 +2 x2 заготовок 1-го вида. А так как запасы заготовок 1-го вида составляют 12 штук, то должно выполняться неравенство x1+2 x2≤12
На изготовление всей обуви будет использовано x1+x3 заготовок 2-го вида. Но так как по условию задачи запасы заготовок 2-го вида необходимо израсходовать полностью, то должно выполняться равенство x1+x3= 4.
Аналогично для заготовок 3-го вида должно выполняться неравенство 2 x1+2x2≤14
Следовательно, система ограничений будет иметь вид
x1 |
2 x 2 |
12 |
( количество |
заготовок |
вида |
I ) |
x1 |
|
x 3 4 |
( количество |
заготовок |
вида |
II ) |
2 x1 |
2 x 2 |
14 |
( количество |
заготовок |
вида |
III ) |
Итак, задача состоит в том, чтобы найти неотрицательные знчения x1, x2 и x3 , удовлетворяющие системе ограничений и максимизирующие целевую функцию z.
1.3.Специфика задач математического программирования.
Во - первых к задачам математического программирования неприемлемы, как правило, методы классического анализа для отыскания условных экстремумов, так как даже в наиболее простых задачах – линейных - экстремум достигается в угловых точках границы множества условий, т.е. в точках, где нарушается дифференцируемость.
И наиболее сильный метод решения экстремальных задач в классическом анализе – метод множителей Лагранжа – разработан для случая когда множество условий задается системой уравнений, а не системой неравенств.
Другой специфической особенностью является то, что в практических задачах число переменных и ограничений столь велико, что если просто перебирать все точки «подозреваемые в экстремальности», например все угловые точки множества условий, то никакая современная ЭВМ не в состоянии справится с этой задачей в разумные сроки.
В связи со сказанным, целью математического программирования является создание, где это возможно, аналитических методов определения решения, а при отсутствии таких методов – создание эффективных вычислительных способов получения приближенного решения.
Заметим, что наименование предмета – математическое программирование – связано с тем, что целью решения задач является выбор программы действий.
2. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ
2.1. Формы записи задач линейного программирования.
2.1.1. Каноническая форма записи задач линейного программирования
z |
c1 x1 |
c2 x2 |
... |
cn xn |
|
max |
(целевая функция), (1.1) |
|||
|
|
|
|
|
|
|
|
|
|
|
a11 x1 |
a12 x 2 |
... |
a1n x n |
|
b1 |
|
||||
a 21 x1 |
a 22 x 2 |
... |
a 2 n x n |
|
b 2 |
|
||||
.......... .......... .......... .......... ........ |
|
|||||||||
a m 1 x1 |
a m 2 x 2 |
... |
a mn x n |
|
b m (система ограничений), (1.2) |
|||||
|
|
|
|
|
|
|
|
|
|
|
x j |
0, j |
1, n |
(ограничения на переменные). (1.3) |
|||||||
|
|
|
|
|
||||||
|
|
a11 |
a12 |
... |
a1n |
|
|
|
||
|
A |
a 21 |
a 22 |
... |
a 2 n |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
|
... |
|
... |
|
|
|
|
Здесь |
a m 1 |
a m 2 |
|
a mn |
- матрица коэффициентов системы ограничений |
|||||
|
|
|
|
|
|
|
C (c1 , c2 ,..., cn ) - матрица-строка коэффициентов целевой функции;
b1
Bb 2
b n |
- матрица-столбец свободных членов; |
|
x1
x |
2 |
X |
|
x n |
- матрица-столбец неизвестных. |
|
Тогда каноническую форму записи задачи ЛП (1.1)-(1.3) можно представить в следующем матричном виде, эквивалентном первоначальному:
Z CX |
max, |
(1 .4 ) |
AX |
B , |
(1 .5) |
X |
0 . |
(1 .6 ) |
где О — нулевая матрица-столбец той же размерности, что и матрица Х.
Замечание. Не ограничивая общности, можно полагать, что свободные члены неотрицательны,
т.е. bi |
|
|
0, i |
|
1, m |
(иначе ограничительные уравнения можно умножить на (-1)). |
|||||||||||||
2.1.2. Симметричная форма записи задач линейного программирования |
|||||||||||||||||||
|
n |
c |
j |
x |
j |
max, |
|
|
n |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|||||||||||
z |
|
|
|
|
|
|
|
z |
c j |
, x j |
min, |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
j |
1 |
|
|
|
|
|
|
|
|
|
|
j 1 |
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
a ij x j |
|
|
bi , i 1, m , |
|
|
a ij x j |
bi , i 1, m , |
|||||||||||
j |
1 |
|
|
|
|
|
|
|
|
|
|
j |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
x i |
0, j 1, n. |
|
|
|
|
x i |
0, j 1, n. |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.1.3.Общая задача линейного программирования
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
z |
|
c j |
x j |
|
|
max(min), |
(1 .7 ) |
|
||||||
|
j |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a ij x j |
bi , i 1, m1 , |
(1 .8) |
|
||||||||||
j |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a ij x j |
bi , i m1 |
1, m 2 , |
(1 .9 ) |
|
|||||||||
j |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a ij x j |
bi |
, i |
m 2 |
1, m , |
(1 .10 ) |
|
|||||||
j |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
x j |
0, |
j |
1, n1 , |
|
|
|
(1 .11 ) |
|
||||||
|
|
|
|
|
|
|
|
|||||||
x j |
произвольн |
|
ого |
знака , j |
n1 1, n. (1 .12 ) |
2.1.4. Приведение задачи к каноническому виду
Задачи ЛП могут представляться по-разному, но все их можно привести к каноническому виду, в котором целевая функция z должна быть максимизирована, а все ограничения должны быть заданы в виде равенств с неотрицательными переменными. Приведем произвольную задачу ЛП (1.7)—(1.12) к каноническому виду, используя следующие правила:
минимизация целевой функции z равносильна максимизации целевой функции
(-z). Так, если целевая функция исходной задачи исследуется на минимум, т.е. z |
min , то |
||||||||||||||
можно рассмотреть функцию с противоположным знаком, которая будет стремиться к |
|||||||||||||||
максимуму: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
z |
max; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ограничения-неравенства вида a i1 x1 |
a i 2 x 2 ... |
a in x n |
|
|
bi |
преобразуются в |
|||||||||
ограничения-равенства путем прибавления к левым частям дополнительных (балансовых) |
|||||||||||||||
неотрицательных переменных |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
x n 1 |
0 : ai1 x1 |
|
ai 2 x2 ... |
ain xn |
xn |
1 |
bi , |
i |
1, m1 ; |
|
|||||
ограничения-неравенства вида |
|
|
|
|
|
|
|
|
|
|
|
|
|||
a i1 x1 |
a i 2 x 2 |
... |
a in x n |
bi |
преобразуются в ограничения-равенства путем вычитания |
||||||||||
от левых частей дополнительных неотрицательных переменных |
x n 1 |
0 : |
|
||||||||||||
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
a i1 x1 |
a i 2 x 2 |
... |
a in x n |
x n |
1 |
bi , |
i |
m1 |
1, m 2 ; |
|
|
|
дополнительные переменные в целевую функцию вводятся с коэффициентами, равными нулю:
c n 1 0, i 1, m 2 ;
переменные любого знака заменяются разностью двух других неотрицательных переменных:
x j |
x 1j |
x 2j , где |
x 1j |
0, x 2j |
0 . |
Замечание. Вводимые дополнительные переменные имеют определенный экономический смысл, прямо связанный с содержанием задачи. Так, в задачах об использовании ресурсов они показывают величину неиспользованного ресурса, в задачах о смесях - потребление соответствующего компонента сверх нормы.
Пример 2. Привести математическую модель задачи из примера 1 к каноническому виду:
z |
3 x1 |
2 x 2 |
|
x 3 |
max, |
||
x1 2 x 2 |
|
|
12 , |
|
|
||
x1 |
|
x 3 |
4, |
|
|
|
|
2 x1 |
2 x 2 |
|
14 , |
|
|||
|
|
|
|
|
|
|
|
x j |
0, |
j |
1,3. |
|
Решение. Целевая функция и неравенства являются линейными. Следовательно, это задача линейного программирования. Приведем ее к каноническому виду, прибавляя к левым частям
первого и третьего ограничений по одной дополнительной неотрицательной переменной ( x 4 и