logo
Методичка по исследованию операций

2.10. Решение задачи распределения ресурсов индексным методом

Введем обозначения:

S – начальная сумма ресурса (средств), выраженная в некотором масштабе;

n – число предприятий;

xi – средства, выделяемые i-му предприятию;

φi(xi) – функции дохода (издержек) для i-го предприятия (задано!).

Условие:

Пример (исходные данные).

Пусть S = 3 (в масштабе), n = 4.

xi

φ1(x1)

φ2(x2)

φ3(x3)

φ4(x4)

0

1

2

3

5

8

10

11

3

6

9

11

2

3

4

7

2

5

6

8

Задача. При заданном условии найти такое распределение заданной суммы средств S по n предприятиям (xi = ?), при котором

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

Пусть один шаг есть выделение средств очередному предприятию. При n = 4 имеем 4 шага. Тем самым определены уровни Еi для последовательного графа: Е0, Е1,…, Е4.

Для каждого шага введем параметр состояния Si и для каждого значения переменной Si отведем вершину аiEi последовательного графа. Таким образом, каждая вершина графа аi получает имя виде значения переменной Si на уровне Ei. Определим переменную Si.

I определение переменной состояния. Пусть Si есть сумма средств, выделенных первым i предприятиям:

Si = 0, 1,…, S; i = 0, 1, 2,…, n.

Соответственно S0 = 0, Sn = S. Тем самым определены начальная и конечная вершины графа: a0 = S0, an = Sn. Для нашего примера a0 = 0, a4 = 3.

Определим состав уровня Е1. Ясно, что первому предприятию можно выдать любую сумму средств от нуля до S, т.е. в примере х1 = 0, 1, 2, 3. А значит, переменная состояния S1 принимает те же значения, так как S1 = х1. Следовательно, a1 = S1 = 0, 1, 2, 3, т.е. Е1 = {0, 1, 2, 3}. При этом определяются и веса дуг: v(a0, a1) = x1(a0, a1). В нашем примере имеем:

v(0, 0) = 0,

v(0, 1) = 1,

v(0, 2) = 2,

v(0, 3) = 3.

Обратимся к построению уровня Е2. Ясно, что второму предприятию можно выделить средств не более остатка после выделения первому. А так как S2 = x1 + x2 = S1 + x2 и, как и S1, не превышает S, то для данного примера имеем:

– если S1 = 0, то x2 = 0, 1, 2, 3; S2 = 0, 1, 2, 3;

– если S1 = 1, то x2 = 0, 1, 2; S2 = 1, 2, 3;

– если S1 = 2, то x2 = 0, 1; S2 = 2, 3;

– если S1 = 3, то x2 = 0; S2 = 3.

При этом S2, как и S1, пробегает те же значения, т.е. S2 = 0, 1, 2, 3. А значит, и а2 = 0, 1, 2, 3 на уровне Е2, причем:

– для а2 = 0 имеем одну входящую дугу;

– для а2 = 1 имеем две входящих дуги;

– для а2 = 2 имеем три входящих дуги;

– для а2 = 3 имеем четыре входящих дуги.

Все последующие уровни Еi, 2 < i < n, строятся совершенно аналогично, так как Si = Si – 1 + xiS. Исключение составляет последний шаг, т.е. переход к En, где по условию Sn = S в точности.

Построенный граф, в котором ai = Si, очевидно, является последовательным и выглядит следующим образом (рис. 2.6).

На таком графе еще нет задачи, так как для любого пути S(a0, an) его длина равна

по условию.

Рис. 2.6

Задача возникает, когда дугам в соответствии с хi приписывается функция дохода (или издержек) φi(xi) в качестве веса. Возникающую при этом суммарную величину

на каждом i-м шаге и следует оптимизировать. Как и Si, функция F(Si) приписывается вершинам в качестве веса. В таком случае F(Si) = = I(ai), так как ai = Si на графе.

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

F(Si) = F(Si – 1) + φi(xi),

F(S0) ≡ 0,

оpt Fц = F(Sn)

при прямом ходе.

