Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория принятия решений. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
1 Мб
Скачать
...
ak 2 хk 2
a22 хk 2
a12 хk 2

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

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

1.2. Методы линейного программирования в принятии детерминированных однокритериальных решений

Наиболее употребительными методами нахождения оптимальных решений в детерминированных условиях с однокритериальной целевой функцией являются методы линейного и динамического программирования. Методы линейного программирования достаточно подробно описаны в учебных пособиях [15, 40]. Здесь мы приведем лишь краткий алгоритм решения задач симплекс-методом (как наиболее универсальным из всех употребляемых).

Для применения симплекс-метода необходимо задачу представить в следующем виде:

х1

х2

хkхi

b1 (a11хk 1

b2 (a21хk 1

bk (ak1 хk 1

0, i 1, 2,....n

... a1,n k хn )

... a2,n k хn )

(1)

... ak ,n k хn )

F = c0 – (–c1 xk+1 – c2 xk+2 – … – cn-k xn) min

где все bi 0 (неотрицательности с0 не требуется). Запись (1) должна удовлетворять определенным требованиям.

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

Например, ограничение х1 + 2х2 – 3х3 ≥ 5 равносильно условию

х1 + 2х2 – 3х3 – 5 ≥ 0.

Обозначим выражение в левой части через новую переменную, которой ранее не было в системе ограничений и целевой функции, например через х4:

х4 = х1 + 2х2 – 3х3 – 5 ≥ 0.

Последнюю запись удобно разбить на две части. Это уравнение х4 = х1 + 2х2 – 3х3 – 5

инеравенство х4 ≥ 0, которое мы добавим к условию неотрицательности переменных.

2)Одни переменны (их называют главными или базисными) должны быть выражены через другие (их называют независимыми или свободными). В записи (1) х1, х2, … хk

базисные переменные, хk+1, xk+2, …, xk+n – свободные. Разумеется, переменные х1, х2, … хk выбраны в качестве главных для определѐнности, выраженными могут быть любые другие

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

– свободной, то необходимо подставить ее выражение как базисной в то равенство, где она

11

является свободной.

3) Все свободные члены в системе ограничений должны быть неотрицательными. Если это не так, то этого чаще всего можно добиться, выбрав какую-либо другую переменную в качестве главной. Например, в уравнении

х1 = –3 + х4 – х5 + 2х6

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

х4 = 3 + х1 + х5 – 2х6,

которое уже удовлетворяет нашему требованию. Обратите внимание на то, что новое выражение для базисной переменной далее необходимо подставить во все остальные уравнения системы ограничений и целевую функцию, исключив тем самым эту переменную из остальных уравнений. При этом может случиться, что какой-либо другой свободный член в системе ограничений станет отрицательным. Продолжая эту процедуру несколько раз мы можем либо получить требуемый результат, либо прийти к условию, из которого нельзя выразить ни одну переменную так, чтобы свободный член стал неотрицательным. Это возможно, например, в ситуации х1 = – 2 – х2 – х3. Но результат подобного рода означает, что система ограничений вообще не имеет неотрицательных решений (выражение в правой части явно отрицательно в силу неотрицательности переменных, переменная же слева неотрицательна, следовательно, такое равенство противоречиво).

4) В случае, если требуется найти не минимум, а максимум целевой функции, то функцию F max заменяют на функцию Ф = –F (при этом Ф min).

Далее составляется симплекс-таблица из коэффициентов системы ограничений и целевой функции:

 

bi

xk+1

x k+2

….

xn

 

b

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

aij

 

x1

b1

a11

a12

a1,n-k

 

 

 

x2

b2

a21

a22

a2,n-k

 

 

 

 

 

 

 

xk

bk

ak1

ak2

ak,n-k

 

 

 

F

c0

c1

c2

–cn-k

 

 

 

С данной таблицей работаем по следующему алгоритму.

1)Если все числа в нижней строке (за возможным исключением самого первого c0)

неположительны, то см. пункт 2, если есть положительные числа (кроме с0) – см. пункт

3.

2)Если среди коэффициентов –c1, –c2 … – cn–k положительных нет, задача решена, значения базисных переменных и целевой функции находятся в столбце bi, каждая базисная, находящаяся в столбце подписей (самый первый столбец таблицы) равна стоящему в

соседнем (втором) столбце числу bi, Fmin также равно числу стоящему в столбце bi (в нижней строке); все свободные переменные (которых нет в столбце подписей строк) равны 0.

