Решим матричную игру в MS Excel, записав ее как задачу линейного программирования
Две отрасли могут осуществлять капитальные вложения в 3 объекта. Стратегии отраслей: i-я стратегия состоит в финансировании i-го объекта (i = 1, 2, 3). Учитывая особенности вкладов и местные условия, прибыли первой отрасли выражаются следующей матрицей:
Величина прибыли первой отрасли считается такой же величиной убытка для второй отрасли — представленная игра может рассматриваться как игра двух игроков с нулевой суммой.
Решим матричную игру в MS Excel, записав ее как задачу линейного программирования
Рассмотрим игрока А. Будем искать оптимальную смешанную стратегию игрока А: , где – частота (вероятность) использования игроком А своей i-стратегии ( ).Обозначим цену игры (средний выигрыш) – .
Чтобы свести матричную игру для игрока А к задаче линейного программирования преобразуем платежную матрицу так, чтобы все ее элементы были больше нуля – прибавим ко всем элементам матрицы число 4. Получаем преобразованную платежную матрицу:
Средний выигрыш А должен быть не меньше цены игры при любом поведении игрока В. Так, если игрок В использует свою первую стратегию, то средний выигрыш игрока А составит: , получаем неравенство . Аналогично, записав неравенства для стратегий В2 и В3, получаем систему линейных ограничений:
Из условия , разделив обе части уравнения на (цена игры больше нуля, т.к. все элементы преобразованной матрицы больше нуля), получаем целевую функцию . Цель игрока А – получить максимальный средний выигрыш, т.е. , а значит . Если обозначить (i=1, 2, 3), то целевая функция .
Перейдем в системе ограничений к переменным , разделив каждое неравенство на :
Таким образом, для нахождения оптимальной стратегии игрока А необходимо решить задачу линейного программирования:
найти значения переменных , удовлетворяющих системе ограничений
и условию , при котором функция принимает минимальное значение.
Решим задачу средствами табличного редактора MS Excel.
1. Оформим расчетную таблицу, как показано на рисунке 4:
– в ячейках В12, В13, В14 вычисляются левые части ограничений.
2. В меню СЕРВИС выбираем команду ПОИСК РЕШЕНИЯ (если нет такого пункта меню, то сначала необходимо в меню СЕРВИС выбрать команду НАДСТРОЙКИ, в появившемся диалоговом окне установить флажок на пункте ПОИСК РЕШЕНИЯ и нажать кнопку ОК; теперь в меню СЕРВИС будет команда ПОИСК РЕШЕНИЯ).
Рис. 4. Пример оформления решения матричной игры в MS Excel
3. В окне ПОИСК РЕШЕНИЯ введем необходимые параметры (см. рис. 5):
– укажем целевую ячейку (В8) – та, в которой вычисляется значение целевой функции;
– выберем переключатель МИНИМАЛЬНОМУ ЗНАЧЕНИЮ (целевую функцию необходимо минимизировать);
– в поле ИЗМЕНЯЯ ЯЧЕЙКИ укажем диапазон, который играет роль переменных, т.е. В2:В4;
– введем систему ограничений с помощью, нажав кнопку ДОБАВИТЬ. При этом появится диалоговое окно ДОБАВЛЕНИЕ ОГРАНИЧЕНИЯ (см. рис.).
Þ в поле ССЫЛКА НА ЯЧЕЙКУ вводим диапазон, где вычислены левые части неравенств из системы ограничений задачи (все три неравенства можно ввести сразу, так как они одного смысла – больше или равно) – В12:В14;
Þ в открывающемся списке выбираем знак неравенства;
Þ в поле ОГРАНИЧЕНИЕ указываем диапазон, где хранятся правые части неравенств системы ограничений задачи – C12:C14;
Þ нажимаем кнопку ДОБАВИТЬ (при этом окно не исчезнет и можно будет ввести новое ограничение).
Второе ограничение (условие неотрицательности переменных):
Þ в поле ССЫЛКА НА ЯЧЕЙКУ вводим диапазон ячеек, которые играют роль переменных – В2:В4;
4. Осталось в окне ПОИСК РЕШЕНИЯ нажать кнопку ВЫПОЛНИТЬ и увидеть результат решения задачи (см. рис. 7):
Получили: . Так как и , то , – это решение для игры, заданной матрицей В (преобразованной матрицы). Для матрицы А: компоненты смешанной стратегии не меняются, а цена игры меньше на число, которое прибавляли ко всем элементам матрицы А, т.е. на 4.
[expert_bq id=»1570″]В отличие от жадного алгоритма, динамическое программирование находит оптимальное решение — это, в данном случае, 113 монет. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Давайте изменим немного задачу: Теперь некоторые из клеток закрыты. То есть нам известно про конкретные клетки, что на них кузнечик прыгать не может. Тогда задача все еще решается так же, только нужно убедиться, что dp[x] = 0 для всех запрещенных x!Динамическое программирование — базовые понятия — Tinkoff Generation
В последней задаче было здорово найти, что в оптимальном пути черепашки набирается 113 монет, но интересно, что именно это за путь. Такую задачу называют восстановлением ответа в динамике.
[expert_bq id=»1570″]Давайте просто не считать лишних действий — если мы один раз посчитали F_k , то давайте запомним, чему оно равно, и в следующий раз, когда оно нам понадобится, мы используем его сразу. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq]
Однако это будет работать очень долго. 20-е число посчитать еще можно будет, а 40-е число — нет. И не потому, что числа большие. А потому, что мы будем делать слишком много лишней работы. Число операций будет экспоненциально относительно $N$.
Динамическое программирование
- Описать структуру оптимального решения.
- Рекурсивно определить значение оптимального решения.
- Вычислить значение оптимального решения с помощью метода восходящего анализа.
- Составить оптимальное решение на основе полученной информации.
Покажем применение еще одной команды для решения этой задачи. Пусть мы хотим получать максимальную прибыль в размере 2500000 рублей. Используем функцию Подбор параметра для определения новых значений. Выберем эту команду и заполним ячейки окна следующим образом:
[expert_bq id=»1570″]То есть число способов попасть в точку n равно сумме числа способов попасть в точку n-1 и n-2 , что позволяет выписать рекуррентное соотношение K n K n-1 K n-2. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq]
Обозначим количество маршрутов кузнечика, ведущих в точку с координатой n, как K[n]. Прежде всего заметим, что существует ровно один маршрут из точки 1 в точку 1 — он не содержит ни одного прыжка. В точку 2 можно прыгнуть единственным способом — из точки 1.
Как решать задачи в Excel — Практическое использование средства «Подбор параметра» для решения простых математических задач — Как в офисе.
- Выберите команду Кнопка Office, Параметры Excel;
- Слева в диалоговом окне выберите команду Настройки, справа — все команды и ОК;
- В окне команд выберите команду Подбор параметра и нажмите Добавить.
Давайте изменим немного задачу: Теперь некоторые из клеток закрыты. То есть нам известно про конкретные клетки, что на них кузнечик прыгать не может. Тогда задача все еще решается так же, только нужно убедиться, что dp[x] = 0 для всех запрещенных x!