САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
КАФЕДРА МАТЕМАТИЧЕСКОЙ ТЕОРИИ ИГР И СТАТИСТИЧЕСКИХ РЕШЕНИЙ
Лонягина Юлия Евгеньевна
Выпускная квалификационная работа бакалавра
Модели координации многоуровневых
распределительных цепей поставок
Направление 010400
Прикладная математика и информатика
Научный руководитель,
кандидат физ.-мат. наук,
доцент
Зенкевич Н. А.
Санкт-Петербург
2016
Содержание
Введение......................................................................................................... 3
Постановка задачи ........................................................................................ 6
Обзор литературы ....................................................................................... 15
Глава 1. Теоретико-игровая модель многоуровневой
децентрализованной цепи поставок ......................................................... 17
1.1.
Формализация децентрализованной многоуровневой
цепи поставок ......................................................................... 17
1.2.
Решение децентрализованной двухуровневой игры ........... 19
1.3.
Равновесие по Нэшу в многоуровневой
децентрализованной игре....................................................... 25
Глава 2. Модели координации централизованной многоуровневой
цепи поставок ............................................................................................. 31
2.1. Формализация первой модели координации
централизованной многоуровневой цепи поставок ............ 31
2.2. Теоретический анализ нелинейной задачи оптимизации ... 33
2.3.
Сравнение решений в централизованной и
децентрализованной моделях многоуровневых цепей поставок на
основе численного моделирования ................................................. 36
2.4.
Формализация модели координации централизованной
многоуровневой цепи поставок на основе арбитражного
решения Нэша ................................................................................... 42
2.5.
Сравнение взвешенного арбитражного решения Нэша с
ранее рассмотренными решениями на основе численного
моделирования .................................................................................. 45
Выводы ......................................................................................................... 48
Список литературы ..................................................................................... 50
Приложения ................................................................................................. 51
Введение
Современный
мир
прочно
связан
с
торговлей
и
бизнесом,
неотъемлемой частью которых являются цепи поставок. Необходимость
фирм после производства реализовывать свой товар вынуждает их
налаживать операционную деятельность, организовывая системы товарных
потоков и торговых связей. И с каждым годом под действием прогресса и
глобализации растет не только количество этих систем, но и сложность, а
именно структура и масштабность. Также возникают задачи оптимизации
уже организованных цепей поставок, однако важность решения таких
проблем иногда бывает недооцененной. В результате, плохо организованная
операционная деятельность приводит к убыткам или нереализованной
прибыли. Отсюда следует, что не только широкая распространенность цепей
поставок, но и важность решения задач их оптимизации по критерию
прибыли делает проблему координации участников цепей поставок как
нельзя актуальной. В виду этого, целью данной работы является разработка
способа координации участников с целью оптимизации цепи поставок по
критерию прибыли.
В данной работе исследуется один из наиболее универсальных и часто
встречающихся видов цепей поставок – многоуровневые цепи поставок с
древовидной распределительной структурой (пример такой цепи изображен
на Рис. 1). Задача координации таких цепей не является хорошо изученной,
т.к. моделирование цепей поставок именно с такой структурой началось
относительно недавно.
Нами будет рассмотрено два подхода к координации участников,
основанных
на
децентрализованной
моделях
их
поведения
и
взаимодействия
–
и централизованной. Для каждого подхода мы
описываем процесс принятия решения, на основании этого формулируем
критерий
оптимальности
и
приводим
способ
построения
решения,
удовлетворяющего этому критерию.
3
Рис. 1. Пример многоуровневой цепи поставок с древовидной дистрибутивной
структурой
В
разделе
«Постановка
задачи»
данной
работы
произведена
математическая формализация цепей поставок, сформулированы критерии
оптимальности решения в рамках каждой из моделей организации поведения
участников в цепи поставок.
В Главе 1 рассмотрена децентрализованная модель многоуровневой
цепи поставок с древовидной структурой и приведен алгоритм нахождения
решения задачи координации данного вида цепей.
Вторая
глава
данной
работы
посвящена
задаче
координации
централизованной модели цепей поставок с рассматриваемой структурой:
здесь исследуется вопрос существования решения задачи нелинейной
условной оптимизации, к которой сводится задача координации таких цепей,
также обосновывается причина рассмотрения альтернативной формулировки
оптимизационной задачи, и далее на конкретном примере производится
сравнение результатов всех предлагаемых решений.
4
Итоги проделанной работы резюмируются в разделе «Выводы», а
также в разделе «Приложения» приводится код программы, написанной в
среде MATLAB, которая реализует алгоритмы нахождения решения задачи
координации обоих моделей цепи поставок.
5
Постановка задачи
Пусть множество 𝑋 – заданное конечное множество.
Определение 1. Правило 𝑓, ставящее в соответствие каждому элементу
𝑥 ∈ 𝑋 элемент 𝑓(𝑥) ∈ 𝑋, называется однозначным отображением 𝑋 в 𝑋 или
функцией, определенной на 𝑋 и принимающей значения в 𝑋.
Определение 2. Многозначным отображением 𝐹 множества 𝑋 в 𝑋
будем называть правило, ставящее в соответствие каждому элементу 𝑥 ∈ 𝑋
некоторое подмножество 𝐹𝑥 ⊂ 𝑋, при этом 𝐹(∅) = ∅. Далее под термином
«отображение» из 𝑋 в 𝑋 будем понимать «многозначное отображение» [1].
Пусть 𝐹 – отображение 𝑋 в 𝑋, и 𝐴 ⊂ 𝑋.
Определение 3. Под образом множества 𝐴 ⊂ 𝑋 будем понимать
множество 𝐹(𝐴) ≜ ⋃𝑥∈𝐴 𝐹𝑥 .
Можно убедиться, что если 𝐴𝑖 ⊂ 𝑋, 𝑖 = 1, … , 𝑛, то
𝑛
𝑛
𝑛
𝐹 (⋃ 𝐴𝑖 ) = ⋃ 𝐹(𝐴𝑖 ) ,
𝑖=1
𝑖=1
𝑛
𝐹 (⋂ 𝐴𝑖 ) ⊂ ⋂ 𝐹(𝐴𝑖 ).
𝑖=1
𝑖=1
Определим отображения 𝐹1 , 𝐹 2 , … , 𝐹 𝑘 , … итеративным образом:
𝐹𝑥1 = 𝐹𝑥 , 𝐹𝑥2 ≜ 𝐹(𝐹𝑥 ), 𝐹𝑥3 ≜ 𝐹(𝐹𝑥2 ), … , 𝐹𝑥𝑘 ≜ 𝐹(𝐹𝑥𝑘−1 ), …
Определение 4. Отображение 𝐹̂ множества 𝑋 в 𝑋 называется
транзитивным замыканием отображения 𝐹, если
𝐹̂𝑥 ≜ {𝑥} ∪ 𝐹𝑥1 ∪ 𝐹𝑥2 ∪ … ∪ 𝐹𝑥𝑘 … .
Отображение 𝐹 −1 , обратное отображению 𝐹, определяется как
𝐹𝑦−1 ≜ {𝑥|𝑦 ∈ 𝐹𝑥 }.
Аналогично отображению 𝐹 𝑘 определяется отображение (𝐹 −1 )𝑘 :
(𝐹 −1 )2𝑦 = 𝐹 −1 ((𝐹 −1 )𝑦 ),
(𝐹 −1 )3𝑦 = 𝐹 −1 ((𝐹 −1 )2𝑦 ), … , (𝐹 −1 )𝑘𝑦 = 𝐹 −1 ((𝐹 −1 )𝑘−1
𝑦 ).
Если 𝐵 ⊂ 𝑋, то полагаем 𝐹 −1 (𝐵) ≜ {𝑥|𝐹𝑥 ∩ 𝐵 ≠ ∅}.
6
Определение 5. Пара (𝑋, 𝐹) называется графом, если 𝑋 – некоторое
конечное множество, а 𝐹 – отображение 𝑋 в 𝑋. Граф (𝑋, 𝐹) также будем
обозначать символом 𝐺 [1].
В дальнейшем элементы множества 𝑋 будем изображать кругами на
плоскости, а пары кругов 𝑥 и 𝑦, для которых 𝑦 ∈ 𝐹𝑥 , соединять отрезком со
стрелкой, направленным от 𝑥 к 𝑦.
Тогда каждый элемент множества 𝑋 будем называть вершиной или
узлом графа, а пару элементов (𝑥, 𝑦), в которой 𝑦 ∈ 𝐹𝑥 – дугой графа. Для
дуги 𝑝 = (𝑥, 𝑦) вершины 𝑥 и 𝑦 являются граничными вершинами дуги,
причем 𝑥 – начало, а 𝑦 – конец дуги. Две дуги 𝑝 и 𝑞 называются смежными,
если они различны и имеют общий граничный узел. Множество всех дуг
графа будем обозначать 𝑃.
Ребром графа называется множество из двух элементов 𝑥, 𝑦 ∈ 𝑋, для
которых или (𝑥, 𝑦) ∈ 𝑃 или (𝑦, 𝑥) ∈ 𝑃. В отличие от дуги в ребре ориентация
роли не играет. Под цепью будем понимать последовательность ребер
(𝑞1 , 𝑞2 , … ), в которой у каждого ребра 𝑞𝑘 одна из граничных вершин является
также граничной для 𝑞𝑘−1 , а другая – граничной для 𝑞𝑘+1 .
Цикл – это конечная цепь, начинающаяся в некоторой вершине и
оканчивающаяся в той же вершине. Граф будем называть связным, если
любые две его вершины можно соединить цепью.
Определение 6. Дерево или древовидный граф 𝐺 = (𝑋, 𝐹) – это
конечный связный граф без циклов, имеющий не менее двух вершин, в
котором существует единственная вершина 𝑥 1 , такая что 𝐹̂𝑥 1 = 𝑋. Вершина
𝑥 1 называется начальной вершиной графа 𝐺, или также будем называть её
корневой [1].
Далее мы будем рассматривать графы, имеющие только древовидную
структуру. Примером дерева может быть граф, изображенный на Рис. 2.
7
Рис. 2. Дерево или древовидный граф
На множестве вершин 𝑋 дерева 𝐺 = (𝑋, 𝐹) зададим множества
𝑋1 , … , 𝑋𝑙 , 𝑋𝑖 ⊂ 𝑋 следующим образом:
𝑋1 = {𝑥 1 }, 𝑋𝑙 = {𝑥 ∈ 𝑋| 𝐹𝑥 = ∅},
𝑋𝑘+1 = (𝐹𝑥 \𝑋𝑙 ) для 𝑥 ∈ 𝑋𝑘 , 𝑘 = ̅̅̅̅̅̅̅̅̅
1, 𝑙 − 2, если (𝐹𝑥 \𝑋𝑙 ) ≠ ∅.
(1)
Утверждение. Введенные множества задают разбиение множества 𝑋,
т.е. ⋃𝑙𝑖=1 𝑋𝑖 = 𝑋, 𝑋𝑒 ∩ 𝑋𝑟 = ∅, 𝑒 ≠ 𝑟.
Доказательство. Покажем, что множества 𝑋1 , … , 𝑋𝑙 попарно не
пересекаются. По определению древовидного графа множество 𝑋 состоит не
менее чем из двух вершин, следовательно, существует вершина 𝑥 ∈ 𝑋, 𝑥 ≠ 𝑥 1
такая, что 𝐹(𝑥 1 ) = 𝑥. Тогда 𝐹𝑥 1 ≠ ∅, и, значит, 𝑋1 ∩ 𝑋𝑙 = ∅. Из построения
множеств 𝑋𝑘 , 𝑘 = ̅̅̅̅̅̅̅̅̅
2, 𝑙 − 1 следует, что 𝑋𝑘 ∩ 𝑋𝑙 = ∅.
По определению граф 𝐺 не содержит циклов и имеет единственную
вершину 𝑥 1 , из которой существует цепь в любую другую вершину графа.
Тогда для любых 𝑥, 𝑦 ∈ 𝑋\𝑋𝑙 следует, что 𝐹𝑥 ∩ 𝐹𝑦 = ∅. От противного, пусть
𝐹𝑥 ∩ 𝐹𝑦 ≠ ∅, пускай для определенности 𝐹𝑥 ∩ 𝐹𝑦 = {𝑧 ∈ 𝑋}, тогда мы имеем
цикл:
𝑥1 → ⋯ → 𝑥 → 𝑧 → 𝑦 → ⋯ → 𝑥1,
8
что противоречит тому, что 𝐺 – дерево. Тогда, если множества 𝐹𝑥 и 𝐹𝑦 не
пересекаются ни для какой пары 𝑥, 𝑦 ∈ 𝑋\𝑋𝑙 , то и их подмножества
(𝐹𝑥 \𝑋𝑙 ) ⊂ 𝐹𝑥 и (𝐹𝑦 \𝑋𝑙 ) ⊂ 𝐹𝑦
не пересекаются для любой пары 𝑥, 𝑦 ∈ 𝑋\𝑋𝑙 . Значит,
𝑋𝑒 ∩ 𝑋𝑟 = ∅
𝑒≠𝑟
.
𝑒, 𝑟 = ̅̅̅̅̅̅̅̅̅
2, 𝑙 − 1
В виду того, что 𝑥 1 – корневая вершина, то 𝑥 1 не принадлежит ни одному 𝐹𝑥
для любого 𝑥 ∈ 𝑋. Следовательно, 𝑋1 ∩ 𝑋𝑖 = ∅, 𝑖 = ̅̅̅̅
2, 𝑙 . Таким образом,
утверждение о попарном непересечении множеств доказано.
Рассмотрим множество
𝑙
𝑙−1
𝑙−1
𝑙−1
⋃ 𝑋𝑖 = (⋃(𝐹(𝑋𝑖−1 )\𝑋𝑙 )) ⋃ 𝑋𝑙 = (⋃ 𝐹(𝑋𝑖−1 )) ⋃ (𝑋𝑙 \ ⋃ 𝐹(𝑋𝑖−1 )).
𝑖=2
𝑖=2
𝑖=2
𝑖=2
Заметим, что
𝑙−1
𝑋𝑙 \ ⋃ 𝐹(𝑋𝑖−1 ) = 𝐹(𝑋𝑙−1 ),
𝑖=2
т.к. 𝐺 – связный граф. Тогда
𝑙−1
𝑙
(⋃ 𝐹(𝑋𝑖−1 )) ⋃ 𝑋𝑙 = ⋃ 𝐹(𝑋𝑖−1 ) = 𝐹𝑥 1 ∪ 𝐹𝑥21 ∪ … ∪ 𝐹𝑥𝑙−1
1 .
𝑖=2
𝑖=2
Следовательно,
𝑙
= 𝐹̂𝑥 1 = 𝑋.
⋃ 𝑋𝑖 = {𝑥 1 } ∪ 𝐹𝑥 1 ∪ 𝐹𝑥21 ∪ … ∪ 𝐹𝑥𝑙−1
1
𝑖=1
Утверждение доказано.
Определение 7. Подмножество узлов 𝑋𝑖 ⊂ 𝑋, 𝑖 = 1, … , 𝑙 будем называть
множеством вершин (узлов) уровня 𝑖. Узлы из множества 𝑋𝑙 также будем
называть концевыми или конечными.
Обозначать узлы 𝑥 из множества 𝑋 будем как 𝑥𝑗𝑖 , где верхний индекс
соответствует номеру уровня 𝑋𝑖 , на котором расположена эта вершина, а
9
нижний индекс – порядковому номеру этой вершины во множестве 𝑋𝑖 . Для
единообразия корневой узел 𝑥 1 будем обозначать 𝑥11 .
Например, для графа, изображенного на Рис. 2, 𝑙 = 4, и множество
узлов 𝑋 имеет следующее разбиение на уровни:
𝑋1 = {𝑥 1 = 𝑥11 }; 𝑋2 = {𝑥12 , 𝑥22 }; 𝑋3 = {𝑥13 , 𝑥23 }; 𝑋4 = {𝑥14 , 𝑥24 , 𝑥34 , 𝑥44 , 𝑥54 , 𝑥64 , 𝑥74 }.
Также под 𝑚𝑖 будем понимать количество узлов уровня 𝑖, т.е. 𝑚𝑖 = |𝑋𝑖 |, где
|𝑋𝑖 | – мощность множества 𝑋𝑖
Определение 8. Будем говорить, что разбиение 𝑋1 , … , 𝑋𝑙 множества
вершин 𝑋, определенное по правилу (1), задает цепь поставок с древовидной
распределительной (дистрибутивной) структурой.
Для наглядности узлы цепи поставок одного уровня графически будем
изображать кругами, лежащими на одной горизонтальной прямой, а уровни
располагать последовательно один под другим (см. Рис. 3).
Рис. 3. Пример изображения древовидной цепи поставок
Определение 9. Сектором вершины 𝑥𝑗𝑖 ∈ 𝑋\𝑋𝑙
будем называть
множество 𝐹𝑥 𝑖 .
𝑗
10
Множество секторов вместе с корневой вершиной задают разбиение на
множестве вершин 𝑋, т.к. из доказательства утверждения следует, что
𝐹𝑥 𝑖 ∩ 𝐹𝑥ℎ𝑟 = ∅,
𝑗
для любой пары вершин 𝑥𝑗𝑖 , 𝑥ℎ𝑟 ∈ 𝑋, где или 𝑖 ≠ 𝑟, или 𝑗 ≠ ℎ; а из связности
графа 𝐺 = (𝑋, 𝐹) вытекает, что
𝑙
𝑚𝑖
(⋃ ⋃ 𝐹𝑥 𝑖 ) ⋃ 𝑋1 = 𝑋.
𝑗
𝑖=1 𝑗=1
Так, например, в цепи поставок, изображенной на Рис. 3, сектором
корневой вершины 𝑥11 является множество {𝑥12 , 𝑥34 , 𝑥22 }, сектором вершины
𝑥12 – множество {𝑥13 , 𝑥24 }, вершины 𝑥22 – множество {𝑥23 , 𝑥74 }, вершины 𝑥13 –
множество {𝑥14 }, а вершины 𝑥23 – множество {𝑥44 , 𝑥54 , 𝑥64 }.
Под множеством 𝑆𝑗𝑖 будем понимать множество пар индексов тех
узлов, которые входят в сектор узла 𝑥𝑗𝑖 ∈ 𝑋\𝑋𝑙 , т.е. 𝑆𝑗𝑖 = {(𝑘, ℎ) | 𝑥ℎ𝑘 ∈ 𝐹𝑥 𝑖 }.
𝑗
Заметим, что по построению 𝑆𝑗𝑖 ≠ ∅.
Пусть каждая вершина 𝑥𝑗𝑖 , 𝑖 = ̅̅̅̅
1, 𝑙 , 𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 цепи поставок состоит из
𝑛𝑖𝑗
𝑖
конечной совокупности элементов {𝑥𝑗𝑘
}
𝑘=1
, для которой также определен
𝑛𝑖𝑗
массив {𝑣𝑖𝑗𝑘 }𝑘=1 , ∀𝑘: 𝑣𝑖𝑗𝑘 ≥ 0, где 𝑛𝑖𝑗 – некоторое натуральное число, не
меньшее единицы. Эта совокупность элементов содержательно является
группой конкурирующих фирм, производящих и потребляющих однородный
продукт, а также имеющих разные затраты 𝑣𝑖𝑗𝑘 на производство (мощности
𝑖
производства считаются неограниченными). Для каждой фирмы 𝑥𝑗𝑘
∈ 𝑥𝑗𝑖
введем переменную 𝑞𝑖𝑗𝑘 ≥ 0, характеризующую переменный объем выпуска
этой фирмы, а суммарный объем однородного продукта, произведенный
𝑛𝑖𝑗
𝑖
всеми фирмами {𝑥𝑗𝑘
}
𝑘=1
𝑛
𝑖𝑗
из узла 𝑥𝑗𝑖 , обозначим за 𝑄𝑖𝑗 = ∑𝑘=1
𝑞𝑖𝑗𝑘 . Тогда, для
сектора каждого узла 𝑥𝑗𝑖 ∈ 𝑋\𝑋𝑙 цепи поставок, считается выполненным
условие
11
𝑛𝑖𝑗
𝑛𝑟ℎ
𝑄𝑖𝑗 = ∑ 𝑞𝑖𝑗𝑘 =
∑
𝑘=1
𝑟,ℎ:(𝑟,ℎ)∈𝑆𝑗𝑖
𝑄𝑟ℎ =
∑
∑ 𝑞𝑟ℎ𝑡 ,
(2)
𝑟,ℎ:(𝑟,ℎ)∈𝑆𝑗𝑖 𝑡=1
означающее, что в цепи поставок нет дефицита и излишков производства.
Для каждого узла 𝑥𝑗𝑖 ∈ 𝑋 введем переменную 𝑝𝑖𝑗 , эквивалентную по
𝑛𝑖𝑗
𝑖
смыслу цене, по которой фирмы {𝑥𝑗𝑘
}
𝑘=1
из узла 𝑥𝑗𝑖 продают единицу
производимого товара. Считается, что для каждой из концевых вершин
𝑥𝑗𝑙 ∈ 𝑋𝑙 задана линейная функция вида
𝑝𝑙𝑗 = 𝑎𝑙𝑗 − 𝑏𝑙𝑗 𝑄𝑙𝑗 ,
(3)
где 𝑎𝑙𝑗 > 0, 𝑏𝑙𝑗 > 0. Фактически это означает, что концевые вершины
реализуют свой продукт на неконкурирующих потребительский рынках,
функционирующих
по
модели
Курно
с
линейной
зависимостью,
выражающейся формулой (3).
Определение 10. Набор значений ({𝑞𝑖𝑗𝑘 }𝑖,𝑗,𝑘 , {𝑝𝑖𝑗 }𝑖,𝑗 ) определяет
товарный поток 𝑑 в цепи поставок.
Определение 11. Поток 𝑑 будем называть допустимым, если
𝑝𝑙𝑗 > 0, 𝑄𝑙𝑗 > 0,
𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑙 .
Пусть множество 𝐷 – множество всех допустимых потоков в цепи
𝑛𝑖𝑗
𝑖
поставок. Для каждой фирмы {𝑥𝑗𝑘
}
𝑘=1
∈ 𝑥𝑗𝑖 для 𝑖 = ̅̅̅̅
1, 𝑙 , 𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 определим
функцию 𝜋𝑖𝑗𝑘 – функцию прибыли, заданную на множестве 𝐷 всех
допустимых товарных потоков, следующим образом:
𝑞11𝑘 (𝑝11 − 𝑣11𝑘 ), если 𝑖 = 1;
𝜋𝑖𝑗𝑘 (𝑑) = { 𝑞𝑙𝑗𝑘 (𝑎𝑙𝑗 − 𝑏𝑙𝑗 𝑄𝑙𝑗 − 𝑝𝑟ℎ − 𝑣𝑙𝑗𝑘 ), если 𝑖 = 𝑙;
𝑞𝑖𝑗𝑘 (𝑝𝑖𝑗 − 𝑝𝑟ℎ − 𝑣𝑖𝑗𝑘 ), во всех остальных случаях;
где 𝑝𝑟ℎ : 𝑥𝑗𝑖 ∈ 𝑆ℎ𝑟 .
Упорядочим множество вершин 𝑋 цепи поставок: на первом месте
корневая вершина, затем узлы второго уровня по возрастанию порядковых
номеров, далее – третьего, четвертого и так далее до конечного
12
𝑙
включительно, т.е. мы получаем упорядоченный набор {𝑥11 , 𝑥12 , 𝑥22 , … , 𝑥𝑚
}.
𝑙
Это упорядоченное множество всех узлов (обозначим его 𝑁) цепи поставок
будем считать множеством игроков, причем предполагаются возможными
два способа организации их взаимодействия – децентрализованный и
централизованный. В первом случае мы имеем дело с ситуацией, когда
каждый игрок действует независимо от других в угоду только собственным
интересам. Во втором же случае все игроки образуют коалицию и действуют
централизованно с целью достижения общей цели.
Множеством 𝑈𝑖𝑗 стратегий игрока 𝑥𝑗𝑖 будем считать множество
всевозможных векторов 𝑢𝑖𝑗 ∈ 𝐷, где 𝑢𝑖𝑗 составлен из упорядоченного набора
𝑛𝑖𝑗
𝑖
переменных, определенных для всех фирм {𝑥𝑗𝑘
}
𝑘=1
∈ 𝑥𝑗𝑖 и лежащих в
пределах области, задающей допустимый поток, т.е.
1, 𝑙 − 1, 𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 ;
{𝑢𝑖𝑗 = (𝑞𝑖𝑗1 , … , 𝑞𝑖𝑗𝑛𝑖𝑗 , 𝑝𝑖𝑗 ) ∈ 𝐷} , для 𝑥𝑗𝑖 ∈ 𝑁, 𝑖 = ̅̅̅̅̅̅̅̅̅
𝑈𝑖𝑗 = [
1, 𝑚𝑙 .
{𝑢𝑙𝑗 = (𝑞𝑙𝑗1 , … , 𝑞𝑙𝑗𝑛𝑙𝑗 ) ∈ 𝐷} , для 𝑥𝑗𝑙 ∈ 𝑁, 𝑗 = ̅̅̅̅̅̅
(4)
Пусть задана децентрализованная модель многоуровневой цепи
поставок с древовидной дистрибутивной структурой.
Определение 12. Допустимый поток 𝑑 ∗ будем называть оптимальным,
если выполняется
𝜋𝑖𝑗𝑘 (𝑑∗ ) ≥ 𝜋𝑖𝑗𝑘 (𝑑 𝑖𝑗 ),
∀𝑖 = ̅̅̅̅
1, 𝑙 , 𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 , 𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑖𝑗 ,
(5)
где 𝑑 𝑖𝑗 – это поток, порожденный отклонением стратегии 𝑢𝑖𝑗 игрока 𝑥𝑗𝑖 .
Поставим задачей найти оптимальный поток 𝑑 ∗ в цепи поставок, а саму
задачу будем называть задачей координации децентрализованной модели
многоуровневой цепи поставок с древовидной дистрибутивной структурой и
линейными функциями спроса.
Пусть теперь задана централизованная модель многоуровневой цепи
поставок с древовидной дистрибутивной структурой. Рассмотрим первый
подход к формулировке задачи координации этой цепи. Целью коалиции из
13
всех игроков будем считать максимизацию функции 𝛱(𝑑) общей прибыли
цепи поставок, определяемую как сумму функций прибыли каждого игрока:
𝑚𝑖 𝑛𝑖𝑗
𝑙
𝛱(𝑑) = ∑ ∑ ∑ 𝜋𝑖𝑗𝑘 (𝑑),
𝑖=1 𝑗=1 𝑘=1
при заданных линейных функциях спроса. Тогда задачей координации
многоуровневой
централизованной
цепи
поставок
с
древовидной
дистрибутивной структурой и линейными функциям спроса является
нахождение такого допустимого потока 𝑑̂, для которого выполняется
𝑎𝑟𝑔𝑚𝑎𝑥 𝛱(𝑑) = 𝑑̂ .
(6)
𝑑∈𝐷
Рассмотрим теперь второй подход к формулировке задачи координации
централизованной цепи поставок.
Определение 13. Точкой «статус кво» будем называть упорядоченный
∗
∗
∗
∗
набор (𝜋111
, 𝜋112
, … , 𝜋𝑙𝑚
= 𝜋𝑖𝑗𝑘 (𝑑 ∗ ), 𝑑 ∗ - оптимальный поток из
), где 𝜋𝑖𝑗𝑘
𝑙 𝑛𝑙𝑚
𝑙
определения 12.
Построим функцию
𝑚𝑖
𝑙
𝑛𝑖𝑗
∗
𝛷(𝑑) = ∏ ∏ ∏(𝜋𝑖𝑗𝑘 (𝑑) − 𝜋𝑖𝑗𝑘
)
𝛼𝑖𝑗𝑘
,
𝑖=1 𝑗=1 𝑘=1
где 𝛼𝑖𝑗𝑘 – некоторые числа, такие, что 𝛼𝑖𝑗𝑘 > 0, ∀𝑖 = ̅̅̅̅
1, 𝑙 , 𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 , 𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑖𝑗 и
𝑙
𝑚𝑖 𝑛𝑖𝑗
∑ ∑ ∑ 𝛼𝑖𝑗𝑘 = 1.
𝑖=1 𝑗=1 𝑘=1
Тогда второй задачей координации многоуровневой централизованной
цепи поставок с древовидной дистрибутивной структурой и линейными
функциям спроса является нахождение такого допустимого потока 𝑑 𝑁 , для
которого выполняется
𝑎𝑟𝑔max 𝛷(𝑑) = 𝑑 𝑁 .
𝑑∈𝐷
(7)
14
Обзор литературы
Распространенность цепей поставок во многих сферах торговли и
бизнеса очень часто делает их предметом изучения многих экономистов,
менеджеров и ученых. Впервые рассматривать задачу управления цепочками
поставок как концепцию, заключающуюся в интегрированном подходе к
планированию и управлению информационными и товарными потоками, а
также услугами, предложил Кейт Оливер [8] в 1982 году и использовал такое
понятие как менеджмент цепей поставок. Концепция была быстро принята и
получила широкое распространение и развитие.
Первые работы в сфере менеджмента цепей поставок были направлены
на изучение децентрализованных моделей, т.е. цепей поставок, в которых все
участники действуют независимо. К таким работам, например, относятся
статьи Зисса С. [12], Викерса Д. [10] и Тьяги Р. К. [9].
Затем интересы ученых привлекла тема кооперации участников цепи и
управление
рисками.
Кахон
Г.П.
[3]
исследовал
вопрос
влияния
координирующих контрактов, а Кайя М. и Озер О. [7] – тему
контрактирования цепи для дележа рисков, прибыли и информации.
Параллельно с этой темой также продолжало развиваться направление,
связанное с изучением конкуренции в децентрализованной модели цепи
поставок. Так, например, Адида Е. и ДеМигель В. [2] занимались вопросами
конкуренции с уклоном в исследование влияния дифференциации товаров и
потребителей.
Моделирование
многоуровневых
цепей
поставок
началось
относительно недавно. Одними из первых, кто занялись вопросами
менеджмента таких цепочек, были Корбетт Ч. и Кармаркар У. [6], изучившие
конкуренцию в многоуровневых цепях с заданным спросом. Позже, Карр С. в
соавторстве с Кармаркаром У. [4] опубликовали работу, в которой была
исследована модель конкуренции в многоуровневой цепи поставок со
сборочной структурой. А одними из последних работ, посвященных теме
15
мульти-эшелонных цепей, являются исследование Чо С.-Х. [5], направленное
на изучение горизонтальной кооперации в многоуровневых цепях поставок, и
статья Жоу Д., Кармаркара У. и Джанга Б. [11], которая является обобщением
работы [4] на случай дистрибутивной структуры цепи поставок и изучает
вопросы
координации
децентрализованной
цепи,
влияния
изменения
концентрации участников и вида функции спроса.
Модель цепи поставок, рассматриваемая в рамках этой работы,
основана на модели Жоу Д., Кармаркара У. и Джанга Б. [11], которая
обобщена нами на случай произвольных издержек фирм.
16
Глава 1. Теоретико-игровая модель
многоуровневой децентрализованной цепи поставок
В
этой
главе
мы
будем
исследовать
задачу
координации
многоуровневой цепи поставок с древовидной дистрибутивной структурой и
линейными функциями спроса в рамках децентрализованной модели.
1.1. Формализация децентрализованной многоуровневой
цепи поставок
Для
начала
опишем
процедуру
принятия
решения
в
децентрализованной модели многоуровневой цепи поставок с древовидной
структурой:
Шаг 1. Корневой узел определяет цену, по которой он продает товар
узлам своего сектора.
Шаг 2. Вершины второго уровня цепи поставок, получая информацию
от корневого узла, назначают цену товара вершинам своего сектора. Далее
процедура повторяется до узлов предпоследнего уровня включительно.
Шаг 3. Концевые вершины на основе цен, полученных от своих
поставщиков, и функций спроса определяют объемы выпуска товара на
рынок.
Шаг 4. Происходит процедура распределения объемов между фирмами
в каждой из вершин конечного уровня.
Шаг 5. Информация об объемах поступает на все верх лежащие уровни
и внутри каждого узла происходит процедура распределения объемов между
фирмами.
Шаг 6. Подсчет прибыли каждого из участников цепи поставок.
Описанный
выше
процесс
принятия
решения
характеризует
децентрализованную многоуровневую древовидную цепь поставок как
конфликтно-управляемую систему с иерархической структурой, т.к. именно
такие системы определяются последовательностью уровней управления,
следующих друг за другом в порядке установленного приоритета.
17
Рассмотрим
иерархической
неантагонистическую
структурой,
многошаговую
представляющую
собой
игру
Г
с
совокупность
〈𝑌, {𝑈𝑖 }𝑖∈𝑌 , {𝐻𝑖 }𝑖∈𝑌 〉, где 𝑌 = {1,2, … , 𝑘} – множество игроков с разбиением на
подмножества по приоритету, 𝑈𝑖 – множество управляющих воздействий
игрока 𝑖 на подчиненных ему игроков, а 𝐻𝑖 – функция выигрыша игрока 𝑖,
определенная на декартовом произведении множеств 𝑈𝑖 управлений игроков
𝑈 = ∏𝑖∈𝑌 𝑈𝑖 . Вектор управлений 𝑢 = (𝑢1 , … , 𝑢𝑘 ) образует ситуацию в игре Г.
Определение 1.1.1. Ситуация 𝑢∗ называется ситуацией равновесия но
Нэшу в иерархической игре, если для любого игрока 𝑖 ∈ 𝑌 выполняется
𝐻𝑖 (𝑢∗ ||𝑢𝑖 ) ≤ 𝐻𝑖 (𝑢∗ ),
(1.1.1)
где за 𝐻𝑖 (𝑢∗ ||𝑢𝑖 ) обозначено следующее:
∗
∗
𝐻𝑖 (𝑢∗ ||𝑢𝑖 ) = 𝐻𝑖 (𝑢1∗ , … 𝑢𝑖−1
, 𝑢𝑖 , , 𝑢𝑖+1
, … 𝑢𝑘∗ ).
В качестве множества игроков 𝑌 возьмем упорядоченное множество
узлов 𝑁 цепи поставок, в качестве множеств управляющих воздействий –
множества 𝑈𝑖𝑗 стратегий игроков 𝑥𝑗𝑖 ∈ 𝑁. Каждому игроку 𝑥𝑗𝑖 ∈ 𝑁 поставим в
соответствие вектор 𝜋𝑗𝑖 = (𝜋𝑖𝑗1 , 𝜋𝑖𝑗2 , … , 𝜋𝑖𝑗𝑛𝑖𝑗 ). Затем в качестве функций
𝑙
выигрыша игроков 𝑁 = {𝑥11 , … , 𝑥𝑚
} возьмем соответствующим образом
𝑙
𝑙
упорядоченный набор из векторов 𝜋𝑗𝑖 : 𝜋 = {𝜋11 , … , 𝜋𝑚
}. Тогда совокупность
𝑙
〈𝑁, {𝑈𝑖𝑗 }
𝑖,𝑗: 𝑥𝑗𝑖 ∈𝑁
, {𝜋𝑗𝑖 }
𝑖,𝑗: 𝑥𝑗𝑖 ∈𝑁
〉
представляет
собой
неантагонистическую
многошаговую игру с иерархической структурой, поэтому из определения
1.1.1 и определения 12 следует, что задача координации децентрализованной
модели многоуровневой цепи поставок является процессом нахождения
равновесия по Нэшу в многоуровневой иерархической игре с полной
информацией.
18
1.2. Решение децентрализованной двухуровневой игры
Начнем рассмотрение задачи координации с частного случая, когда
𝑙 = 2, т.е. в цепи имеется всего 2 уровня, и она представляет собой сектор
(см. Рис. 1.2.1).
Рис. 1.2.1. Двухуровневая цепь поставок
Рассмотрим фирму 𝑘 в концевом узле 𝑥𝑗2 , где 1 ≤ 𝑗 ≤ 𝑚2 , 1 ≤ 𝑘 ≤ 𝑛2𝑗 .
Для неё выражение формулы прибыли имеет вид:
𝜋2𝑗𝑘 = 𝑞2𝑗𝑘 (𝑝2𝑗 − 𝑝11 − 𝑣2𝑗𝑘 )
(1.2.1)
Подставим в эту формулу выражение для 𝑝2𝑗 , исходя из функции
спроса (3), т.е.
𝑛2𝑗
𝑝2𝑗 = 𝑎2𝑗 − 𝑏2𝑗 𝑄2𝑗 ,
𝑄2𝑗 = ∑ 𝑞2𝑗𝑘 .
𝑘=1
Получаем следующее выражение:
𝑛2𝑗
𝜋2𝑗𝑘 = 𝑞2𝑗𝑘 (𝑎2𝑗 − 𝑏2𝑗 ∑ 𝑞2𝑗ℎ − 𝑝11 − 𝑣2𝑗𝑘 )
(1.2.2)
ℎ=1
Для обеспечения выполнения условия (5) применим к функции
прибыли (1.2.2) необходимое условие максимума
19
𝑛2𝑗
𝜕𝜋2𝑘𝑗
= (𝑎2𝑗 − 𝑏2𝑗 ∑ 𝑞2𝑗ℎ − 𝑝11 − 𝑣2𝑗𝑘 ) − 𝑏2𝑗 𝑞2𝑗𝑘 = 0,
𝜕𝑞2𝑗𝑘
ℎ=1
и выразим 𝑞2𝑗𝑘 :
𝑛2𝑗
𝑞2𝑗𝑘
1
1
=
(𝑎2𝑗 − 𝑝11 − 𝑣2𝑗𝑘 ) − ∑ 𝑞2𝑗ℎ .
2𝑏2𝑗
2
(1.2.3)
ℎ=1
ℎ≠𝑘
̅̅̅̅̅̅̅
Проделаем (1.2.1) – (1.2.3) для всех 𝑘 = 1,
𝑛2𝑗 и получим систему:
1
(𝑎 − 𝑝11 − 𝑣2𝑗1 )
𝑏2𝑗 2𝑗
𝑞2𝑗1
2 1 1
1
1
⋯
𝑞2𝑗2
(𝑎2𝑗 − 𝑝11 − 𝑣2𝑗2 )
1
2
1
1
∗
=
(
)
(
)
𝑏
2𝑗
⋮
⋮
⋱ ⋮
⋮
𝑞2𝑗𝑛2𝑗
1 1 1 ⋯ 2
1
(𝑎2𝑗 − 𝑝11 − 𝑣2𝑗𝑛2𝑗 )
(𝑏2𝑗
)
(1.2.4)
Матрица системы (1.2.4) является невырожденной, в силу линейной
независимости строк (столбцов), следовательно, эта система может быть
однозначно разрешена относительно всех 𝑞2𝑗𝑘 .
Найдем обратную матрицу для матрицы системы (1.2.4):
−1
2 1 1
1
⋯
(1 2⋮ 1 ⋱ 1⋮ )
1 1 1 ⋯ 2 [𝑛2𝑗×𝑛2𝑗]
𝑛2𝑗
−1
−1
⋯
𝑛2𝑗 + 1 𝑛2𝑗 + 1
𝑛2𝑗 + 1
=
;
⋮
⋱
⋮
−1
−1
𝑛2𝑗
⋯
𝑛2𝑗 + 1)
(𝑛2𝑗 + 1 𝑛2𝑗 + 1
и домножим слева обе части (1.2.4) на эту матрицу:
1
𝑞2𝑗1
𝑞2𝑗2
( ⋮ )=
𝑞2𝑗𝑛2𝑗
𝑛2𝑗
−1
𝑛2𝑗 +1
𝑛2𝑗 +1
−1
⋮
𝑛2𝑗 +1
(
−1
𝑛2𝑗 +1
⋯
⋱
⋯
−1
𝑏2𝑗
1
𝑛2𝑗 +1
⋮
∗
𝑏2𝑗
(𝑎2𝑗 − 𝑝11 − 𝑣2𝑗1 )
(𝑎2𝑗 − 𝑝11 − 𝑣2𝑗2 )
.
(1.2.5)
⋮
𝑛2𝑗 +1
)
(𝑎 − 𝑝11 − 𝑣2𝑗𝑛2𝑗 )
(𝑏2𝑗 2𝑗
)
𝑛2𝑗
1
Выполнив умножение в равенстве (1.2.5), мы
получим следующее
выражение для 𝑞2𝑗𝑘 :
20
𝑞2𝑗𝑘 =
𝑛2𝑗
1
𝑏2𝑗 (𝑛2𝑗 + 1)
1, 𝑛2𝑗 .
(𝑎2𝑗 − 𝑝11 − 𝑛2𝑗 𝑣2𝑗𝑘 + ∑ 𝑣2𝑗ℎ )) , 𝑘 = ̅̅̅̅̅̅̅
(1.2.6)
ℎ=1
ℎ≠𝑘
Найденное значение переменных действительно является точкой
максимума функций прибыли, т.к.:
𝜕 2 𝜋2𝑗𝑘
= −𝑏2𝑗 − 𝑏2𝑗 = −2𝑏2𝑗 < 0, в силу положительности 𝑏2𝑗 ;
𝜕 2 𝑞2𝑗𝑘
𝜕 2 𝜋2𝑗𝑘
= 0,
𝜕𝑞2𝑗𝑘 𝜕𝑞2𝑗𝑟
∀ 𝑟 ≠ 𝑘.
Мы можем найти выражение для 𝑄2𝑗 :
𝑛2𝑗
𝑛2𝑗
𝑄2𝑗 = ∑ 𝑞2𝑗𝑘 = ∑
𝑘=1
𝑘=1
𝑛2𝑗
1
𝑏2𝑗 (𝑛2𝑗 + 1)
(𝑎2𝑗 − 𝑝11 − 𝑛2𝑗 𝑣2𝑗𝑘 + ∑ 𝑣2𝑗ℎ ) =
ℎ=1
ℎ≠𝑘
(1.2.7)
𝑛2𝑗
=
𝑛2𝑗 (𝑎2𝑗 − 𝑝11 ) − ∑𝑘=1 𝑣2𝑗𝑘
𝑏2𝑗 (𝑛2𝑗 + 1)
𝑗 = ̅̅̅̅̅̅
1, 𝑚2 .
,
Рассмотрим теперь корневой сектор. Для фирмы 𝑘 из корневой
вершины 1.1 функция прибыли имеет следующий вид:
𝜋11𝑘 = 𝑞11𝑘 (𝑝11 − 𝑣11𝑘 ),
Условие
отсутствия
излишков
̅̅̅̅̅̅̅
𝑘 = 1,
𝑛11 .
и
(1.2.8)
дефицита
(2)
выражается
соотношением
𝑛11
𝑚2
𝑚2
𝑄11 = ∑ 𝑞11𝑘 = ∑ 𝑄2𝑗
𝑘=1
𝑗=1
𝑛
2𝑗
𝑛2𝑗 (𝑎2𝑗 − 𝑝11 ) − ∑ℎ=1
𝑣2𝑗ℎ
=∑
,
𝑏2𝑗 (𝑛2𝑗 + 1)
𝑗=1
из которого можно выразить значение 𝑝11 через переменные 𝑞11𝑘 :
𝑛11
− ∑𝑘=1
𝑞11𝑘
𝑝11 =
𝑛2𝑗
+
𝑛2𝑗 𝑎2𝑗 −∑ℎ=1 𝑣2𝑗ℎ
2
∑𝑚
(
)
𝑗=1
𝑏2𝑗 (𝑛2𝑗 +1)
𝑛2𝑗
2
∑𝑚
𝑗=1 (𝑏2𝑗 (𝑛2𝑗 +1))
.
(1.2.9)
Подставим полученное выражение (1.2.9) в формулу прибыли (1.2.8):
21
𝑛2𝑗
−𝑄11 +
𝜋11𝑘 = 𝑞11𝑘
𝑛2𝑗 𝑎2𝑗 −∑ℎ=1 𝑣2𝑗ℎ
2
∑𝑚
)
𝑗=1 (
𝑏2𝑗 (𝑛2𝑗 +1)
𝑛2𝑗
2
∑𝑚
𝑗=1 (𝑏2𝑗 (𝑛2𝑗 +1))
− 𝑣11𝑘 ,
̅̅̅̅̅̅̅
𝑘 = 1,
𝑛11 , (1.2.10)
(
)
а затем применим необходимое условие максимума к выражению для
функций прибыли (1.2.10):
𝑛2𝑗
−𝑄11 +
𝜕𝜋11𝑘
=
𝜕𝑞11𝑘
(
𝑛2𝑗 𝑎2𝑗 −∑ℎ=1 𝑣2𝑗ℎ
2
∑𝑚
)
𝑗=1 (
𝑏2𝑗(𝑛2𝑗 +1)
𝑛2𝑗
2
∑𝑚
𝑗=1 (𝑏2𝑗(𝑛2𝑗 +1))
− 𝑣11𝑘
−
)
𝑞11𝑘
𝑛2𝑗
2
∑𝑚
𝑗=1 (𝑏2𝑗 (𝑛2𝑗 +1))
= 0,
̅̅̅̅̅̅̅
𝑘 = 1,
𝑛11 .
Оставляя переменные 𝑞11𝑘 в левой части и перенося остальные параметры в
правую, получим систему (1.2.11):
2 1
(1 ⋮ 2
1 1
𝑚2
𝑞111
1
1) ( 𝑞112 ) =
⋮
⋱ ⋮
𝑞11𝑛11
⋯ 2
⋯
𝑚2
𝑛
2𝑗
𝑛2𝑗 𝑎2𝑗 − ∑ℎ=1
𝑣2𝑗ℎ
𝑛2𝑗
∑(
) − 𝑣111 ∑ (
)
𝑏2𝑗 (𝑛2𝑗 + 1)
𝑏2𝑗 (𝑛2𝑗 + 1)
𝑗=1
𝑚2
=
𝑛2𝑗
∑ℎ=1
𝑣2𝑗ℎ
𝑛2𝑗 𝑎2𝑗 −
∑(
𝑏2𝑗 (𝑛2𝑗 + 1)
𝑗=1
𝑛2𝑗
) − 𝑣112 ∑ (
)
𝑏2𝑗 (𝑛2𝑗 + 1)
𝑛2𝑗
∑ℎ=1
𝑣2𝑗ℎ
𝑛2𝑗 𝑎2𝑗 −
∑(
𝑏2𝑗 (𝑛2𝑗 + 1)
(𝑗=1
(1.2.11)
.
𝑗=1
⋮
𝑚2
2 1
Матрица (1 2
⋮
1 1
𝑗=1
𝑚2
𝑚2
) − 𝑣11𝑛11 ∑ (
𝑗=1
𝑛2𝑗
)
𝑏2𝑗 (𝑛2𝑗 + 1)
)
1
1
системы (1.2.11) является невырожденной
⋱ ⋮)
⋯ 2 [𝑛11×𝑛11]
⋯
матрицей, т.к. её строки (столбцы) линейно независимы. Поэтому мы можем
однозначно выразить значения переменных 𝑞11𝑘 , домножив эту систему на
обратную матрицу, которая имеет вид:
22
𝑛11
𝑛11 + 1
−1
−1
⋯
𝑛11 + 1
𝑛11 + 1
.
⋮
⋱
⋮
−1
−1
𝑛11
⋯
𝑛11 + 1)
(𝑛11 + 1 𝑛11 + 1
̅̅̅̅̅̅̅
Получаем выражения для 𝑞11𝑗 𝑗 = 1,
𝑛11 :
𝑞111
𝑞112
( ⋮ )=
𝑞11𝑛11
𝑛11
𝑛11 + 1
−1
(𝑛11 + 1
𝑚2
−1
𝑛11 + 1
⋮
−1
𝑛11 + 1
∗
⋱
⋮
𝑛11
⋯
𝑛11 + 1)
⋯
−1
𝑛11 + 1
𝑛
𝑚2
𝑛
𝑗=1
𝑚2
2𝑗
𝑛2𝑗 𝑎2𝑗 − ∑ℎ=1
𝑣2𝑗ℎ
𝑛2𝑗
∑(
) − 𝑣111 ∑ (
)
𝑏2𝑗 (𝑛2𝑗 + 1)
𝑏2𝑗 (𝑛2𝑗 + 1)
𝑗=1
𝑚2
∗
2𝑗
𝑛2𝑗 𝑎2𝑗 − ∑ℎ=1
𝑣2𝑗ℎ
𝑛2𝑗
∑(
) − 𝑣112 ∑ (
)
𝑏2𝑗 (𝑛2𝑗 + 1)
𝑏2𝑗 (𝑛2𝑗 + 1)
𝑗=1
(1.2.12)
.
𝑗=1
⋮
𝑚2
𝑛2𝑗
∑ℎ=1
𝑣2𝑗ℎ
𝑛2𝑗 𝑎2𝑗 −
∑(
𝑏2𝑗 (𝑛2𝑗 + 1)
(𝑗=1
𝑚2
𝑛2𝑗
) − 𝑣11𝑛11 ∑ (
)
𝑏2𝑗 (𝑛2𝑗 + 1)
)
𝑗=1
После упрощения (1.2.12) мы приходим к равенствам (1.2.13):
𝑞11𝑘
𝑚2
𝑛2𝑗
𝑛11
𝑗=1
ℎ=1
𝑟=1
𝑟≠𝑘
1
1
=
∑
(𝑛2𝑗 𝑎2𝑗 − ∑ 𝑣2𝑗ℎ − 𝑛11 𝑣11𝑘 + ∑ 𝑣11𝑟 ),
(𝑛11 + 1)
𝑏2𝑗
(1.2.13)
̅̅̅̅̅̅̅
𝑘 = 1,
𝑛11 .
Найденные
значения
(1.2.13)
действительно
являются
точками
максимума, т.к.
𝜕 2 𝜋11𝑘
−1
=
𝑛2𝑗
𝜕 2 𝑞11𝑘
2
∑𝑚
𝑗=1 (
+
𝑏2𝑗 (𝑛2𝑗 +1)
в силу того, что (
𝑛2𝑗
𝑏2𝑗 (𝑛2𝑗 +1)
𝜕 2 𝜋11𝑘
= 0,
𝜕𝑞11𝑘 𝑞11𝑟
)
−1
𝑛2𝑗
2
∑𝑚
𝑗=1 (𝑏2𝑗 (𝑛2𝑗 +1))
=
−2
𝑛2𝑗
2
∑𝑚
𝑗=1 (𝑏2𝑗 (𝑛2𝑗 +1))
< 0,
1, 𝑚2 ;
) > 0, ∀ 𝑗 = ̅̅̅̅̅̅̅
∀ 𝑟 ≠ 𝑘.
23
В формуле (1.2.13) все параметры известны, т.к. являются заданными
параметрами цепи поставок. Следовательно, значения переменных 𝑞11𝑘
также известны. Поэтому далее мы можем последовательно найти значения
переменных 𝑝11 , 𝑄11 , 𝑞2𝑗𝑘 , 𝑗 = ̅̅̅̅̅̅̅
1, 𝑚2 , 𝑘 = ̅̅̅̅̅̅̅
1, 𝑛2𝑗 и 𝑝2𝑗 , 𝑗 = ̅̅̅̅̅̅̅
1, 𝑚2 . Таким
образом, оптимальный поток для двухуровневой децентрализованной цепи
поставок найден, и задача координации решена.
Аналитические
выражения
равновесных
значений
переменных
приведены в табл. 1.3.1.
Таблица 1.3.1. Аналитические выражения для равновесных значений переменных
Переменная
𝒒𝟏𝟏𝒌 ,
𝒌 = ̅̅̅̅̅̅̅̅
𝟏, 𝒏𝟏𝟏
𝑸𝟏𝟏
𝒑𝟏𝟏
Выражение
𝑚2
𝑛2𝑗
𝑛11
𝑗=1
ℎ=1
𝑟=1
𝑟≠𝑘
1
1
∑
(𝑛2𝑗 𝑎2𝑗 − ∑ 𝑣2𝑗ℎ − 𝑛11 𝑣11𝑘 + ∑ 𝑣11𝑟 )
(𝑛11 + 1)
𝑏2𝑗
𝑚2
𝑛2𝑗
𝑛11
𝑗=1
ℎ=1
𝑟=1
1
1
∑
(𝑛 𝑛 𝑎 − 𝑛11 ∑ 𝑣2𝑖ℎ − ∑ 𝑣11𝑟 )
(𝑛11 + 1)
𝑏2𝑗 11 2𝑗 2𝑗
𝑛11
− ∑𝑘=1
𝑞11𝑘
𝑛2𝑗
+
𝑛2𝑗 𝑎2𝑗 −∑ℎ=1 𝑣2𝑗ℎ
2
∑𝑚
)
𝑗=1 (
𝑏2𝑗 (𝑛2𝑗 +1)
2
∑𝑚
𝑗=1 (
𝑛2𝑗
)
𝑏2𝑗 (𝑛2𝑗 +1)
𝑛2𝑗
𝒒𝟐𝒋𝒌 ,
1
𝒋 = ̅̅̅̅̅̅̅
𝟏, 𝒎𝟐 , 𝒌 = ̅̅̅̅̅̅̅
𝟏, 𝒏𝟐𝒋
𝑏2𝑗 (𝑛2𝑗 + 1)
(𝑎2𝑗 − 𝑝11 − 𝑛2𝑗 𝑣2𝑗𝑘 + ∑ 𝑣2𝑗ℎ ))
ℎ=1
ℎ≠𝑘
𝑛
𝑸𝟐𝒋 ,
𝒋 = ̅̅̅̅̅̅̅
𝟏, 𝒎𝟐
2𝑗
𝑛2𝑗 (𝑎2𝑗 − 𝑝11 ) − ∑𝑘=1
𝑣2𝑗𝑘
𝑏2𝑗 (𝑛2𝑗 + 1)
24
1.3. Равновесие по Нэшу в многоуровневой
децентрализованной игре
Пусть задана децентрализованная древовидная цепь поставок с
произвольным количеством уровней. Аналогично предыдущему параграфу
решение задачи координации начнем с рассмотрения концевых узлов,
переходя далее в направлении корневой вершины.
Рассмотрим функцию прибыли фирмы 𝑘 из узла 𝑥𝑗𝑙 :
𝜋𝑙𝑗𝑘 = 𝑞𝑙𝑗𝑘 (𝑝𝑙𝑗 − 𝑝𝑖𝑡 − 𝑣𝑙𝑗𝑘 ),
𝑝𝑖𝑡 : (𝑙, 𝑗) ∈ 𝑆𝑡𝑖 .
(1.3.1)
Подставим в формулу прибыли (1.3.1) выражение для переменной 𝑝𝑙𝑗 ,
используя функцию спроса (3):
𝜋𝑙𝑗𝑘 = 𝑞𝑙𝑗𝑘 (𝑎𝑙𝑗 − 𝑏𝑙𝑗 𝑄𝑙𝑗 − 𝑝𝑖𝑡 − 𝑣𝑙𝑗𝑘 ).
(1.3.2)
Проделав (1.3.1) – (1.3.2) для всех 𝑘 = ̅̅̅̅̅̅
1, 𝑛𝑙𝑖 и применив необходимое
условие максимума (1.3.3):
𝜕𝜋𝑙𝑗𝑘
= 0,
𝜕𝑞𝑙𝑗𝑘
𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑙𝑗 ,
(1.3.3)
мы придем к системе (1.3.4):
2
(1
1
1
(𝑎 − 𝑝𝑖𝑡 − 𝑣𝑙𝑗1 )
𝑏𝑙𝑗 𝑙𝑗
𝑞𝑙𝑗1
1 1
1
1
⋯
(𝑎 − 𝑝𝑖𝑡 − 𝑣𝑙𝑗2 )
2 1
1) ∗ ( 𝑞𝑙𝑗2 ) =
.
𝑏𝑙𝑗 𝑙𝑗
⋮
⋮
⋱ ⋮
⋮
𝑞𝑙𝑗𝑛𝑙𝑗
1 1 ⋯ 2
1
(𝑎𝑙𝑗 − 𝑝𝑖𝑡 − 𝑣𝑙𝑗𝑛𝑙𝑗 )
(𝑏𝑙𝑗
)
2 1 1
⋯
1
2
1
Система (1.3.4) имеет матрицу (
⋮
⋱
1 1 1 ⋯
(1.3.4)
1
1)
, которая является
⋮
2 [𝑛𝑙𝑗×𝑛𝑙𝑗 ]
невырожденной в силу линейной независимости строк (столбцов), поэтому
систему (1.3.4) можно однозначным образом разрешить относительно
переменных 𝑞𝑙𝑗𝑘 , 𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑙𝑗 , и единственное решение имеет вид:
25
1
(𝑎 − 𝑝𝑖𝑡 − 𝑣𝑙𝑗1 )
𝑛𝑙𝑗
−1
−1
𝑏𝑙𝑗 𝑙𝑗
𝑞𝑙𝑗1
⋯
𝑛
+
1
𝑛
+
1
1
𝑛𝑙𝑗 + 1
𝑙𝑗
𝑙𝑗
𝑞𝑙𝑗2
(𝑎 − 𝑝𝑖𝑡 − 𝑣𝑙𝑗2 )
∗ 𝑏𝑙𝑗 𝑙𝑗
,
( ⋮ )=
⋮
⋱
⋮
−1
−1
𝑛𝑙𝑗
⋮
𝑞𝑙𝑗𝑛𝑙𝑗
⋯
1
𝑛
+
1
𝑛
+
1
𝑛𝑙𝑗 + 1)
𝑙𝑗
( 𝑙𝑗
(𝑎𝑙𝑗 − 𝑝𝑖𝑡 − 𝑣𝑙𝑗𝑛𝑙𝑗 )
(𝑏𝑙𝑗
)
или после перемножения решение имеет вид (1.3.5):
𝑛𝑙𝑗
1
𝑏𝑙𝑗 (𝑛𝑙𝑗 + 1)
𝑞𝑙𝑗1
𝑞𝑙𝑗2
( ⋮ )=
𝑞𝑙𝑗𝑛𝑙𝑗
(𝑎𝑙𝑗 − (𝑝𝑖𝑡 + 𝑛𝑙𝑗 𝑣𝑙𝑗1 − ∑ 𝑣𝑙𝑗ℎ ))
ℎ=2
𝑛𝑙𝑗
1
𝑎𝑙𝑗 − (𝑝𝑖𝑡 + 𝑛𝑙𝑗 𝑣𝑙𝑗2 − ∑ 𝑣𝑙𝑗ℎ )
𝑏𝑙𝑗 (𝑛𝑙𝑗 + 1)
(
ℎ=1
ℎ≠2
⋮
.
(1.3.5)
)
𝑛𝑙𝑗 −1
1
𝑏𝑙𝑗 (𝑛𝑙𝑗 + 1)
(
(𝑎𝑙𝑗 − (𝑝𝑖𝑡 + 𝑛𝑙𝑗 𝑣𝑙𝑗𝑛𝑙𝑗 − ∑ 𝑣𝑙𝑗ℎ ))
ℎ=1
)
Для узла 𝑥𝑗𝑙 также имеет место равенство (1.3.6)
𝑛𝑙𝑗
𝑛
𝑄𝑙𝑗 = ∑ 𝑞𝑙𝑗𝑘 =
𝑘=1
𝑙𝑗
𝑛𝑙𝑗 (𝑎𝑙𝑗 − 𝑝𝑖𝑡 ) − ∑𝑘=1
𝑣𝑙𝑗𝑘
𝑏𝑙𝑗 (𝑛𝑙𝑗 + 1)
.
(1.3.6)
Аналогично проделываем процедуры (1.3.1) – (1.3.6) для всех концевых
вершин 𝑥𝑗𝑙 ∈ 𝑋𝑙 .
Теперь рассмотрим фирму 𝑘 из 𝑥𝑗𝑙−1 . Для неё функция прибыли имеет
вид:
𝜋(𝑙−1)𝑗𝑘 = 𝑞(𝑙−1)𝑗𝑘 (𝑝(𝑙−1)𝑗 − 𝑝𝑖𝑡 − 𝑣(𝑙−1)𝑗𝑘 ),
где 𝑝𝑖𝑡 : (𝑙 − 1, 𝑗) ∈ 𝑆𝑡𝑖 .
𝑘 = ̅̅̅̅̅̅̅̅̅̅̅
1, 𝑛(𝑙−1)𝑗 ,
(1.3.7)
В виду того, что узел 𝑥(𝑙−1)𝑗 образует сектор, то из условия отсутствия
излишков и дефицита (2) имеем соотношение
26
𝑛(𝑙−1)𝑗
∑ 𝑞(𝑙−1)𝑗𝑘 = 𝑄(𝑙−1)𝑗 =
𝑄𝑙ℎ =
∑
ℎ:(𝑙,ℎ)∈𝑆𝑗𝑙−1
𝑘=1
𝑛
=
∑
ℎ:(𝑙,ℎ)∈𝑆𝑗𝑙−1
𝑙ℎ
𝑛𝑙ℎ (𝑎𝑙ℎ − 𝑝(𝑙−1)𝑗 ) − ∑𝑟=1
𝑣𝑙ℎ𝑟
,
𝑏𝑙ℎ (𝑛𝑙ℎ + 1)
из которого можно однозначно выразить переменную 𝑝(𝑙−1)𝑗 :
𝑝(𝑙−1)𝑗 = 𝑓(𝑙−1)𝑗 (𝑞(𝑙−1)𝑗1 , … , 𝑞(𝑙−1)𝑗𝑛(𝑙−1)𝑗 ) =
=
𝑛(𝑙−1)𝑗
− ∑𝑘=1 𝑞(𝑙−1)𝑗𝑘
𝑛
+ ∑ℎ:(𝑙,ℎ)∈𝑆 𝑙−1
𝑙ℎ 𝑣
𝑛𝑙ℎ 𝑎𝑙ℎ −∑𝑟=1
𝑙ℎ𝑟
𝑗
∑ℎ:(𝑙,ℎ)∈𝑆 𝑙−1
𝑗
𝑏𝑙ℎ (𝑛𝑙ℎ +1)
𝑛𝑙ℎ
(1.3.8)
.
𝑏𝑙ℎ (𝑛𝑙ℎ +1)
Подставим (1.3.8) в формулы прибыли (1.3.7)
𝜋(𝑙−1)𝑗𝑘 = 𝑞(𝑙−1)𝑗𝑘 (𝑓(𝑙−1)𝑗 − 𝑝𝑖𝑡 − 𝑣(𝑙−1)𝑗𝑘 ),
𝑘 = ̅̅̅̅̅̅̅̅̅̅̅
1, 𝑛(𝑙−1)𝑗 ,
(1.3.9)
и применим необходимое условие максимума к выражениям (1.3.9):
𝜕𝜋(𝑙−1)𝑗𝑘
= (𝑓(𝑙−1)𝑗 − 𝑝𝑖𝑡 − 𝑣(𝑙−1)𝑗𝑘 ) +
𝜕𝑞(𝑙−1)𝑗𝑘
+𝑞(𝑙−1)𝑗𝑘
−1
∑
𝑛𝑙ℎ
= 0,
𝑘 = ̅̅̅̅̅̅̅̅̅̅̅
1, 𝑛(𝑙−1)𝑗 .
ℎ:(𝑙,ℎ)∈𝑆𝑙−1
𝑏𝑙ℎ (𝑛𝑙ℎ +1)
𝑗
или в матричном виде:
2 1
(1 2⋮
1 1
∑
ℎ:(𝑙,ℎ)∈𝑆𝑗𝑙−1
=
∑
ℎ:(𝑙,ℎ)∈𝑆𝑗𝑙−1
𝑞(𝑙−1)𝑗1
1
1
⋯
1
1) ∗ ( 𝑞(𝑙−1)𝑗2 ) =
⋮
⋱ ⋮
𝑞(𝑙−1)𝑗𝑛(𝑙−1)𝑗
1 ⋯ 2
𝑛𝑙ℎ
1
𝑏𝑙ℎ (𝑛𝑙ℎ + 1)
(𝑛𝑙ℎ 𝑎𝑙ℎ − 𝑛𝑙ℎ 𝑝𝑖𝑡 − 𝑛𝑙ℎ 𝑣(𝑙−1)𝑗1 − ∑ 𝑣𝑙ℎ𝑟 )
𝑟=1
(1.3.10)
𝑛𝑙ℎ
1
𝑏𝑙ℎ (𝑛𝑙ℎ + 1)
(𝑛𝑙ℎ 𝑎𝑙ℎ − 𝑛𝑙ℎ 𝑝𝑖𝑡 − 𝑛𝑙ℎ 𝑣(𝑙−1)𝑗2 − ∑ 𝑣𝑙ℎ𝑟 )
.
𝑟=1
⋮
∑
1
𝑏 (𝑛𝑙ℎ + 1)
𝑙−1 𝑙ℎ
(ℎ:(𝑙,ℎ)∈𝑆𝑗
𝑛𝑙ℎ
(𝑛𝑙ℎ 𝑎𝑙ℎ − 𝑛𝑙ℎ 𝑝𝑖𝑡 − 𝑛𝑙ℎ 𝑣(𝑙−1)𝑗𝑛(𝑙−1)𝑗 − ∑ 𝑣𝑙ℎ𝑟 )
𝑟=1
)
27
2 1 1
К матрице системы (1.3.10) – (1 2⋮ 1
1 1 1
1
1
(т.к. она
⋱ ⋮)
⋯ 2 [𝑛(𝑙−1)𝑖×𝑛(𝑙−1)𝑖]
⋯
является невырожденной в силу линейной независимости строк (столбцов)) –
существует обратная матрица:
2 1 1
1 −1
⋯
=
(1 2⋮ 1 ⋱ 1⋮ )
1 1 1 ⋯ 2 [𝑛(𝑙−1)𝑗×𝑛(𝑙−1)𝑗]
𝑛(𝑙−1)𝑗
−1
−1
⋯
𝑛(𝑙−1)𝑗 + 1 𝑛(𝑙−1)𝑗 + 1
𝑛(𝑙−1)𝑗 + 1
=
⋮
⋱
⋮
−1
−1
𝑛(𝑙−1)𝑗
⋯
𝑛(𝑙−1)𝑗 + 1)[𝑛
(𝑛(𝑙−1)𝑗 + 1 𝑛(𝑙−1)𝑗 + 1
.
(𝑙−1)𝑗 ×𝑛(𝑙−1)𝑗 ]
Вследствие этого, (1.3.10) однозначно разрешима относительно
переменных 𝑞(𝑙−1)𝑗𝑘 , 𝑘 = ̅̅̅̅̅̅̅̅̅̅̅
1, 𝑛(𝑙−1)𝑗 :
𝑞(𝑙−1)𝑗𝑘 =
1
𝑛(𝑙−1)𝑗 + 1
[
∑
ℎ:(𝑙.ℎ)∈𝑆𝑗𝑙−1
𝑛𝑙ℎ
1
𝑏𝑙ℎ (𝑛𝑙ℎ + 1)
(𝑛𝑙ℎ 𝑎𝑙ℎ − 𝑛𝑙ℎ 𝑝𝑖𝑡 − ∑ 𝑣𝑙ℎ𝑟 −
𝑟=1
𝑛(𝑙−1)𝑗
−𝑛(𝑙−1)𝑗 𝑛𝑙ℎ 𝑣(𝑙−1)𝑗𝑘 + 𝑛𝑙ℎ ∑ 𝑣(𝑙−1)𝑗𝑒 )] , 𝑘 = ̅̅̅̅̅̅̅̅̅̅̅
1, 𝑛(𝑙−1)𝑗 .
𝑒=1
𝑒≠𝑘
Далее может быть посчитано значение 𝑄(𝑙−1)𝑗 :
𝑛(𝑙−1)𝑗
𝑄(𝑙−1)𝑗 = ∑ 𝑞(𝑙−1)𝑗𝑘 =
𝑘=1
1
𝑛(𝑙−1)𝑗 + 1
𝑛𝑙ℎ
∗ (𝑛(𝑙−1)𝑗 (𝑛𝑙ℎ 𝑎𝑙ℎ − 𝑛𝑙ℎ 𝑝𝑖𝑡 − ∑
[
1
∑
ℎ:(𝑙.ℎ)∈𝑆𝑗𝑙−1
𝑏𝑙ℎ (𝑛𝑙ℎ + 1)
∗
𝑛(𝑙−1)𝑗
(1.3.11)
𝑣𝑙ℎ𝑟 ) − 𝑛𝑙ℎ ∑ 𝑣(𝑙−1)𝑗𝑘 )].
𝑟=1
𝑘=1
28
Повторяем процесс (1.3.7) – (1.3.11) для всех оставшихся узлов 𝑥𝑖𝑙−1
этого уровня: 𝑥𝑖𝑙−1 ∈ 𝑋𝑙−1 , 𝑖 ≠ 𝑗.
Далее мы аналогичным образом рассматриваем вершины 𝑥𝑡𝑖 из
множеств
вершин
𝑋𝑖
уровня
𝑖 = (𝑙 − 2), (𝑙 − 3), … , 2,
𝑖,
решаем
двухуровневую подыгру в каждом из секторов, образованных этими узлами,
получая при этом решение, зависящее от цены поставщика узла 𝑥𝑡𝑖 , и
выражаем значение этой цены через переменные объема выпуска.
Переходим к рассмотрению множества вершин первого уровня
𝑋1 = {𝑥11 }. Вид функции прибыли для произвольной фирмы 𝑘 из узла 𝑥11
имеет вид (1.3.12):
𝜋11𝑘 = 𝑞11𝑘 (𝑝11 − 𝑣11𝑘 ).
(1.3.12)
Учтем, что переменная 𝑝11 имеет выражение через переменные
̅̅̅̅̅̅̅
𝑞11𝑘 , 𝑘 = 1,
𝑛11 и параметры затрат на производство, которое может быть
получено после рассмотрения всех 𝑋𝑖 𝑖 = ̅̅̅̅̅̅̅̅̅
2, 𝑙 − 1 из условия отсутствия
дефицита и излишков:
𝑝11 = 𝑓11 (𝑞111 , … , 𝑞11𝑛11 , 𝑣𝑖𝑡1 , … , 𝑣𝑖𝑡𝑛𝑖𝑡 , … , 𝑣111 , … , 𝑣11𝑛11 ),
𝑖, 𝑡: (𝑖, 𝑡) ∈ 𝑆11 ,
(1.3.13)
где 𝑓11 линейная функция по аргументам 𝑞111 , … , 𝑞11𝑛11 .
Подставим выражение (1.3.13) в формулу прибыли (1.3.12)
𝜋11𝑗 = 𝑞11𝑘 (𝑓11 (𝑞111 , … , 𝑞11𝑛11 , 𝑣𝑖𝑡1 , … , 𝑣𝑖𝑡𝑛𝑖𝑡 , … , 𝑣11𝑛11 ) − 𝑣11𝑘 ),
(1.3.14)
и применим к (1.3.14) необходимое условие максимума:
𝜕𝜋11𝑘
= 𝑓11 (𝑞111 , … , 𝑞11𝑛11 , 𝑣𝑖𝑡1 , … , 𝑣𝑖𝑡𝑛𝑖𝑡 , … , 𝑣111 , … , 𝑣11𝑛11 ) −
𝜕𝑞11𝑘
𝜕𝑓11
−𝑣11𝑘 + 𝑞11𝑘
= 0,
𝜕𝑞11𝑘
при этом значения всех производных
(1.3.15)
𝑘 = ̅̅̅̅̅̅̅
1, 𝑛11 ,
𝜕𝑓11
𝜕𝑞11𝑘
̅̅̅̅̅̅̅
, 𝑘 = 1,
𝑛11 являются константами
в силу линейности функции 𝑓11 . Система (1.3.15) является системой
линейных
уравнений
относительно
𝑞111 , … , 𝑞11𝑛11
с
невырожденной
матрицей (1.3.16)
29
2
(1
1
1 1
1
⋯
2 1
1
,
⋮
⋱ ⋮)
1 1 ⋯ 2 [𝑛11×𝑛11]
(1.3.16)
и вследствие этого она является однозначно разрешимой относительно всех
̅̅̅̅̅̅̅
𝑞11𝑘 , 𝑘 = 1,
𝑛11 , причем это решение зависит только от заданных параметров
цепи поставок. Далее последовательно подставляя полученные значения в
выражения для неизвестных переменных, мы найдем их равновесные
значения. Таким образом, оптимальный поток 𝑑 ∗ найден, и задача
координации децентрализованной модели многоуровневых цепей поставок
является решенной.
30
Глава 2. Модели координации централизованной
многоуровневой цепи поставок
В этой главе мы исследуем задачу координации цепи поставок в случае
централизованной
модели,
т.е.
все
участники
цепи
действуют
централизованно, имея цель максимизировать заданную целевую функцию
при известных линейных функциях спроса в конечных узлах.
2.1. Формализация первой модели координации
централизованной многоуровневой цепи поставок
Пусть задана централизованная многоуровневая цепь поставок с
древовидной дистрибутивной структурой. Для каждой фирмы этой цепи
выпишем её функцию прибыли 𝜋𝑖𝑗𝑘 (𝑑), а затем просуммируем их по 𝑖 = ̅̅̅̅
1, 𝑙 ,
𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 , 𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑖𝑗 для того, чтобы получить общую прибыль цепи поставок
𝛱(𝑑). Нам необходимо найти допустимый поток 𝑑̂, обеспечивающий
выполнение соотношения (6), которое приводит нас к оптимизационной
задаче (2.1.1) при условиях (2.1.2) – (2.1.5):
max 𝛱(𝑑) =
𝑑∈𝐷
𝑙
𝑚𝑖 𝑛𝑖𝑗
= max (∑ ∑ ∑ 𝜋𝑖𝑗𝑘 (𝑞𝑖𝑗1 , … , 𝑞𝑖𝑗𝑛𝑖𝑗 , 𝑣𝑖𝑗1 , … , 𝑣𝑖𝑗𝑛𝑖𝑗 , 𝑝𝑖𝑗 , 𝑝𝑡ℎ ) +
𝑞𝑖𝑗ℎ ,𝑝𝑖𝑗
𝑖=2 𝑗=1 𝑘=1
(2.1.1)
𝑛11
+ ∑ 𝜋11𝑘 (𝑞111 , … , 𝑞11𝑛11 , 𝑣111 , … , 𝑣11𝑛11 , 𝑝11 )),
𝑘=1
𝑝𝑡ℎ : (𝑖, 𝑗) ∈ 𝑆ℎ𝑡 ;
𝑛𝑙𝑗
𝑝𝑙𝑗 = 𝑎𝑙𝑗 − 𝑏𝑙𝑗 ∑ 𝑞𝑙𝑗𝑘 ,
𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑙 ;
(2.1.2)
𝑘=1
31
𝑛𝑖𝑗
𝑛𝑡ℎ
∑ 𝑞𝑡ℎ𝑟 =
∑ 𝑞𝑖𝑗𝑘 , 𝑡, ℎ: 𝑥ℎ𝑡 ∉ 𝑋𝑙 ;
∑
𝑖,𝑗:(𝑖,𝑗)∈𝑆ℎ𝑡
𝑟=1
𝑞𝑖𝑗𝑘 ≥ 0,
𝑖 = ̅̅̅̅
1, 𝑙 ,
𝑝𝑖𝑗 ≥ 0,
(2.1.3)
𝑘=1
𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 ,
𝑖 = ̅̅̅̅
1, 𝑙 ,
𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑖𝑗 ;
𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 .
(2.1.4)
(2.1.5)
Из свойств максимизируемой функции 𝛱(𝑑) и вида ограничений (2.1.2) –
(2.1.5) мы заключаем, что (2.1.1) – (2.1.5) – это есть задача нелинейной
оптимизации при линейных ограничениях типа равенств и неравенств.
Для решения рассматриваемой задачи оптимизации была написана
программа в среде MATLAB, реализующая итеративный алгоритм поиска
точки максимума при ограничениях в виде равенств и неравенств на основе
метода
последовательного
квадратичного
программирования.
Код
программы приведен в Приложении 1.
32
2.2. Теоретический анализ нелинейной задачи
оптимизации
В этом параграфе мы исследуем существование решения задачи
координации централизованной цепи поставок, которая свелась к задаче
максимизации нелинейной функции следующего вида:
𝑙
𝑚𝑖 𝑛𝑖𝑗
𝛱(𝑑) = ∑ ∑ ∑ 𝜋𝑖𝑗𝑘 (𝑞𝑖𝑗1 , … , 𝑞𝑖𝑗𝑛𝑖𝑗 , 𝑣𝑖𝑗1 , … , 𝑣𝑖𝑗𝑛𝑖𝑗 , 𝑝𝑖𝑗 , 𝑝𝑡ℎ ) +
𝑖=2 𝑗=1 𝑘=1
(2.2.1)
𝑛11
+ ∑ 𝜋11𝑘 (𝑞111 , … , 𝑞11𝑛11 , 𝑣111 , … , 𝑣11𝑛11 , 𝑝11 ) ,
𝑝𝑡ℎ : (𝑖, 𝑗) ∈ 𝑆ℎ𝑡 .
𝑘=1
Распишем подробнее:
𝑙−1 𝑚𝑖 𝑛𝑖𝑗
𝛱(𝑑) = ∑ ∑ ∑ (𝑞𝑖𝑗𝑘 (𝑝𝑖𝑗 − 𝑝𝑡ℎ − 𝑣𝑖𝑗𝑘 )) +
𝑖=2 𝑗=1 𝑘=1
𝑚𝑙 𝑛𝑙𝑗
𝑛𝑙𝑗
+ ∑ ∑ (𝑞𝑙𝑗𝑘 (𝑎𝑙𝑗 − 𝑏𝑙𝑗 ∑ 𝑞𝑙𝑗𝑟 − 𝑝𝑧𝑢 − 𝑣𝑙𝑗𝑘 )) +
𝑗=1 𝑘=1
(2.2.2)
𝑟=1
𝑛11
+ ∑ 𝑞11𝑘 (𝑝11 − 𝑣11𝑘 ) ,
𝑝𝑡ℎ : (𝑖, 𝑗) ∈ 𝑆ℎ𝑡 ,
𝑝𝑧𝑢 : (𝑙, 𝑗) ∈ 𝑆𝑢𝑧 .
𝑘=1
Ввиду отсутствия в цепи излишков и дефицита в выражении (2.2.2)
слагаемые вида (2.2.3)
𝑛𝑖𝑗
−𝑝𝑡ℎ
∑
∑ 𝑞𝑖𝑗𝑘
(2.2.3)
𝑖,𝑗:(𝑖,𝑗)∈𝑆ℎ𝑡 𝑘=1
взаимно уничтожатся слагаемыми вида (2.2.4)
𝑛𝑡ℎ
𝑝𝑡ℎ ∑ 𝑞𝑡ℎ𝑘 ,
(2.2.4)
𝑘=1
33
тем самым мы получаем, что функция 𝛱(𝑑) не зависит от переменных
𝑝𝑖𝑗 для ∀ 𝑖 = ̅̅̅̅̅̅̅̅̅
1, 𝑙 − 1 и ∀ 𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 , т.е. (2.2.2) можно переписать в виде
(2.2.5):
𝑙−1 𝑚𝑖 𝑛𝑖𝑗
𝛱(𝑑) = ∑ ∑ ∑(−𝑞𝑖𝑗𝑘 𝑣𝑖𝑗𝑘 ) +
𝑖=2 𝑗=1 𝑘=1
𝑚𝑙 𝑛𝑙𝑗
𝑛𝑙𝑗
(2.2.5)
𝑛11
+ ∑ ∑ (𝑞𝑙𝑗𝑘 (𝑎𝑙𝑗 − 𝑏𝑙𝑗 ∑ 𝑞𝑙𝑗𝑟 − 𝑣𝑙𝑗𝑘 )) + ∑ (−𝑞11𝑘 𝑣11𝑘 ).
𝑗=1 𝑘=1
𝑟=1
𝑘=1
Из формулы (2.2.5) следует, что максимизируемая функция зависит только от
𝑞𝑖𝑗𝑘 , 𝑖 = ̅̅̅̅
1, 𝑙 , 𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 , 𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑖𝑗 ,
переменных
причем
она
является
непрерывной функцией по этим переменным, следовательно, по теореме
Вейерштрасса
для
доказательства
существования
решения
задачи
максимизации необходимо и достаточно показать ограниченность и
замкнутость множества, на котором задана функция 𝛱(𝑑). Для этого
перейдем к изучению ограничений, при которых рассматривается задача
оптимизации, т.е.:
𝑛𝑙𝑗
𝑝𝑙𝑗 = 𝑎𝑙𝑗 − 𝑏𝑙𝑗 ∑ 𝑞𝑙𝑗𝑘 ,
𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑙 ;
(2.2.6)
𝑘=1
𝑛𝑖𝑗
𝑛𝑡ℎ
∑ 𝑞𝑡ℎ𝑟 =
∑ 𝑞𝑖𝑗𝑘 , 𝑡, ℎ: 𝑥ℎ𝑡 ∉ 𝑋𝑙 ;
∑
(2.2.7)
𝑖,𝑗:(𝑖,𝑗)∈𝑆ℎ𝑡 𝑘=1
𝑟=1
𝑞𝑖𝑗𝑘 ≥ 0,
𝑖 = ̅̅̅̅
1, 𝑙 ,
𝑝𝑖𝑗 ≥ 0,
𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 ,
𝑖 = ̅̅̅̅
1, 𝑙 ,
𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑖𝑗 ;
𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 .
(2.2.8)
(2.2.9)
Рассмотрим поднабор ограничений (2.2.6) и (2.2.8) – (2.2.9) при 𝑖 = 𝑙.
Из него вытекает логическая цепочка (2.2.10)
34
𝑛𝑙𝑗
𝑛𝑙𝑗
𝑝𝑙𝑗 = 𝑎𝑙𝑗 − 𝑏𝑙𝑗 ∑ 𝑞𝑙𝑗𝑘
⇒
𝑘=1
𝑝𝑙𝑗 ≥ 0
𝑞𝑙𝑗𝑘 ≥ 0
𝑎𝑙𝑗 − 𝑏𝑙𝑗 ∑ 𝑞𝑙𝑗𝑘 ≥ 0
𝑞𝑙𝑗𝑘 ≥ 0
}
𝑛𝑙𝑗
⇒ 0 ≤ ∑ 𝑞𝑙𝑗𝑘 ≤
𝑘=1
⇒
𝑘=1
}
(2.2.10)
𝑎𝑙𝑗
𝑎𝑙𝑗
⇒ 0 ≤ 𝑞𝑙𝑗𝑘 ≤ ,
𝑏𝑙𝑗
𝑏𝑙𝑗
из которой мы заключаем, что переменные 𝑞𝑙𝑗𝑘 , 𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑙 , 𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑙𝑗
ограничены и сверху, и снизу. Тогда из условия (2.2.7) – условия отсутствия
дефицита и излишков – следует, что все переменные 𝑞𝑖𝑗𝑘 𝑖 = ̅̅̅̅
1, 𝑙 , 𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 ,
𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑖𝑗 ограничены:
0 ≤ 𝑞𝑖𝑗𝑘 ≤ 𝑐𝑜𝑛𝑠𝑡,
𝑖 = ̅̅̅̅
1, 𝑙 ,
𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 ,
𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑖𝑗 .
(2.2.11)
Таким образом, область определения функции является ограниченной,
а в виду того, что все неравенства в (2.2.10) и (2.2.11) – нестрогие, то еще и
замкнутой, следовательно, по теореме Вейерштрасса функция
𝛱(𝑑)
ограничена и достигает своего максимума как непрерывная функция на
замкнутом ограниченном множестве.
35
2.3. Сравнение решений в централизованной и
децентрализованной моделях многоуровневых цепей поставок
на основе численного моделирования
Рассмотрим конкретный пример цепи поставок и сравним решения,
получаемые для децентрализованной и централизованной моделей.
Пусть имеется цепь поставок, изображенная на Рис. 2.3.1.
Рис. 2.3.1. Цепь поставок
Значения параметров цепи поставок приведены в таблице 2.3.1.
Таблица 2.3.1. Значения параметров цепи поставок
Узел 𝑥11
Узел 𝑥12
Узел 𝑥13
Узел 𝑥23
𝑛11 = 2
𝑛21 = 1
𝑛31 = 4
𝑛32 = 2
Количество
фирм в узле,
𝑛𝑖𝑗
Значение
затрат на
производство
единицы
товара, 𝑣𝑖𝑗ℎ
𝑣311 = 342
𝑣111 = 1500
𝑣112 = 1505
𝑣211 = 700
𝑣312 = 340
𝑣321 = 120
𝑣313 = 338
𝑣322 = 122
𝑣314 = 345
36
Функции прибыли для всех фирм из узлов уровня 3 имеют вид (2.3.1) и
(2.3.2):
4
𝜋311 = 𝑞311 (5000 − 0,25 ∑ 𝑞31𝑗 − 𝑝11 − 342),
𝑗=1
4
𝜋312 = 𝑞312 (5000 − 0,25 ∑ 𝑞31𝑗 − 𝑝11 − 340),
𝑗=1
4
(2.3.1)
𝜋313 = 𝑞313 (5000 − 0,25 ∑ 𝑞31𝑗 − 𝑝11 − 338),
𝑗=1
4
𝜋314 = 𝑞314 (5000 − 0,25 ∑ 𝑞31𝑗 − 𝑝11 − 345) ;
𝑗=1
2
𝜋321 = 𝑞321 (6000 − 0,09 ∑ 𝑞32𝑗 − 𝑝21 − 120),
𝑗=1
2
(2.3.2)
𝜋322 = 𝑞322 (6000 − 0,09 ∑ 𝑞32𝑗 − 𝑝21 − 122).
𝑗=1
Применяем ко всем функциям в (2.3.1) и (2.3.2) необходимое условие
максимума и получаем соответственно две системы уравнений:
4658 − 𝑝11
𝑞311
0,5 0,25 0,25 0,25
𝑞
4660 − 𝑝11
0,25 0,5 0,25 0,25
(
) (𝑞312 ) = (
).
4662 − 𝑝11
313
0,25 0,25 0,5 0,25
𝑞314
0,25 0,25 0,25 0,5
4655 − 𝑝11
(2.3.3)
5880 − 𝑝21
0,18 0,09 𝑞321
(
) (𝑞 ) = (
);
0,09 0,18
5878 − 𝑝21
322
(2.3.4)
После решения систем (2.3.3) и (2.3.4) мы имеем выражения для 𝑞3𝑖𝑗 :
𝑞311
𝑞
{ 312
𝑞313
𝑞314
= 3724 − 0,8𝑝11 ,
= 3732 − 0,8𝑝11 ,
= 3740 − 0,8𝑝11 ,
= 3712 − 0,8𝑝11 .
(2.3.5)
37
1
(588200 − 100𝑝21 ),
𝑞321 =
27
{
1
(587600 − 100𝑝21 ).
𝑞322 =
27
(2.3.6)
Из условия отсутствия дефицита и излишков получаем соотношение
𝑄32 = 𝑞321 + 𝑞322 =
1175800 200
−
𝑝 = 𝑄21 = 𝑞211 ,
27
27 21
из которого можно выразить значение переменной 𝑝21
𝑝21 = 5879 − 0,135𝑞211 .
(2.3.7)
Для единственной фирмы из узла 𝑥12 функция прибыли записывается в
виде соотношения:
𝜋211 = 𝑞211 (𝑝21 − 𝑝11 − 700),
подставляя в которое выражение (2.3.7), получаем:
𝜋211 = 𝑞211 (5879 − 0,135𝑞211 − 𝑝11 − 700).
Применение необходимого условия максимума к этому уравнению дает
равенство (2.3.8):
𝜕𝜋211
517900 100
= 0 ⇒ 𝑞211 =
−
𝑝 .
𝜕𝑞211
27
27 11
(2.3.8)
Условие отсутствия излишков и дефицита в секторе корневой вершины
может быть записано в виде соотношения
4
𝑄11 = 𝑞111 + 𝑞112 = 𝑄21 + 𝑄31 = 𝑞211 + ∑ 𝑞31𝑖 ,
𝑖=1
из которого, подставив (2.3.5) и (2.3.8), можно выразить 𝑝11 :
1150520 135
(2.3.9)
(𝑞 + 𝑞112 )
−
233
932 111
Фирмы 1 и 2 из корневого сектора имеют функции прибыли (2.3.10) и
𝑝11 =
(2.3.11) соответственно:
𝜋111 = 𝑞111 (𝑝11 − 1500),
(2.3.10)
𝜋112 = 𝑞112 (𝑝11 − 1505),
(2.3.11)
которые после подстановки в них (2.3.9) примут вид (2.3.12) и (2.3.13).
38
1150520 135
(𝑞 + 𝑞112 ) − 1500),
−
233
932 111
1150520 135
(𝑞 + 𝑞112 ) − 1505).
= 𝑞112 (
−
233
932 111
𝜋111 = 𝑞111 (
(2.3.12)
𝜋112
(2.3.13)
После применения необходимого условия максимума к (2.3.12) и
(2.3.13) получим систему:
801020
135
466) (𝑞111 ) = ( 233 ),
799855
135 𝑞112
233
932
135
(932
135
466
единственное решение которой имеет вид (2.3.14)
213916
𝑞111 =
≈ 7923,
27
(2.3.14)
{
212984
𝑞112 =
≈ 7889.
27
Подставляем найденные значения (2.3.14) в выражения (2.3.9.)
616895
(2.3.15)
≈ 2648.
233
Значение (2.3.15) подставляем в (2.3.5) и (2.3.8), получаем следующее:
𝑝11 =
374176
≈ 1606 ,
233
376040
𝑞312 =
≈ 1614,
233
377904
𝑞313 =
≈ 1622,
233
371380
𝑞314 =
≈ 1594;
233
𝑞311 =
𝑞211 =
19660400
≈ 9375;
2097
(2.3.16)
(2.3.17)
Далее, подставляя (2.3.17) в формулу (2.3.7), получаем значение для 𝑝21 :
39
1074901
≈ 4613.
233
𝑝21 =
(2.3.18)
Используя (2.3.18), находим 𝑞321 и 𝑞322 из выражения (2.3.6):
3284500
≈ 4699;
699
9806900
=
≈ 4677.
2097
𝑞321 =
𝑞322
(2.3.19)
И, наконец, используя вычисленные значения объемов выпуска (2.3.16) и
(2.3.19) в конечных узлах 𝑥13 и 𝑥23 , вычисляем значение оптимальных цен 𝑝31
и 𝑝32 , используя функции спроса:
790125
≈ 3391,
233
1201396
=
≈ 5156.
233
𝑝31 =
𝑝32
Зная равновесные значения всех переменных, мы можем вычислить
прибыль каждого участника, а затем получить общую прибыль цепи
поставок, которая получается равной:
53525765475416
(2.3.20)
≈ 3.6516 ∗ 107 .
1465803
Теперь найдем оптимальные значения, решив задачу максимизации
𝛱𝑑 =
общей прибыли в случае централизованной модели цепи поставок с
помощью программы в пакете MATLAB. После выполнения итеративного
алгоритма программа выдает следующие значения:
𝑞111 ≈ 27566,
𝑞112 ≈ 0,
(2.3.21)
𝑝11 ≈ 1553;
𝑞211 ≈ 21242,
𝑝21 ≈ 0;
(2.3.22)
40
𝑞311 ≈ 0,
𝑞312 ≈ 0,
𝑞313 ≈ 6324,
(2.3.23)
𝑞314 ≈ 0,
𝑝31 ≈ 3419;
𝑞321 ≈ 21242,
𝑞322 ≈ 0,
(2.3.24)
𝑝32 ≈ 4088.
Общая прибыль всей цепи поставок при данных значениях переменных
равна
𝛱𝑐 ≈ 4.7559 ∗ 107 .
Сравнивая
значения
суммарной
(2.3.25)
прибыли
цепи
в
случае
децентрализованной (2.3.20) и централизованной (2.3.25) моделей, заметим,
что
в
случае
централизованного
поведения
участников
произошло
увеличение общей прибыли цепи на 1.1042*107 или примерно на 30%.
Ряд аналогичных числовых экспериментов выявил, что централизация
цепи дает в среднем 25-типроцентный выигрыш в общей прибыли по
сравнению с децентрализованной моделью.
41
2.4. Формализация модели координации
централизованной многоуровневой цепи поставок на основе
арбитражного решения Нэша
Оптимизационная
задача
(2.1.1)
(и
как
следствие
результаты,
получаемые после её решения) имеет лишь один, но существенный
недостаток: она требует после себя дополнительной системы дележей, т.к.
при
получаемых
оптимальных
объемах,
которые
действительно
максимизируют прибыль всей цепи поставок, прибыль некоторых отдельных
участников является нулевой или даже отрицательной. Поэтому после
определения потока, удовлетворяющего (2.1.1) – (2.1.5), в цепь необходимо
дополнительно ввести систему контрактов между всеми участниками,
которая оговаривает дележ получаемой общей прибыли. Однако зачастую
сделать это в реальных условиях очень трудно.
Исследуем метод, использующий альтернативную формулировку
оптимизационной задачи, не требующий после себя применения еще какоголибо математического аппарата.
Пусть у нас имеется игра в нормальной форме, т.е. совокупность
Г = 〈𝑁, {𝑌𝑖 }𝑖∈𝑁 , {𝐻𝑖 }𝑖∈𝑁 〉, где 𝑁 = {1, 2, … , 𝑛} – непустое множество игроков,
𝑌𝑖 – множество стратегий игрока 𝑖, а 𝐻𝑖 – функция выигрыша игрока 𝑖,
определенная на декартовом произведении множеств {𝑌𝑖 }𝑖∈𝑁 стратегий
игроков 𝑌 = ∏𝑖∈𝑁 𝑌𝑖 , 𝐻𝑖 : 𝑌 → 𝑅 [1].
Определение 2.4.1. Арбитражным решением Нэша будем называть
такой вектор 𝑦 ′ = (𝑦1′ , 𝑦2′ , … , 𝑦𝑛′ ) ∈ 𝑌, для которого выполняется:
𝑛
arg max ∏(𝐻𝑖 (𝑦1 , 𝑦2 , … , 𝑦𝑛 ) − 𝜃𝑖 ) = 𝑦 ′ .
𝑦1 ,𝑦2 ,…,𝑦𝑛
(2.4.1)
𝑖=1
где 𝜃𝑖 , 𝑖 = ̅̅̅̅̅
1, 𝑛 – известные числа (обычно за 𝜃𝑖 берут значение в некотором
смысле «гарантированного» выигрыша игрока 𝑖).
В основе арбитражного решения Нэша лежит принцип, что все игроки
между собой равнозначны, однако очень часто бывает так, что значимость
42
некоторых игроков выше, чем других. В связи с этим введем понятие
взвешенного решения Нэша, которое учитывает «вес» каждого из игроков.
Определение 2.4.2. Взвешенным арбитражным решением Нэша для
игры
Г
с
весовыми
коэффициентами
𝛼1 , 𝛼2 , … , 𝛼𝑛 : 𝛼𝑖 > 0 ∀𝑖 = ̅̅̅̅̅
1, 𝑛,
∑𝑛𝑖=1 𝛼𝑖 = 1 будем называть такой вектор 𝑦 ′ = (𝑦1′ , 𝑦2′ , … , 𝑦𝑛′ ) ∈ 𝑌, что
выполняется:
𝑛
arg max ∏(𝐻𝑖 (𝑦1 , 𝑦2 , … , 𝑦𝑛 ) − 𝜃𝑖 )𝛼𝑖 = 𝑦 ′ .
𝑦1 ,𝑦2 ,…,𝑦𝑛
Упорядочим
(2.4.2)
𝑖=1
все
узлы
цепи
поставок:
𝑙
𝑁 = {𝑥11 , 𝑥12 , 𝑥22 , … , 𝑥𝑚
}.
𝑙
Множество 𝑁 будем считать множеством игроков, а множества 𝑈𝑖𝑗 ,
определяемые по формуле (4) – множествами стратегий игроков 𝑥𝑗𝑖 ∈ 𝑁.
Каждому
игроку
𝑥𝑗𝑖 ∈ 𝑁
поставим
в
соответствие
вектор
𝜋𝑗𝑖 = (𝜋𝑖𝑗1 , 𝜋𝑖𝑗2 , … , 𝜋𝑖𝑗𝑛𝑖𝑗 ) и в качестве функций выигрыша игроков возьмем
набор из этих векторов, упорядоченный соответственно упорядочению
𝑙
множества игроков: 𝜋 = {𝜋11 , … , 𝜋𝑚
}. За точку 𝜃 возьмем точку «статус кво»
𝑙
из определения 13. Тогда из определения 2.4.2 следует, что решение задачи
координации централизованной цепи поставок (7) является взвешенным
решением Нэша.
В терминах принятых нами обозначений решением будет являться
такой допустимый поток 𝑑 𝑁 , на котором достигается максимум функции
(2.4.3):
𝑙
𝑚𝑖
𝑛𝑖𝑗
𝛼𝑖𝑗𝑘
∗
𝛷 = (∏ ∏ ∏ (𝜋𝑖𝑗𝑘 (𝑞𝑖𝑗1 , … , 𝑞𝑖𝑗𝑛𝑖𝑗 , 𝑣𝑖𝑗1 , … , 𝑣𝑖𝑗𝑛𝑖𝑗 , 𝑝𝑖𝑗 , 𝑝𝑡ℎ ) − 𝜋𝑖𝑗𝑘
)
)∗
𝑖=2 𝑗=1 𝑘=1
𝑛11
∗
∗ (∏(𝜋11𝑘 (𝑞111 , … , 𝑞11𝑛11 , 𝑣111 , … , 𝑣11𝑛11 , 𝑝11 ) − 𝜋11𝑘
)
𝛼11𝑘
(2.4.3)
),
𝑘=1
𝑝𝑡ℎ : (𝑖, 𝑗) ∈ 𝑆ℎ𝑡 .
43
Таким образом, мы получаем задачу оптимизации (2.4.4) при условиях
(2.4.5) – (2.4.9):
𝑙
𝑚𝑖
𝑛𝑖𝑗
∗
)
max [(∏ ∏ ∏ (𝜋𝑖𝑗𝑘 (𝑞𝑖𝑗1 , … , 𝑞𝑖𝑗𝑛𝑖𝑗 , 𝑣𝑖𝑗1 , … , 𝑣𝑖𝑗𝑛𝑖𝑗 , 𝑝𝑖𝑗 , 𝑝𝑡ℎ ) − 𝜋𝑖𝑗𝑘
𝑞𝑖𝑗ℎ,𝑝𝑖𝑗
𝛼𝑖𝑗𝑘
)∗
𝑖=2 𝑗=1 𝑘=1
𝑛11
∗ (∏(𝜋11𝑘 (𝑞111 , … , 𝑞11𝑛11 , 𝑣111 , … , 𝑣11𝑛11 , 𝑝11 ) −
(2.4.4)
𝛼11𝑘
∗
)
)],
𝜋11𝑘
𝑘=1
𝑝𝑡ℎ : (𝑖, 𝑗) ∈ 𝑆ℎ𝑡 ;
𝑖 = ̅̅̅̅
1, 𝑙 ,
∗
𝜋𝑖𝑗𝑘 ≥ 𝜋𝑖𝑗𝑘
,
𝑗 = ̅̅̅̅̅̅̅
1, 𝑚𝑖 ,
𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑖𝑗 ;
(2.4.5)
𝑛𝑙𝑗
𝑝𝑙𝑗 = 𝑎𝑙𝑗 − 𝑏𝑙𝑗 ∑ 𝑞𝑙𝑗𝑘 ,
𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑙 ;
(2.4.6)
𝑘=1
𝑛𝑖𝑗
𝑛𝑡ℎ
∑ 𝑞𝑡ℎ𝑟 =
𝑟=1
𝑞𝑖𝑗𝑘 ≥ 0,
∑
∑ 𝑞𝑖𝑗𝑘 , 𝑡, ℎ: 𝑥ℎ𝑡 ∉ 𝑋𝑙 ;
(2.4.7)
𝑖,𝑗:(𝑖,𝑗)∈𝑆ℎ𝑡 𝑘=1
𝑖 = ̅̅̅̅
1, 𝑙 ,
𝑗 = ̅̅̅̅̅̅̅
1, 𝑚𝑖 ,
𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑖𝑗 ;
(2.4.8)
𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 .
𝑝𝑙𝑗 ≥ 0,
(2.4.9)
где 𝛼𝑖𝑗𝑘 – заданные числа, такие, что:
𝛼𝑖𝑗𝑘 > 0,
∀ 𝑖 = ̅̅̅̅
1, 𝑙 ,
𝑙
∀ 𝑗 = ̅̅̅̅̅̅
1, 𝑚𝑖 ,
∀ 𝑘 = ̅̅̅̅̅̅̅
1, 𝑛𝑖𝑗 ,
(2.4.9)
𝑚𝑖 𝑛𝑖𝑗
∑ ∑ ∑ 𝛼𝑖𝑗𝑘 = 1;
(2.4.10)
𝑖=1 𝑗=1 𝑘=1
Для решения этой задачи оптимизации была написана программа в
среде
MATLAB
(Приложение
1),
реализующая
итеративный
поиск
оптимального решения при заданных ограничениях типа равенств и
неравенств с использованием метода последовательного квадратичного
программирования
как
наиболее
эффективного
метода
условной
оптимизации нелинейной функции.
44
2.5. Сравнение взвешенного арбитражного решения Нэша
с ранее рассмотренными решениями на основе численного
моделирования
Вернемся к примеру, изученному в третьем параграфе этой главы, т.е.
рассмотрим цепь поставок, изображенную на Рис. 2.3.1 с параметрами,
приведенными в табл. 2.3.1.
Для этой цепи поставок с приведенными параметрами найдем поток
𝑑 𝑁 , являющийся решением задачи (2.4.4) – (2.4.9), где в качестве весовых
коэффициентов взяты следующие числа:
1
𝛼111 = 𝛼112 = ;
3
2
𝛼211 = ;
9
(2.5.1)
𝛼311 = 𝛼312 = 𝛼313 = 𝛼314 = 𝛼321 = 𝛼322 =
1
.
54
Для наглядного сравнения приведем в одной таблице (табл. 2.5.1)
значения переменных, полученные при нахождении равновесия по Нэшу в
децентрализованной модели, а также при решении задач условной
оптимизации (2.1.1) – (2.1.5) и (2.4.4) – (2.4.9) централизованной цепи
поставок.
Таблица 2.5.1. Значения переменных и прибыли
Решение задачи
Равновесие по
максимизации
Нэшу
общей прибыли
цепи поставок
Взвешенное
арбитражное
решение Нэша
Узел 𝑥11
Объем выпуска
Цена
𝑞111 ≈ 7923
𝑞111 ≈ 27566
𝑞111 ≈ 13629
𝑞112 ≈ 7888
𝑞112 ≈ 0
𝑞112 ≈ 13126
𝑝11 ≈ 2648
𝑝11 ≈ 1553
𝑝11 ≈ 2402
45
Продолжение таблицы 2.5.1
Прибыль
𝜋111 ≈ 9092365
𝜋111 ≈ 60461350
𝜋111 ≈ 12299768
участников
𝜋112 ≈ 9013310
𝜋112 ≈ 0
𝜋112 ≈ 11780161
Узел 𝑥12
Объем выпуска
𝑞211 ≈ 9375
𝑞211 ≈ 21242
𝑞211 ≈ 21441
Цена
𝑝21 ≈ 4613
𝑝21 ≈ 0
𝑝21 ≈ 3716
𝜋211 ≈ 118664742
𝜋211 ≈ 16198593
𝜋211 ≈ 13144816
Прибыль
участников
Узел 𝑥13
𝑞311 ≈ 1606,
𝑞311 ≈ 0,
𝑞311 ≈ 696
𝑞312 ≈ 1614,
𝑞312 ≈ 0,
𝑞312 ≈ 1193
𝑞313 ≈ 1622,
𝑞313 ≈ 6324,
𝑞313 ≈ 2424
𝑞314 ≈ 1594
𝑞314 ≈ 0
𝑞314 ≈ 1001
𝑝31 ≈ 3391
𝑝31 ≈ 3419
𝑝31 ≈ 3671
𝜋311 ≈ 644733
𝜋311 ≈ 0
𝜋311 ≈ 644770
Прибыль
𝜋312 ≈ 651173
𝜋312 ≈ 0
𝜋312 ≈ 1108408
участников
𝜋313 ≈ 657644
𝜋313 ≈ −4285648
𝜋313 ≈ 2256850
𝜋314 ≈ 635134
𝜋314 ≈ 0
𝜋314 ≈ 925272
𝑞321 ≈ 4699,
𝑞321 ≈ 21242,
𝑞321 ≈ 12018
𝑞322 ≈ 4677
𝑞322 ≈ 0
𝑞322 ≈ 9423
Цена
𝑝32 ≈ 5156
𝑝32 ≈ 4088
𝑝32 ≈ 4070
Прибыль
𝜋321 ≈ 1987132
𝜋321 ≈ −24758272
𝜋321 ≈ 2821735
участников
𝜋322 ≈ 1968381
𝜋322 ≈ 0
𝜋322 ≈ 2193425
≈ 3,65 ∗ 107
≈ 4,76 ∗ 107
≈ 4,72 ∗ 107
Объем выпуска
Цена
Узел 𝑥23
Объем выпуска
Общая
прибыль цепи:
46
Из результатов, приведенных в таблице 2.5.1, видно, что взвешенное
арбитражное решение Нэша увеличило общую прибыль цепи поставок
примерно на 29% от значения прибыли на равновесии по Нэшу в
децентрализованной модели. Это чуть хуже, результата, получаемого
решением задачи максимизации общей прибыли цепи поставок, однако
взвешенное арбитражное решение Нэша гарантирует каждому из участников
положительную прибыль и не требует процедуры дележа.
47
Выводы
В рамках данной работы мы исследовали цепи поставок с древовидной
дистрибутивной структурой, где каждый узел этой цепи представляет собой
совокупность конкурирующих фирм, производящих и потребляющих
однородный продукт и имеющие разные затраты на производство, при этом
сами узлы между собой не конкурируют. Предполагалось, что рынки, на
которых реализуют товар концевые узлы, не конкурируют между собой и
функционируют по модели Курно с линейными функциями спроса. Нами
изучался вопрос координации участников, т.е. проблема выбора стратегий,
удовлетворяющих заданному критерию оптимальности, с точки зрения двух
моделей организации взаимодействия в цепи поставок: когда участники
ведут себя децентрализовано – независимо друг от друга, и централизовано –
имея общую цель.
Нами
была
произведена
математическая
формализация
многоуровневых древовидных цепей поставок с помощью древовидного
графа. Для децентрализованной модели таких цепей задача координации
участников свелась к нахождению абсолютного равновесия по Нэшу в
многоуровневой иерархической игре с полной информацией, для которой мы
построили алгоритм нахождения этого равновесного решения.
Для централизованного случая цепей поставок с рассматриваемой
структурой,
задача
координации
была
сформулирована
как
задача
нелинейной условной оптимизации. Далее нами был исследован вопрос
существования решения данной задачи и построен итеративный алгоритм его
нахождения. Численное моделирование выявило, что централизованный
подход дает увеличение общей прибыли цепи поставок в среднем на 25%, но
не гарантирует всем участникам положительную прибыль, т.е. требует
введения системы дележей.
Анализ получаемых на основе численного моделирования результатов
подтолкнул нас на поиск альтернативного подхода к координированию
48
централизованной цепи поставок. В качестве такого подхода было выбрано
взвешенное арбитражное решение Нэша, которое, как было выяснено
экспериментально, дает хоть и меньший выигрыш в прибыли, чем
рассмотренная ранее формулировка, но зато гарантирует всем участникам
положительную прибыль.
Результатом работы, помимо всего прочего, стало также написание
программы в среде MATLAB для автоматизации вычислений и нахождения
всех трех предложенных вариантов решений.
Резюмируя выше сказанное, можно заключить, что сформулированные
нами задачи полностью решены, и поставленные цели достигнуты.
49
Список литературы
1. Петросян Л.А., Зенкевич Н.А., Шевкопляс Е.В. Теория игр. Изд. 2-е.
СПб.: БХВ-Петербург, 2014. 432 с.
2. Adida E., DeMiguel V. Supply Chain competition with multiple
manufacturers and retailers // Operation Research, 2011. Vol. 59, №1. P.156172.
3. Cachon G.P. Supply chain coordination with contracts
// Handbooks in
Operations Research & Management Science, 2003. Vol. 11. P. 227-339.
4. Carr M.S., Karmarkar U.S. Competition in multi-echelon assembly supply
chains // Management Science, 2005. Vol. 51. P. 45-59
5. Cho S.-H. Horizontal mergers in multi-tier decentralized chains //
Management Science, 2014. Vol. 51. P. 45-59.
6. Corbett C., Karmarkar U.S. Competition and structure in serial supply chains
with deterministic demand // Management science, 2001. № 47. P. 966-978.
7. Kaya M., Ozer O. Pricing in business-to-business contracts: sharing risk,
profit and information // The Oxford Handbook of Pricing Management.
Oxford: Oxford University Press, 2012. P. 738-783.
8. Laseter T., Oliver K. When will supply chain management grow up? //
Strategy+business, 2003. Issue 32.
9. Tyagi R.K. On the effect of downstream entry // Management science, 1999.
№ 45. P. 59-73
10. Vickers J. Competition and regulation and vertically related markets //
Review of economics study, 1995. № 62. P. 1-17.
11. Zhou D., Karmarkar U.S., Jiang B. Competition in multi-echelon distributive
supply chains with linear demand // International Journal of Production
Research, 2015. Vol. 53, № 22. P. 6787-6807
12. Ziss S. Vertical separation and horizontal mergers // Journal of industrial
economics, 1995. №43. P. 63-75.
50
Приложения
Приложение 1. Код программы в среде MATLAB
function [] = SupplyOptimisation(Gr,N,v,a,b)
%Gr - матрица связок;N - массив данных о количестве фирм в узлах
%v – массив величин затрат на производство единицы товара
%a,b – массив параметров спроса
k = length(Gr);
%определяем кол-во концевых узлов, их номера и номера верх
лежащих узлов
kk = 0;
weight = 0;%веса для обобщенного решения
for i=1:k
if (Gr(:,i)== zeros(k,1))
kk = kk+1;
ki(kk) = i;
[~,pp] = max(Gr(i,:));
verh(kk) = pp;
weight = weight+N(i);
end
end
sequence = ki;
% сортируем концевые узлы по глубине
for j=1:length(ki)-1
sig = 0;
temp = j;
for jj=(j+1):length(ki)
if verh(jj)>verh(temp)
temp = jj;
sig = 1;
end
end
if sig==1
verh=[verh(1:j-1),verh(temp),verh(j:temp-1),
verh(temp+1:end)];
51
ki = [ki(1:j-1),ki(temp),ki(j:temp-1),ki(temp+1:end)];
end
end
%удалим повторяющиеся узлы
verhcopy = verh;i = 1;
while (i<length(verhcopy))
ii = i+1;
while (ii<=length(verhcopy))
if (verhcopy(ii)==verhcopy(i))
verhcopy(ii) = [];
else
ii = ii+1;
end
end
i = i+1;
end
for i=1:length(verhcopy)
if (verhcopy(i) == 1)
verhcopy(i) = [];
i = i-1;
end
end
if (~isempty(verhcopy))
sequence = [sequence;verhcopy,zeros(1,length(sequence)length(verhcopy))];
end
%создаем символьные переменные кол-во товара и секторные цены
qd = sym('qd',[k max(N)]);p1 = sym('p1',[1 k]);
p2 = p1;
A = ones(k,max(N));
for i=1:k
for j=(N(i)+1):max(N)
qd(i,j) = 0;
A(i,j) = 0;
52
end
end
qc = qd;
Q = sum(qc,2);
%строим функции спроса в конечных узлах
for i=1:kk
p1(ki(i)) = a(ki(i))-b(ki(i))*sum(qd(ki(i),:));
pe(i) = p2(ki(i))-p1(ki(i));
end
index = 1;
Pi = 0;
condind = 1;
%в децентрализ. модели для всех концевых узлов определяем
количество заказа
for sig = 1:length(ki)
i = ki(sig);
up = verh(sig);
uporder(index) = up;
index = index+1;
ii = 0;
for j=1:N(i)
%строим систему уравнений
PIij = qd(i,j)*(p1(i)-p1(up)-v(i,j));
DPIij(j) = diff(PIij,qd(i,j));
Pi = Pi+PIij;
nashcond(i,j) = PIij;
end
qtemp = DPIij.';
for j=1:N(i)%прямой ход
qtemp(j) = simplify(solve(qtemp(j)==0,qd(i,j)));
for jj=j+1:N(i);
qtemp(jj) = subs(qtemp(jj),qd(i,j),qtemp(j));
end
end
for j=(N(i)-1):-1:1%обратный ход
53
for jj=N(i):-1:(j+1)
qtemp(j) =
simplify(subs(qtemp(j),qd(i,jj),qtemp(jj)));
end
end
for j=1:N(i)%приписываем новое значение количествам заказа
p1 = subs(p1,qd(i,j),qtemp(j));
ii = subs(ii,qd(i,j),qtemp(j));
qd(i,j) = simplify(qtemp(j));
end
ii = simplify(ii);
Q1(i) = sum(qd(i,:));
clear DPIij;
end
%в децентр. модели определяем параметры для всех промежуточных
узлов
clear verh;
jj = 1;
ki = 0;
while(~isempty(verhcopy))
qtemp = verhcopy(1);
[~,pp(jj)] = max(Gr(qtemp,:)); %определяем верх лежащий для
verhcopy(1)
uporder(index) = pp(jj);
index = index+1;
sig = 1;
%определяем все низ лежащие узлы для verhcopy(1) и общее
кол-во заказа
kk = 0;
for j=1:k
if (Gr(j,qtemp)~=0)
Q1(qtemp) = Q1(qtemp)+Q1(j);
kk = kk-Q(j);
ii(sig) = j;
sig = sig+1;
54
end
end
QC(qtemp) = Q(qtemp)+kk;
sig = solve(sum(qd(qtemp,:))==Q1(qtemp),p1(qtemp));
for i=1:N(qtemp)%строим систему уравнений
PIij = qd(qtemp,i)*(sig-p1(pp(jj))-v(qtemp,i));
DPIij(i) = diff(PIij,qd(qtemp,i));
nashcond(qtemp,i) = qd(qtemp,i)*(p1(qtemp)-p1(pp(jj))v(qtemp,i));
Pi = Pi+nashcond(qtemp,i);
end
for i=1:N(qtemp)%прямой ход
DPIij(i) = simplify(solve(DPIij(i)==0,qd(qtemp,i)));
for j=i+1:N(qtemp)
DPIij(j) = subs(DPIij(j),qd(qtemp,i),DPIij(i));
end
end
for i=(N(qtemp)-1):-1:1%обратный ход
for j=N(qtemp):-1:(i+1)
DPIij(i) =
simplify(subs(DPIij(i),qd(qtemp,j),DPIij(j)));
end
end
for i=1:N(qtemp)%приписываем новое значение количествам
заказа
sig = subs(sig,qd(qtemp,i),DPIij(i));
qd(qtemp,i) = DPIij(i);
end
Q1 = subs(Q1,p1(qtemp),sig);
qd = subs(qd,p1(qtemp),sig);
p1 = subs(p1,p1(qtemp),sig);
p1(qtemp) = sig;
jj = jj+1;
% убираем рассмотренный узел
ki = ki+N(verhcopy(1));
55
verhcopy(1) = [];
if (isempty(verhcopy))
i =1;
weight(end+1) = ki;
ki = 0;
while (i<=length(pp))
if (pp(i) == 1)
pp(i) = [];
else
i = i+1;
end
end
verhcopy = pp;
if (~isempty(verhcopy))
sequence =
[sequence;verhcopy,zeros(1,length(sequence)-length(verhcopy))];
end
pp = [];
jj = 1;
end
end
sequence = flip(sequence);
%в децентр. модели определяем объемы для корневого узла
weight(end+1) = N(1);
ki = (flipud(weight.')).';
weight = -sort(-weight)./ki;
kk = 0;
for i=1:k
if (Gr(i,1)==1)
Q1(1) = Q1(1)+Q1(i);
kk = kk-Q(i);
end
end
QC(1) = Q(1)+kk;
i = 1;
56
while i<=length(QC)
if QC(i)==0
QC(i) = [];
else i = i+1;
end
end
QC = [QC,pe];
clear DPIij;
sig = solve(sum(qd(1,:))==Q1(1),p1(1));
verh = subs(p1(1),p1(1),sig);
%составляем систему
for i=1:N(1)
PIij = qd(1,i)*(sig-v(1,i));
DPIij(i) = diff(PIij,qd(1,i));
Pi = Pi+qd(1,i)*(p2(1)-v(1,i));
nashcond(1,i) = qd(1,i)*(p2(1)-v(1,i));
end
%прямой ход
for i=1:N(1)
DPIij(i) = simplify(solve(DPIij(i)==0,qd(1,i)));
for j=i+1:N(1)
DPIij(j) = subs(DPIij(j),qd(1,i),DPIij(i));
end
end
%обратный ход
for i=(N(1)-1):-1:1
for j=N(1):-1:(i+1)
DPIij(i) = simplify(subs(DPIij(i),qd(1,j),DPIij(j)));
end
end
%приписываем новое значение количествам заказа
for i=1:N(1)
Q1 = vpa(subs(Q1,qd(1,i),DPIij(i)));
verh = subs(verh,qd(1,i),DPIij(i));
qd(1,i) = DPIij(i);
57
end
%подставляем найденные значения в другие параметры
Q1 = vpa(subs(Q1,p1(1),verh));
qd = subs(qd,p1(1),verh);
p1 = subs(p1,p1(1),verh);
p1 = double(p1.');
NF = 1;
weight = weight/sum(N);
ncondind = 1;
%считаем прибыль
for i=1:N(1)
profit1(1,i) = qd(1,i)*(p1(1)-v(1,i));
NF = NF*((qc(1,i)*(p2(1)-v(1,i))-profit1(1,i))^weight(1));
ncond(ncondind) = nashcond(1,i)-profit1(1,i);
ncondind = ncondind+1;
end
for i=2:k
[~,jj]= max(Gr(i,:));
[ki,~] = find(sequence==i);
ki = ki+1;
for j=1:N(i)
profit1(i,j) = qd(i,j)*(p1(i)-p1(jj)-v(i,j));
NF = NF*((qc(i,j)*(p2(i)-p2(jj)-v(i,j))profit1(i,j))^weight(ki));
ncond(ncondind) = nashcond(i,j)-profit1(i,j);
ncondind = ncondind+1;
end
end
NF = -NF;
nashcond = ncond;
clear ncond*;
profit1 = double(profit1);
DecentChainProfit = sum(sum(profit1));
cond = -Pi+DecentChainProfit;
58
clear fp;clear DPIij;clear PIij;clear i;clear ii;clear
index;clear nashind;clear j;clear jj;clear kk;clear pp;clear
qtemp;clear
sig;clear temp;clear up;clear uporder;clear
verh;clear pe;clear verhcopy;clear Q2;clear Q;
for i=1:k
for j=1:max(N)
if A(i,j)~=0
cond(end+1) = -qc(i,j);
nashcond(end+1) = qc(i,j);
end
end
end
cond = [cond.';-p2.'];
nashcond = [-nashcond.';-p2.'];
Pi = simplify(-Pi);
dipData = 'dipData';
qcopy = qc;
qc = [qc,p2.'];
A = [A,ones(k,1)];
save(dipData,'Pi','cond','qc','QC','A','NF','N','nashcond');
qd = double([qd,p1]);
[a,b] = size(qc);
decent = [Q1.', vpa(p1)]
DecentChainProfit
%решение задачи максимизации общей прибыли цепи
options = optimoptions('fmincon','Algorithm','interior-point');
qcent=fmincon('OptimFun',qd,[],[],[],[],[],[],'Cons',options);
%решение задачи максимизации взвешенного произведения Нэша
options = optimoptions('fmincon','Algorithm','sqp');
qn = fmincon('NashFun',qcent,[],[],[],[],[],[],'NCons',options);
%считаем прибыли цепи
ncondind = 1;
for i=1:N(1)
profit2(1,i) = qcent(1,i)*(qcent(1,end)-v(1,i));
profit3(1,i) = qn(1,i)*(qn(1,end)-v(1,i));
end
59
for i=2:k
[~,jj]= max(Gr(i,:));
for j=1:N(i)
profit2(i,j) = qcent(i,j)*(qcent(i,end)-qcent(jj,end)v(i,j));
profit3(i,j) = qn(i,j)*(qn(i,end)-qn(jj,end)-v(i,j));
end
end
%выводим результаты
decent = [Q1.', vpa(p1)]
profit1%прибыль каждого участникав децентр. модели
DecentChainProfit%прибыль всей цепи
qcentr = [sum(qcent(:,1:(end-1)),2),qcent(:,end)]
profit2%прибыль каждого в центр. модели
CentrChainProfit2 = sum(sum(profit2)) %прибыль центр.цепи
CentrChainProfit2*100/DecentChainProfit-100
qnash = [sum(qn(:,1:(end-1)),2),qn(:,end)]
profit3 %прибыль каждого при взвеш. решении
CentrChainProfit3 = sum(sum(profit3)) %прибыль всей цепи при
взвеш. решении
CentrChainProfit3*100/DecentChainProfit-100
60
Приложение 2. Коды функций, вызываемых в программе
1. function f = OptimFun(x)
temp = load('dipData');
[a,b] = size(temp.qc);
Pi = temp.Pi;
qd = temp.qc;
for i=1:a
for j=1:b-1
Pi = subs(Pi,qd(i,j),x(i,j));
end
end
for i=1:a
Pi = subs(Pi,qd(i,b),x(i,b));
end
f = double(Pi);
end
2. function [c,ceq] = Cons(x)
temp = load('dipData');
[a,b] = size(temp.qc);
cond = temp.cond;
qd = temp.qc;
A = ones(a,b)-temp.A;
ceq = temp.QC;
N = temp.N;
cn = length(ceq)+1;
for i=1:a
for j=1:N(i)
cond = subs(cond,qd(i,j),x(i,j));
ceq = subs(ceq,qd(i,j),x(i,j));
end
for j=1:b-1
if A(i,j)~=0
ceq(cn) = x(i,j);
cn = cn+1;
end
end
end
for i=1:a
cond = subs(cond,qd(i,b),x(i,b));
ceq = subs(ceq,qd(i,b),x(i,b));
end
c = double(cond);
ceq = double(ceq);
end
61
3. function n = NashFun(x)
temp = load('dipData');
[a,b] = size(temp.qc);
NF = temp.NF;
qd = temp.qc;
N = temp.N;
for i=1:a
for j=1:N(i)
NF = subs(NF,qd(i,j),x(i,j));
end
end
for i=1:a
NF = subs(NF,qd(i,b),x(i,b));
end
n = double(NF);
n = abs(n);
end
4. function [c,ceq] = NCons(x)
temp = load('dipData');
[a,b] = size(temp.qc);
nashcond = temp.nashcond;
qd = temp.qc;
A = ones(a,b)-temp.A;
ceq = temp.QC;
N = temp.N;
cn = length(ceq)+1;
for i=1:a
for j=1:N(i)
nashcond = subs(nashcond,qd(i,j),x(i,j));
ceq = subs(ceq,qd(i,j),x(i,j));
end
for j=1:b-1
if A(i,j)~=0
ceq(cn) = x(i,j);
cn = cn+1;
end
end
end
for i=1:a
nashcond = subs(nashcond,qd(i,b),x(i,b));
ceq = subs(ceq,qd(i,b),x(i,b));
end
c = double(nashcond);
ceq = double(ceq);
end
62
Отзывы:
Авторизуйтесь, чтобы оставить отзыв