Решение завершено.

2)Если среди коэффициентов –c1, –c2 … – cn–k есть хотя бы один положительный,

то выбираем столбец, где находится положительный коэффициент, и выделяем его – это будет ведущий столбец (если таких положительных элементов в нижней строке несколько,

то выбираем любой из них, разумеется, не беря с0). Пусть, например, это будет столбец с номером j. Выделяем его.

4)Просматриваем все остальные элементы в ведущем (выделенном) столбце. Если положительных больше нет, см. пункт 5, если положительные есть, то см. пункт 6.

5)Если положительных чисел в ведущем столбце (кроме нижнего) нет, то задача оптимального решения не имеет, целевая функция неограниченно убывает. Решение завершено.

12

6) Если в выделенном столбце есть положительные коэффициенты aij, то для

каждого такого положительного числа составляем дробь bi , в знаменателе которой стоит

aij

данное положительное число аij, а в числителе – свободный член bi из той же строки, в которой стоит рассматриваемое положительное число. Из полученных положительных

дробей выбираем наименьшую. Строку, где находится наименьшее отношение

bi

,

 

 

aij

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

7)Элемент, который находится на пересечении ведущей строки и ведущего столбца

(аmj) назовѐм разрешающим. Его также выделяем. Переходим к заполнению новой симплекс-таблицы.

8)Верхнюю строку (подписи) оставляем без изменений. Подпись ведущей (выделенной) строки меняем на подпись ведущего (выделенного) столбца (то есть в первом столбце вместо хm записываем хj), остальные подписи строк оставляем без изменений.

9)Заполняем выделенную строку – все еѐ элементы делим на разрешающий элемент. 10) Получаем нули в выделенном столбце. Для этого умножаем ведущую строку

исходной таблицы на подходящие числа и прибавляем эту строку к другим строкам. Так если в строке с номером i находится элемент аij, то ведущую строку с номером m нужно умножить

на дробь ( aij ) и прибавить результаты к соответствующим элементам строки с номером i.

am j

Чтобы получить 0 в ведущем столбце строки F, нужно ведущую строку умножить на

с j

.

 

 

am j

Таким образом, мы получаем новую симплекс-таблицу.

 

 

11) Возвращаемся к пункту 1.

 

 

Взаимно двойственные задачи линейного программирования

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

Рассмотрение двойственных задач начнѐм со следующего примера. Пусть строительная фирма строит задания двух типов – коттеджи и магазины. Для строительства одного магазина требуется 1 инженер, 16 строителей и 9 специалистов по отделке, а для строительства коттеджа – 2 инженера, 6 строителей и 7 специалистов по отделке. Время, затрачиваемое на строительство каждого объекта, одинаково, но строительство магазина приносит чистую прибыль в 5 млн. рублей, а строительство коттеджа – в 7 млн. рублей. В фирме работает 15 инженеров, 96 строителей и 69 специалистов по отделке. Естественной задачей для этой фирмы является определение плана строительства (сколько строить магазинов, а сколько коттеджей), позволяющего получить максимальную прибыль. Поэтому естественно обозначить через х1 количество магазинов, а через х2 – количество коттеджей которые необходимо построить в заданный период времени. Тогда целевая функция имеет вид: F = 5x1 + 7x2 (F – прибыль в млн. рублей). Ограничения в этой задаче (помимо естественных условий неотрицательности) связаны с количеством трудовых ресурсов (то есть инженеров, строителей и специалистов по отделке), которыми располагает фирма:

х1 2х2 15

16х1 6х2 96

9х1 7х2 69

Теперь допустим, что наряду с рассмотренной выше строительной фирмой

13

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

– хозяин первой фирмы не будет бороться за сохранение сотрудников, если доход, который они могут принести, окажется меньше той суммы, которую он будет вынужден им заплатить. В связи с вышесказанным, задачей фирмы конкурента является определение тех сумм, которые она может выплатить специалистам каждого вида с тем, чтобы они гарантированно перешли в конкурирующую фирму. При этом фирма-конкурент заинтересована в том, чтобы еѐ суммарные издержки были минимальными. Обозначим через у1 сумму, которая фирмаконкурент планирует выплачивать каждому перешедшему к ней инженеру, через y2 – сумму выплачиваемую каждому строителю, а через у3 – специалисту по отделке (в млн. руб.). Если фирма намерена перекупить всех сотрудников, то еѐ суммарные издержки будут составлять величину