При обратном ходе, как и в задаче маршрутизации, будем иметь:

F(Si) = F(Si + 1) + φi + 1(xi + 1),

F(Sn) ≡ 0,

оpt Fц = F(S0).

Замечание. Чтобы помнить, какие величины фигурируют на графе, полезно иметь в виду табличку:

Дуги

Вершины

1)

xi

2)

φi(xi)

II определение переменной состояния.

Пусть Si – есть остаток средств после выделения первым i предприятиям:

Si = S, S – 1,…, 0.

Для построения графа задачи здесь применяется та же схема рассуждений, но с единственной поправкой: Si(II) = SSi(I). Эта по-

правка приводит к тому, что

S0 = S – 0 ≡ S,

S1 = Sx1,

S2 = S – (x1 + x2),

………………

Sn = SS ≡ 0.

Все остальные переменные сохраняют прежний смысл.

Читателю полезно провести это построение самостоятельно, сделав замену Si(II) = SSi (I). В результате также получим последовательный граф, но симметричный первому (рис. 2.7).

И последнее. Решая исходную задачу как задачу маршрутизации на последовательном графе, независимо от определения переменной состояния Si получим opt последовательность вершин a0 a1an (или an an–1 ao), соответствующую последовательности состояний S0 S1 Sn (или Sn Sn–1 S0). Однако это еще не решение задачи распределения ресурсов, так как требуется от переменных состояния Si перейти к переменным управления хi. Сделать это можно, используя определение Si. Действительно, независимо от хода для I определения переменной Si будем иметь: xi = Si Si – 1, так как Si монотонно не убывающая величина. При II определении Si – монотонно не возрастающая величина. Поэтому xi = Si – 1 Si.

Рис. 2.7

Таким образом, в любом случае xi = |Si S 1| независимо ни от хода, ни от определения переменной состояния Si. В результате получим последовательность переменных х1 х2 хn, при которой целевая функция Fц = opt. Задача решена.

Тема 3

МЕТОД ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ (ДП)

3.1. Общее замечание

Принципиально постановки всех задач, решаемых методом ДП, отличаются:

  1. показателем эффективности, который определяет критерий эффективности (целевая функция);

  2. видом уравнения состояний.

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

3.2. Общая постановка задачи ДП

Пусть So – начальное состояние системы, Sn – конечное состояние системы, U (иногда X) – допустимое управление системой (набор допустимых показателей), Z = Ф(SoU) или Z = Ф(Sn, U) – показатель эффективности (целевая функция).

Требуется определить допустимое управление системой U, переводящее систему из начального состояния S0 в конечное Sn, при котором Z достигает оптимума (максимума или минимума).

3.3. Построение модели ДП (для обратного хода)

  1. Выбирают способ деления процесса на шаги.

  2. Вводят в рассмотрение переменные состояния Sk и переменные управления uk на каждом шаге процесса, 1  kn.

  3. Записывают уравнение состояния

Sk = F (Sk–1, uk). (тип 1)

4. Вводят в рассмотрение заданный показатель эффективности на k-м шаге fk (Sk–1, uk) и записывают суммарный показатель (целевую функцию)

(тип 2)

  1. Вводят в рассмотрение условные оптимумы показателя эффективности Zk(Sk–1) от k-го шага (включительно) до конца процесса и условные оптимальные управления на k-ом шаге uk (Sk–1).

  2. Из ограничений задачи определяют для каждого шага множества Dk допустимых управлений на этом шаге.

  3. Записывают основные для вычислительной схемы ДП функциональные уравнения Беллмана:

(тип 3)

так как еслиилиесли

(тип 4)

Таким образом, в результате для конкретной задачи получаем модель ДП в виде системы (n + 2) уравнений, в которой различаются 4 типа уравнений:

  1. уравнение состояний Sk =…,

  2. общий суммарный показатель эффективности: Z =…,

  3. условный оптимум показателя эффективности для исходного шага Zn (или Z0) =…,

  4. условный оптимум суммарного показателя эффективности для каждого k-го шага Zk =…

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4