
- •Методология систем и принятие решений
- •Лекция 1. Введение в системный анализ и принятие решений
- •1.2. Классификация систем
- •1.3. Сущность системного подхода
- •Лекция 2. Задачи системного анализа
- •2.1. Характеристика задач системного анализа
- •11) Внедрение результатов анализа.
- •Лекция 3. Основные понятия и определения теории принятия решений
- •3.1. Основные принципы теории принятия решений
- •3.2. Постановка задач принятия оптимальных решений
- •3.3. Этапы принятия решений
- •Лекция 4 . Формулировка целей исследования
- •4.1. Определение целей
- •4.2. Роль целей и стратегий в процессе формирования управленческих решений
- •4.3. Отображение цели и условий ее достижения
- •Лекция 5 . Онтологический анализ
- •5.1. Анализ информационных потоков
- •5.2. Описательные логики
- •Лекция 6. Структурирование целей стратегического управления предприятием
- •6.2. Структурирование целей стратегического управления предприятием на основе методологии объектно-ориентированного анализа и проектирования
- •6.3. Системный анализ задач стратегического управления и методов их решения
- •6.1. Системный анализ проблем стратегического управления предприятием
- •6.2. Структурирование целей стратегического управления предприятием на основе методологии объектно-ориентированного анализа и проектирования (на примере оао «Уралтранснефтепродукт»).
- •6.3. Поддержка принятия решений на среднем уровне управления. Задача логистики
- •Лекция 7. Основные приемы формализации задач системного анализа
- •7.1. Реализация выбора и принятия решений
- •7.2. Внедрение результатов анализа
- •7.3. Построение (выбор) моделей системы
- •7.4. Классификация видов моделирования систем
- •7.5. Возможность и эффективность моделирования систем на вычислительных машинах
- •Лекция 8. Математическое программирование
- •8.1. Математические постановки задач, приводящие к моделям линейного программирования
- •9.1. Содержательные постановки задач, приводящие к моделям линейного программирования.
- •9.2. Численные методы математического программирования
- •Симплекс-таблица
- •Лекция 12. Транспортные задачи линейного программирования
- •12.1. Постановка задачи
- •12.2. Методы составления начального опорного плана
- •12.3. Понятие потенциала и цикла
- •12.4. Критерий оптимальности базисного решения транспортной задачи. Методы отыскания оптимального решения
- •12.5. Усложненные задачи транспортного типа
- •Лекция 13. Дискретное программирование.
- •Лекция 14. Нелинейное программирование.
- •13.2.Решение задач нелинейного программирования в системе matlab
- •Лекция 15. Динамическое программирование
- •Лекция 16. Многокритериальные задачи принятия решений
- •16.2. Способы решения многокритериальных задач: свертка критериев в один (аддитивная, мультипликативная, минимаксная), приоритет важнейшего критерия, отбор недоминирующих альтернатив
- •Лекция 17. Методы многокритериальной оптимизации
- •Лекция 18. Анализ иерархий
- •Список литературы
Симплекс-таблица
С |
|
|
С1 |
С2 |
С3 |
… |
Сj |
… |
Cn |
0 |
… |
0 |
|
Bx |
A0 |
A1 |
A2 |
A3 |
… |
Aj |
… |
An |
An+1 |
… |
An+m |
cn+1 |
xn+1 |
a10 |
a11 |
a12 |
a13 |
… |
a1j |
… |
a1n |
1 |
… |
0 |
cn+2 |
xn+1 |
a20 |
a21 |
a22 |
a23 |
… |
a2j |
… |
a2n |
0 |
… |
0 |
… |
|
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
cn+i |
xn+i |
ai0 |
ai1 |
ai2 |
ai3 |
… |
aij |
… |
ain |
0 |
… |
0 |
… |
|
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
cn+m |
xn+m |
am0 |
am1 |
am2 |
am3 |
… |
amj |
… |
amn |
0 |
… |
1 |
|
|
a00 |
a01 |
a02 |
a03 |
… |
a0j |
… |
a0n |
a0m+1 |
… |
a0m+n |
Все дальнейшие преобразования связаны с изменением содержания этой таблицы.
Нижняя строка элементов аок, к = 0,…,т+п называется индексной. Элементы индексной строки вычисляются следующим образом:
означает
номер соответствующей строки.
Поскольку на первом шаге заполнения таблицы все элементы сn+i равны нулю, то элементам индексной строки присваиваются значения соответствующих элементов целевой функции данного столбца, взятые с обратным знаком, т.е. аok= -Ск. Последняя строка таблицы служит для определения направляющего столбца.
Элемент
а00 равен
значению целевой функции, которое
вычисляется по формуле
- номер
базисной переменной (индексация идет
по строкам
таблицы).
В столбце Вх записываются базисные переменные, на первом шаге в качестве базисных выбирают фиктивные переменные {хп+к }, к =1,…,т. В дальнейшем фиктивные переменные необходимо вывести из базиса.
В столбец С записываются коэффициенты при хп+к, на первом шаге значения этих коэффициентов равны нулю.
Для перехода от базиса фиктивных переменных к базису реальных переменных применяют следующие правила:
в качестве направляющего столбца выбирают столбец Аj для которого выполняется условие
a0J = min{aoi), l = l,…,п+т при а0l < 0, т.е. выбирается минимальный элемент, при условии, что этот элемент отрицательный;
• выбирают направляющую строку, для чего каждый элемент столбца свободных членов делится на соответствующий элемент направляющего столбца, элемент столбца свободных членов находится в одной строке с элементом направляющего столбца . Из всех возможных соотношений выбирается минимальное
при условии, что arj > 0, 1 < г < т.
Применяя сформулированные правила, определяем направляющий элемент. Далее выполняется шаг симплексных преобразований.
Переменная, которая соответствует направляющему столбцу, вводится в базис, а переменная, соответствующая направляющей строке, выводится из базиса. При этом для переменной, вводимой в базис, изменяется соответствующее значение коэффициента целевой функции. Вместо коэффициента сn+i соответствующего старой базисной переменной, в таблице записывается значение коэффициента целевой функции при переменной, вводимой в базис.
Если направляющий элемент аij , то переход от данной таблицы к следующей осуществляется с использованием следующих правил.
1. Для всех элементов направляющей строки
где к -
номер шага (к =
1, 2,...); i -
номер направляющей строки; j -
номер направляющего столбца;
£ =
0, т.е. все элементы направляющей строки
делим на направляющий элемент, в итоге
направляющий элемент стал равным
единице;
.
2. В
направляющем столбце необходимо
получить
,
для всех
, r≠i, при
,
т.е. в направляющем столбце должны быть
все нули кроме направляющего элемента,
который равен, единице.
Для всех остальных элементов, включая индексную строку, производим вычисления
(10.3)
Симплексные преобразования повторяют до тех пор, пока не реализуется один из двух возможных исходов:
а) все a0i ≥ 0 - это условие оптимальности базиса последней табицы;
б) найдется такой элемент a0j< 0, при котором все элементы столбца аrj < 0, - это признак неограниченности целевой функции на множестве допустимых решений.
Пример решения задачи линейного программирования. Рассмотрим задачу линейного программирования в следующем виде: найти максимум линейной формы 4х1 + 3х2 при ограничениях
x1 ≤;4000, х2 ≤; 6000,
х1 +
х2≤6000,
х1,х2
> 0.
Каноническая форма задачи линейного программирования будет иметь вид
4x1 + 3x2 + 0x3 + 0x4 + 0x5 → max;
1х1 + 0х 2 + 1х3 + 0x4 + 0x5, = 4000;
0х1 + 1х 2 + 0х3 + 1x4 + 0x5, = 6000;
1х1 + х2 + 0х3 + 0x4 + 1x5 = 6000;
1х1+ х2+ 0х3 + 0x4 + 1x5 =6000.
Составим исходную симплекс-таблицу (табл. 10.2).
Таблица 10.2
С |
|
|
4 |
3 |
0 |
0 |
0 |
|
Bx |
A0 |
A1 |
A2 |
A3 |
A4 |
A5 |
0 |
хз |
4000 |
1 |
0 |
1 |
0 |
0 |
0 |
x4 |
6000 |
0 |
1 |
0 |
1 |
0 |
0 |
x5 |
6000 |
1 |
|
0 |
0 |
1 |
|
|
0 |
-4 |
-3 |
0 |
0 |
0 |
Поскольку
-4 < -3 < 0, то в качестве направляющего
выбираем первый столбец. Составив
отношение вида
,
определяем направляющую строку. Для
этого находим минимальное отношение
min
Следовательно,
направляющая строка - первая, направляющий
элемент — а11=1-
Применив первый шаг симплексного
преобразования, получим новую таблицу
(табл. 10.3).
Таблица 10.3
С |
|
|
4 |
3 |
0 |
0 |
0 |
|
Bx |
A0 |
A1 |
A2 |
A3 |
A4 |
A5 |
4 |
x1 |
4000 |
1 |
0 |
1 |
0 |
0 |
0 |
x4 |
6000 |
0 |
1 |
0 |
1 |
0 |
0 |
x5 |
2000 |
1 |
|
-1 |
0 |
1 |
|
|
0 |
0 |
-3 |
4 |
0 |
0 |
На
данном этапе в качестве направляющего
столбца выбираем второй, направляющая
строка - третья, т.к.
Применим
следующий шаг симплексного преобразования.
В результате получим табл. 10.4.
Табл. 10.4.
С |
|
|
4 |
3 |
0 |
0 |
0 |
|
Bx |
A0 |
A1 |
A2 |
A3 |
A4 |
A5 |
4 |
x1 |
4000 |
1 |
0 |
1 |
0 |
0 |
0 |
x4 |
3000 |
0 |
1 |
|
1 |
- |
3 |
X2 |
3000 |
1 |
|
- |
0 |
|
|
|
25000 |
0 |
0 |
- |
0 |
|
Так как а03 = - < 0, то направляющий столбец А3 направляющая строка- вторая, направляющий элемент а23 = • Выполним очередной шаг преобразования, получим еще одну таблицу (табл. 10.5).
Таблица 10.5
С |
|
|
4 |
3 |
0 |
0 |
0 |
|
Bx |
A0 |
A1 |
A2 |
A3 |
A4 |
A5 |
4 |
x1 |
2000 |
1 |
0 |
1 |
|
1 |
0 |
x4 |
2000 |
0 |
1 |
1 |
|
-1 |
3 |
X2 |
6000 |
0 |
1 |
0 |
1 |
0 |
|
|
26000 |
0 |
0 |
0 |
|
4 |
Поскольку в индексной строке все элементы положительны, это означает, что найдено оптимальное решение х10= 2000, х20 = 6000, х30 = 2000. Искомое значение целевой функции равно 4 х1 + Зх2= 26000.
Алгоритм симплекс-метода сводится к следующему.
1. В последней строке симплекс-таблицы находят наименьший положительный элемент, не считая свободного члена. Столбец, соответствующий этому элементу, считается разрешающим.
2. Вычисляют отношение свободных членов к положительным элементам разрешающего столбца (симплекс-отношение). Находят наименьшее из этих симплекс-отношений, оно соответствует разрешающей строке.
3. На пересечении разрешающей строки и разрешающего столбца находится разрешающий элемент.
4. Если имеется несколько одинаковых по величине симплекс-отношений, то выбирают любое из них. То же самое относится к положительным элементам последней строки симплекс-таблицы.
5. После нахождения разрешающего элемента переходят к следующей таблице. Неизвестные переменные, соответствующие разрешающей строке и столбцу, меняют местами. При этом базисная переменная становится свободной переменной и наоборот. Симплекс-таблица преобразована следующим образом (табл. 10.4):
17. Элемент табл. 10.4, соответствующий разрешающему элементу табл. 10.3, равен обратной величине разрешающего элемента.
7. Элементы строки табл. 10.4, соответствующие элементам разрешающей строки табл. 10.3, получаются путем деления соответствующих элементов табл. 10.3 на разрешающий элемент,
8. Элементы столбца табл. 10.4, соответствующие элементам разрешающего столбца табл. 10.3, получаются путем деления соответствующих элементов табл. 10.3 на разрешающий элемент и берутся с противоположным знаком.
9. Остальные элементы вычисляются по правилу прямоугольника: мысленно вычерчиваем прямоугольник в табл. 10.3, одна вершина которого совпадает с разрешающим элементом, а другая - с элементом, образ которого мы ищем; остальные две вершины определяются однозначно. Тогда искомый элемент из табл. 10.4 будет равен соответствующему элементу табл. 10.3 минус дробь, в знаменателе которой стоит разрешающий элемент, а в числителе - произведение элементов из двух неиспользованных вершин прямоугольника.
10. Как только получится таблица, в которой в последней строке все элементы отрицательны, считается, что минимум найден. Минимальное значение функции равно свободному члену в строке целевой функции, а оптимальное решение определяется свободными членами при базисных переменных. Все свободные переменные в этом случае равны нулю.
11. Если в разрешающем столбце все элементы отрицательны, то задача не имеет решений (минимум не достигается).
Лекция 11. Двойственная задача линейного программирования
Двойственная задача в линейном программировании строится по формальным правилам на базе другой задачи линейного программирования, называемой основной.
Например, если основная задача имеет вид
Ах ≤b , х≥0, f(с,х) → max, (11.1)
то двойственная к ней задача также является задачей линейного программирования:
АТу≥ с, у≤0, f(b, у)→ min. (11.2)
Здесь х = (x1,х2,... ,хn); b = (b1, b2,…,bт); с = (с1, с2,..., сn); у = (y1,y2,... ,уm);
f(c,x)=
(11.3)
(b,y)=
транспонированная
матрица A.
Основная и двойственная к ней задачи образуют пару взаимно двойственных задач: двойственная задача к двойственной оказывается основной задачей.
Отношение между прямой и двойственной задачами находи выражение в виде следующих правил:
1) если прямая задача является задачей максимизации, то двойственная задача будет задачей минимизации и наоборот;
2) коэффициенты целевой функции прямой задачи с = (с1, с2,..., сn) становятся свободными членами ограничений двойственной задачи;
3) свободные члены ограничения прямой задачи b = (b1, b2,…,bт) становятся свободными членами целевой функции двойственной задачи;
4) матрицу ограничений двойственной задачи получают транспонированием матрицы ограничения прямой задачи;
5) знаки неравенств в ограничениях изменяются на обратные;
6) число ограничений прямой задачи равно числу переменных двойственной задачи, а число ограничений двойственной задачи равно числу переменных прямой задачи.
Основная теорема двойственности:
Либо обе задачи двойственной пары разрешимы, и тогда (с, х*) = (b, у*), либо обе задачи не имеют решения. Здесь х*,у* - оптимальные планы пары двойственных задач.
Эта и ряд других теорем, относящихся к двойственным задачам, играют важную роль при качественном анализе задач линейного программирования.
Содержательный анализ двойственной задачи, в том числе и неизвестных у1 у2, ... , уm, полностью определяется содержательным смыслом прямой задачи.
Так, например, если основная задача (11.1) является задачей производственного планирования, где А - технологическая матрица, bi - количество i-го ресурса, xj - объем выпуска j-го продукта, i = 1, 2, ... m, j = 1, 2, ... n, то целью решения двойственной задачи (11.2) оказывается нахождение так называемых двойственных оценок ресурсов yi, которые также называют маргинальными (предельными) данными ресурсов.
Маргинальные цены, очевидно, связаны только с производством и потому отличаются от обычных рыночных цен на ресурсы.
Если маргинальные цены не превосходят рыночных (уi*≤ qi, i=1,2,..., m), то производство, для которого они были рассчитаны, не сможет получить прибыль р от своей производственной деятельности: для любого плана выпуска x.
р(х) = (с, х) - (b, q) ≤, (с, х*) - (b, q) ≤ (с, х*) - (b. у*) = 0.
И, наоборот, если уi* > qi, i= 1, 2,..., т, то реализация оптимального производственного плана х* принесет положительную прибыль.
р(х*) = (с, х*) - (b, q) = (А, у*) - (b, q) = (b, y*-q)> 0,
размер которой ограничивается: а) средствами, выделяемым на закупку ресурсов; b) объемом рынка ресурсов; с) технологическими условиями производства.
Из теоремы двойственности вытекает ряд положений, которые позволяют устанавливать некоторые соотношения между целевой функцией и ресурсами, необходимыми для достижения цели.
В частности, следующее важное утверждение:
Если
задача линейного программирования не
вырождена и С(х*) представляет
собой максимум ее линейной формы
при
заданных ограничениях, то дс(х*)/дbi =
уi*, i =
1,2,..., т.
Таким
образом, с математической точки зрения
оптимальные оценки определяют влияние
свободных членов b, условий-ограничений
на оптимальную величину целевой функции.
Иными словами, вычисление наряду с
оптимальным планом х* = (х1*,
х2*, ...
, хn*) связанных
с ним оптимальных оценок у* = {у1*,
у2*, ...
, yт*) позволяет
ввести относительную важность отдельных
ресурсов (b1*,b2*.....bm*) для
достижения поставленной цели
(максимизации
).
На основе установления такой взаимосвязи между х* и у* можно исследовать влияние небольших отклонений ресурсов на изменение оптимального значения целевой функции, получать маргинальные оценки, идея которых рассмотрена выше), получать другие рекомендации, полезные при разработке и корректировке планов в тех случаях, когда не может быть найдено строгое решение задачи оптимизации.
Идеи теории двойственности находят важное применение в разработке численных методов линейного программирования, позволяющих решать задачи с неопределенностью, не имеющие строгого оптимума, что имеет особое значения для задач системного анализа.
Пример 11.1.
Составить двойственную задачу по отношению к задаче, состоящей в максимизации функции
(11.4)
при условиях
(11.5)
(11.6)
Решение. Для данной задачи
и
Число переменных в двойственной задаче равно числу уравнений в системе (11.5), т. е. равно трем. Коэффициентами в целевой функции двойственной задачи являются свободные члены системы уравнений (11.5), т.е. числа 12, 24, 18.
Целевая функция исходной
задачи (11.4) – (11.6) исследуется на максимум,
а система условий (11.5) содержит только
уравнения. Поэтому в двойственной задаче
целевая функция исследуется на минимум,
а ее переменные могут принимать любые
значения (в том числе и отрицательные).
Так как все три переменные исходной
задачи (11.4) – (11.6) принимают только лишь
неотрицательные значения, то в системе
условий двойственной задачи должны
быть три неравенства вида “ ”.
Следовательно, для задачи (11.4) – (11.6)
двойственная задача такова: найти
минимум функции
при
условиях
11.2.Решение задач линейного программирования с использованием программного обеспечения MATLAB
В состав MATLAB входит Optimization Toolbox, предназначенный для решения линейных и нелинейных оптимизационных задач.
Задача линейного программирования состоит в нахождении вектора x, который минимизирует целевую линейную функцию
fTx
при условии AX≤B ; X≥0,
где с=(с1, c2,…,cn) представляет собой n-мерный вектор, соствленный из коэффициентов целевой функции, причем cT – транспонированная вектор- строка; x=(x1 . xn) – n –мерный вектор переменных решений,
B=[b1
b2 m-мерный вектор свободных членов
bm]
Beq=[beq1
…
beqr] ограничения в виде равенств;
двусторонние покомпонентные ограничения в векторной форме
lb≤x≤ub
A=
Пример: задача состваления рациона питания
Имеются 3 продукта П1, П2 и П3 разной цены, каждый из которых содержит определенное количество питательных ингридиентов И1, И2, И3, И4.
Известно, что в день требуется : И1не менее 250, И2 не менее 60, И3 не менее 100 и И4 не менее 220. Требуется минимизировать затраты на приобретение продуктов. Очевидно, что количество приобретаемых процессов не может быть отрицательным..
Записываем целевую функцию, матрицу A, векторы b и lb в соответствии с требованиями Toolbox, обозначив искомые количества продуктов через x1, x2 и x3 соответственно. Поскольку линейные ограничения содержат «меньшк или равно», а количество ингредиентов в рационе не может быть менее заданных величин, то следует изменить знаки обеих частей системы.При вызове программы linprogвместо неиспользуемых ограничение (нет ограничений в виде равенств) задайте пустые массивы, обозначаемые в MATLAB пустыми скобками.
Программа ration
% задание матрицы и вектора правой части системы неравенств
A=[4 6 15
2 2 0
5 3 4
7 3 12]
A=-A;
b=[250 60 100 220];
b=-b;
% Определение коэффициентов целевой функции
f=[44; 35; 100];
% Задание ограничений снизу на переменные
lb=[0; 0; 0];
% решение и вывод результата в командное окно
x=linprog(f,A,b,[],[],lb)