φ = 15y1 + 96y2 + 69y3 min.

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

y1 + 16y2 + 9y1 ≥ 5,

то хозяину первой фирмы выгоднее отказаться от постройки магазина, чем назначать своим сотрудникам более высокое вознаграждение. Аналогичное ограничение для коттеджа принимает вид 2y1 + 6y2 + 7y1 ≥ 7. Естественно значения всех переменных также должны оставаться неотрицательными и задача фирмы конкурента принимает форму:

φ = 15y1 + 96y2 + 69y3 min

у1 16 у2 9 у3 52 у1 6 у2 7 у3 7

у1 0, у2 0, у3 0

Данная задача является примером двойственной задачи для задачи максимизации функции F = 5x1 + 7x2 при ограничениях:

х1 2х2 15

16х1 6х2 96

9х1 7х2 69

х1 0, х2 0

Отметим особенности двойственных задач:

1)исходная задача является задачей на максимум, двойственная задача является задачей на минимум;

2)все знаки неравенств в исходной задаче – это ≤, а в двойственной же задаче все знаки ≥;

3)коэффициенты целевой функции исходной задачи становятся свободными членами в системе ограничений двойственной задачи, а свободные члены исходной задачи становятся коэффициентами целевой функции двойственной задачи;

4)матрица, составленная из коэффициентов системы ограничений исходной задачи оказывается транспонированной к соответствующей матрице двойственной задачи

14

1

2

Т

1

 

 

 

 

16

6

 

16

9

 

 

=

 

 

 

.

 

 

 

2

6

7

 

 

9

7

 

 

 

 

 

 

 

 

 

 

Решение двойственной задачи представляет интерес не только для фирмы-конкурента, но и для первой строительной фирмы: руководство должно иметь представление о том, какова может быть максимальная оплата труда сотрудников (чтобы не работать в убыток) в случае угрозы со стороны конкурентов (конечно, максимальные зарплаты следует назначать только в случае сильного дефицита специалистов определѐнного типа на рынке труда). Ниже дадим общее определение двойственной задачи.

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

F = c0 + c1x1 + c2x2 + … + сnxn min

a11 x1

a12 x2

... а1n xn

b1

 

 

 

 

a22 x2

 

... а2n xn

 

b2

 

a21 x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

a

m1

x

a

m 2

x

2

... а

mn

x

n

b

m

 

1

 

 

 

 

 

 

x1

0, x2

0,..., xn 0

 

 

 

С данной задачей мы связываем другую задачу, которую назовем двойственной по отношению к исходной или задачей I’. Вот ее формулировка:

φ = c0 + b1y1 + b2y2 + … + bmym max:

a11 y1 a21 y2

... аm1 ym c1

 

a22 y2

... аm2 ym c2

a12 y1

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

a y

a

2n

y

2

... а

m n

y

m

c

n

1n 1

 

 

 

 

 

y1 0, y2

0,..., ym 0

 

 

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

Транспонировав эту матрицу, получим матрицу двойственной задачи (при этом знаки неравенств ≥ меняем на знаки ≤, а в целевой функции меняем минимум на максимум, также и меняем названия переменных – вместо х берем у). Если за исходную принимается не первая, а вторая задача, то, составив к ней двойственную, мы получим первую задачу, поэтому две указанные выше задачи называют взаимно двойственными.

Теорема двойственности. Если исходная задача имеет решение, то и двойственная ей также имеет решение. При этом min F = max φ. Если в исходной задаче целевая функция неограниченна снизу, то в двойственной задаче система ограничений не имеет ни одного неотрицательного решения.

По поводу последнего утверждения теоремы сразу же заметим, что оно не допускает

15

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

Исходная

Двойственная

Минимизировать

Максимизировать φ =

Почленно складывая неравенства в каждой системе ограничений, приходим к противоречивым числовым неравенствам (0 ≥ 1 для исходной и 0 ≤ –1 для двойственной). В обоих случаях системы ограничений не имеют ни одного неотрицательного решения.

Пусть даны взаимно двойственные задачи I и I’. И в той и в другой системе мы можем от ограничений в виде неравенств перейти к ограничениям в виде уравнений.

a11x1

a12 x2

... а1n xn

b1

хn 1

 

c1 (a11 y1

a21 y2

... аm1 ym ) ym 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(a12 y1

a22 y2

... аm2 ym ) ym 2

a22 x2

... а2n xn

b2

xn 2

 

c2

a21x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

, ...

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

am2 x2 ... аm n xn bm xn m

 

c

(a y

a

2n

y

2

... а

m n

y

m

) y

n m

am1 x1

 

n

1n 1

 

 

 

 

 

x1 0, x2 0,...,xn 0, xn 1 0,...,xn m

0

y1 0, y2

0,..., ym 0, ym 1

0,..., yn m 0

Количество базисных переменных в исходной задаче совпадает, как легко видеть, с количеством свободных переменных в двойственной задаче и наоборот. Это позволяет установить следующее соответствие между переменными (базисным переменным одной задачи ставятся в соответствие свободные переменные другой задачи, взятые по порядку).

x1

xn

xn+1

xn+m

|

 

|

|

 

|

ym+1

yn+m

y1

ym

 

Данное

соответствие

легко усмотреть, подписав переменные к расширенным

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

Рассмотрим два примера применения двойственного симплекс-метода.

Пример 1. Требуется максимизировать φ = –у1 – 2у2 – 3у3 при условии неотрицательности переменных и ограничениях:

у1

2 у2 3у3

1

.

 

у2 у3 1

2 у1

 

Принимая эту задачу за I’, составим двойственную ей задачу I: найти минимум F = x1 – x2 при ограничениях

x1 2x2 1

 

 

 

2

 

2x1 x2

 

.

 

 

 

 

 

 

3x1 x2 3

 

x 0, x

2

0

 

1

 

 

Умножим все ограничения на (–1) и с помощью добавочных неизвестных х3, х4, х5 формулируем задачу I в следующем виде:

16

1 (x1 2x2 ) х32 ( 2x1 x2 ) x4

3 (3x1 x2 ) x5

x1 0, x2 0, x3 0, x4 0, x5 0

F= x1 – x2 min.

Висходной задаче свободными являются переменные у1, у2, у3, и можно было бы

ввести базисные переменные у4, у5. В двойственной задаче свободными являются переменные х1, х2, а неизвестные х3, х4, х5 являются базисными. Соответствие между неизвестными:

x1

x2

x3

x4

x5

|

|

| |

 

|

y4

y5

y1

y2

y3

Решая задачу симплекс-методом после проведения вычислений (которые читателю рекомендуется произвести самостоятельно), приходим к последней симплекс-таблице, из

которой заключаем, что Fmin = –

11

(при х1

=

1

, х2 =

 

12

).

 

 

 

5

 

5

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

bi

 

x1

 

 

 

x2

 

 

x3

x4

x5

 

x3

 

 

0

 

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2

 

 

0

 

 

 

 

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

 

 

1

 

 

 

 

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

0

 

 

 

 

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Из последней строки таблицы заключаем, что коэффициент целевой функции при х4

равен

4

(соответствует переменной у2 исходной задачи), а при х5

равен

1

5

5

 

 

 

(соответствует переменной у3 исходной задачи), коэффициенты же при остальных переменных равны 0. Меняя знаки всех результатов в нижней строке, находим решение первой задачи:

 

 

 

 

 

 

y1=0,

y2 =

 

 

, y3 = , max φ =

11

.

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример 2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задача I

 

 

 

 

 

Задача I’

 

 

 

 

 

х 2х

2

х

3

2

 

 

у1 3у2 1

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

х2 2х3 1

 

 

 

 

 

 

 

 

 

3х1

 

2 у1 у2

 

3

 

 

 

 

 

 

0, x2

 

0, x3 0

 

 

 

у1 2 у2 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

 

 

 

 

 

 

 

 

Минимизировать F = х1 – 3х2 + 3х3

 

 

у 0, у

 

0

 

 

 

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Максимизировать = – 2у1 – у2

 

Решая задачу I симплекс-методом, после умножения неравенств на –1 и введения

новых переменных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

х

 

2 (х 2х

 

х

 

)

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

1

 

 

 

2

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

х5 1 (3х1 х2 2х3 )

 

 

 

 

 

 

 

 

 

 

 

x 0, x

2

0, x

3

 

0, x

4

0, x

5

0

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F = 0 – (–х1 + 3х2 – 3х3)

17

приходим к таблице:

 

bi

X1

x2

x3

x4

x5

x4

2

1

–2

1

1

0

x5

1

3

–1

–2

0

1

f

0

–1

3

–3

0

0

В столбце x2 последнее число положительно, между тем как все остальные числа этого столбца отрицательны. Это означает, что F неограниченна снизу. По теореме двойственности система ограничений задачи I’ не имеет неотрицательных решений.

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

Взадачах линейного программирования решение, как правило, принимается одномоментно. Однако довольно часто приходится сталкиваться с развивающимися ситуациями, в которых решения меняются от этапа к этапу в зависимости от результатов достигнутых на каждом этапе – то есть ситуация рассматривается «в динамике». Для планирования такого многоэтапного решения применяются методы динамического программирования. Кроме того, в задачах линейного программирования целевая функция всегда линейна. Но очень часто приходится иметь дело с ситуациями, когда функция меняется скачками (например, оптовые поставки со скидками дают одни расценки для одних объемов закупок и другие – для других объемов; проценты в банке зависят от суммы вклада; стоимость перевозок, если используется собственный транспорт, определяется не количеством перевозимых тонн, а количеством используемых транспортных средств) - функция приобретает характер нелинейности и становится даже сложно записать аналитическое выражение этой функции. Вместо этого используются таблицы значений. Легко оперировать с таблицами такого рода данных как раз помогают методы динамического программирования.

При решении задач методами динамического программирования обязательно выделяются некоторые этапы принятия решений (задача разбивается на этапы). Далее используется принцип оптимальности Беллмана (Р.Э. Беллман, 1920—1984, американский математик, ведущий специалист в области вычислительной техники). Этот принцип состоит

втом, что на каждом шаге управление выбирается с учѐтом последствий, так как управление, оптимизирующее целевую функцию только для данного шага, может привести к неоптимальному эффекту всего процесса (в этом легко убедится на примере задачи о замене оборудования – на первом шаге максимальная прибыль может быть получена, если использовать оборудование на полную мощность и не осуществлять ни замен, ни профилактического ремонта; однако, такая стратегия может привести к существенной потере прибыли на последующих этапах, а в результате и по сумме всех этапов). Поэтому необходимо искать не максимум/минимум только для данного шага, а максимум/минимум для суммы данного шага с результатами всех последующих шагов, то есть учитывать последствия. Единственный этап, на котором уже не нужно учитывать последствия – это последний этап, поэтому задачи такого рода решают методом «обратной прогонки», то есть начиная от последнего этапа к первому. Итак, решение начинается с последнего этапа, но чтобы принять решение на последнем этапе, необходимо понять в каком «состоянии» мы будем находится к данному этапу (если мы решаем задачу о замене оборудования, то состояние – это количество и степень износа имеющегося в наличии оборудования, если задачу об инвестировании – то количество оставшихся средств, если задачу о загрузке транспортного средства – тогда состоянием является количество погруженного или оставшегося груза, количество свободного места, и т.п.). Это состояние заранее неизвестно, поэтому необходимо сделать все возможные предположения о тех состояниях, в которых мы можем оказаться к началу последнего этапа и для каждого такого состояния принять оптимальное решение (такое решение называется условно-оптимальным, так как принимается при условии, что мы окажемся в предполагаемом состоянии). При этом мы фиксируем принятое наилучшее решение и значение целевой функции для каждого

18

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

Разберѐм предлагаемую методику решения на примере определения оптимального плана инвестирования, если результаты от вложений заданы в виде таблицы. В задаче требуется составить оптимальный план инвестирования 700 тысяч рублей в три предприятия, максимизирующий итоговую суммарную прибыль, если доходность каждого предприятия в зависимости от объѐмов капиталовложений задана таблицей 1:

Таблица 1. Условия задачи

Объѐм

Прибыль, получаемая от предприятия в зависимости от объѐма

капиталовложений

 

капиталовложений (тыс. руб.)

 

 

предприятие 1

 

предприятие 2

 

предприятие 3

0

0

 

0

 

0

100

30

 

50

 

40

200

50

 

80

 

50

300

90

 

90

 

110

400

110

 

150

 

120

500

170

 

190

 

180

600

180

 

210

 

220

700

210

 

220

 

240

Решение: Традиционно решение задач линейного программирования начинается с разбивки решения на этапы. В данном случае, несмотря на единовременность принимаемого решения, можно выделить условные этапы – будем считать, что на первом этапе мы инвестируем средства в первое предприятие, на втором – во второе, на третьем – в третье. Хотя последовательность этапов в данном случае совершенно не существенна, опять следуя традиции, будем решать эту задачу методом обратной прогонки – то есть от последнего этапа к первому. Для выбора условно-оптимального управления на последнем шаге, сделаем возможные предположения о состоянии системы (то есть об объѐмах имеющихся у нас капиталов) к третьему этапу. Очевидно, что капитал, которым мы будем располагать к третьему этапу, будет находиться в пределах от 0 до 700 тыс. рублей. На последнем этапе (то есть в момент, когда решение по инвестированию в первое и второе предприятие уже принято), оптимальным управлением будет вложение всех оставшихся средств в третье предприятие (больше их просто некуда вложить). Доходы, получаемые от такого капиталовложения, занесѐм в две верхние строки таблицы 2 (данные берутся из последнего столбца таблицы 1). Далее таблицу заполняем следующим образом. В первом столбце таблицы укажем средства, предположительно вкладываемые во второе предприятие (начиная с 0; строку, которая начинается с 0, назовѐм нулевой). Заметим сразу, что если мы ничего не вложим в третье предприятие (столбец, вверху которого стоит 0; будем называть его нулевым столбцом), то доход будет получаться только от вложений во второе предприятие, поэтому в нулевой столбец копируем значения из столбца, соответствующего предприятию 2 в таблице 1. В остальных клетках укажем суммарную прибыль, которую можно получить от инвестирования соответствующих сумм во второе и третье предприятие одновременно (для этого складываем значения в нулевой строке и нулевом столбце таблицы 2, которые

19

выделены жирным шрифтом). Для сокращения пояснений обозначим каждую клетку парой чисел, первое из которых будет соответствовать количеству вкладываемых тысяч рублей, указанному в первом столбце таблицы, а второе – количеству тысяч рублей, указанному в верхней строке. Например, клетка (100, 300) – это клетка, в которую заносится доход от вложения 100 тыс. рублей во второе предприятие (доход составит 50 тысяч), в сумме с доходом от вложения 300 тыс. рублей в третье предприятие (доход 110 тысяч). Таким образом, суммарный доход от инвестирования этих средств составит 50 + 110 = 160 тыс. руб., поэтому в клетку (100, 300) заносится значение 160 (показано курсивом в таблице 2).

Таблица 2. Прибыль от вложения средств во вторе и третье предприятия:

Клетки, сумма номеров которых больше 700 не заполняются (например, клетки (100, 700), (200, 600) и т.д.), поскольку эти клетки соответствуют суммарным инвестициям, превышающим 700 тысяч. Из данной таблицы легко видеть, что значения, соответствующие инвестициям конкретной денежной суммы, расположены по диагонали по отношению друг к другу. В этом случае сумма номеров клеток одинакова, например, возможные варианты инвестирования 300 тысяч находятся в клетках, сумма номеров которых равна 300 – это клетки (300, 0), (200, 100), (100, 200) и (0, 300). Для наглядности проведѐм через все клетки, соответствующие инвестициям одинаковых сумм параллельные линии (как это показано в таблице 2). В частности, на линии, соответствующей инвестиции 300 тыс. руб., расположены возможные значения прибыли 90, 120, 100, 110. Выбираем из значений данных клеток максимальное и обводим его в кружок – это значение 120 тыс. руб., оно находится в клетке (200, 100). В нашем случае это означает следующее: если ко второму этапу мы подошли с капиталом 300 тыс. рублей, то наиболее выгодно будет вложить 200 тысяч во второе предприятие и 100 тысяч в третье, что принесѐт прибыль в 120 тыс. рублей. Аналогично поступаем с группами других клеток, сумма номеров которых одинакова (то есть соединѐнными линиями) – на каждой линии выбираем максимальное значение и обводим его в кружок. Результаты заносим в первые две строки таблицы 3. В первой строке указываем суммарный инвестируемый капитал, под ним указывается способ его распределения между вторым и третьим предприятием (в виде суммы двух чисел, первое из которых соответствует вложению во второе предприятие, а второе – вложению в третье, то есть номера выбранных клеток). Во второй строке указываем соответствующую прибыль (число, обведенное в кружок в таблице 2). Обратим внимание на то, что существуют различные варианты размещения капиталов, приносящие равные результаты. Например, при размещении 500 тыс. рублей (линия, начинающаяся от клетки и заканчивающаяся клеткой (500, 0) в таблице 2), наибольшее значение прибыли (190 тыс. руб.) достигается сразу в трѐх клетках (500,0), (400, 100) и (200, 300). В таком случае мы можем выбрать любую из этих трѐх клеток (либо лицо,

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]