Мета та середовище
Побудувати матрицю наслідків і порівняти три правила вибору за зовнішніх сценаріїв. Потрібно знати математичне сподівання, найгірший наслідок і жаль. Створіть папку scenario-choice та demo.py; використовуйте Python 3.11 або новіший. Додаткових пакетів не потрібно. Дані демонстрації — умовні корисності форматів семінару.
Теоретичний мінімум
Рядки матриці відповідають альтернативам, стовпці — одним і тим самим станам середовища. Більша корисність бажана. Очікування зважує наслідки ймовірностями, maximin порівнює мінімуми рядків, minimax regret порівнює максимальні втрати відносно найкращого наслідку кожного стовпця. Правила виражають різне ставлення до невизначеності.
Для A=(8,6,2), B=(4,7,9) та ймовірностей (0.5,0.3,0.2) очікування дорівнюють 6.2 і 5.9. За maximin оцінки 2 і 4, тому бажаний B. За regret стовпцеві максимуми (8,7,9), а найбільший жаль 7 і 4. Перш ніж запускати програму, запишіть ці розрахунки вручну, щоб мати незалежне очікування.
Повний демонстраційний код
from math import isclose, isfinite
names = ["A", "B"]
matrix = [[8, 6, 2], [4, 7, 9]]
probabilities = [0.5, 0.3, 0.2]
def evaluate(matrix, probabilities):
states = len(probabilities)
if not matrix or states == 0 or any(len(row) != states for row in matrix):
raise ValueError("Несумісні розміри матриці")
if any(not isfinite(x) for row in matrix for x in row):
raise ValueError("Потрібні скінченні наслідки")
if any(not isfinite(p) or p < 0 for p in probabilities):
raise ValueError("Некоректні ймовірності")
if not isclose(sum(probabilities), 1.0):
raise ValueError("Сума ймовірностей має дорівнювати 1")
best = [max(row[j] for row in matrix) for j in range(states)]
return [(
sum(x * p for x, p in zip(row, probabilities)),
min(row),
max(top - x for top, x in zip(best, row)),
) for row in matrix]
for name, result in zip(names, evaluate(matrix, probabilities)):
print(name, tuple(round(x, 3) for x in result))
Очікується A (6.2, 2, 7), B (5.9, 4, 4). states визначає кількість стовпців. Перевірка довжин захищає від мовчазного обрізання при zip. Структура результату має фіксований порядок: очікування, найгірша корисність, найбільший regret. Для першого й другого більше бажано, для третього — менше. Назвіть це правило в таблиці результатів.
Покрокове виконання
Запустіть демонстрацію та порівняйте всі проміжні значення. Змініть ймовірності на (0.2,0.3,0.5). Поясніть, чому змінюється очікування, а дві інші оцінки залишаються тими самими. Додайте третю альтернативу зі сталими наслідками й перерахуйте стовпцеві максимуми. Regret залежить від усього набору альтернатив, тому стару таблицю не можна залишити без оновлення.
Передайте рядок іншої довжини й від’ємну ймовірність. Зафіксуйте очікувані помилки. Окремо перевірте суму ймовірностей 0.9: програма має відхилити дані. Автоматична нормалізація таких значень приховала б помилку постановки; якщо вона потрібна, її вводять як явне погоджене перетворення.
Самостійне завдання
Складіть задачу з чотирма альтернативами й трьома станами: формат заняття, розподіл аудиторій або план використання обладнання. Опишіть зміст корисності та спосіб отримання ймовірностей. Виконайте три критерії й поясніть, чому результати збігаються або розходяться. Підготуйте два сценарії ймовірностей і власний висновок.
Обчисліть очікуваний результат за досконалої інформації та порівняйте його з найкращим очікуванням без неї. Додаткове питання: які практичні дані можуть покращити прогноз стану? Не перетворюйте умовні бали на грошову рекомендацію без визначеної шкали. Основна задача потребує власної матриці й обґрунтування.
Типові помилки та налагодження
Негативний regret означає неправильне віднімання або максимум. Різні стани в різних рядках руйнують матрицю. Застосування maximin до витрат без зміни напряму дає інший зміст. Почніть налагодження з таблиці максимумів стовпців і ручної перевірки одного рядка; потім перевірте індекси.
Очікуваний результат і контрольні питання
Збережіть код, матрицю, ймовірності, проміжні обчислення та рекомендацію з умовами. Поясніть, чому maximin не використовує ймовірностей. Чим regret відрізняється від абсолютного наслідку? Як нова альтернатива змінює regret інших? Які припущення потрібно підтвердити перед застосуванням моделі?
Перевірка сценаріїв і формул regret
Випишіть для кожного стану найкращий наслідок та альтернативу, яка його забезпечує. Рядок regret будуйте відніманням від цього максимуму. У кожному стовпці має бути принаймні один нуль; від’ємне regret для задачі максимізації сигналізує про неправильний напрям формули або максимум.
Для власної матриці додайте випадок нічиєї в одному стані. Перевірте, що обидві найкращі альтернативи отримують нульове regret. Також включіть від’ємний наслідок, якщо ваші бали мають семантику втрат або прибутку. Метод працює з ним, але інтерпретація найгіршого стану має бути явно пояснена.
Задайте два набори ймовірностей з однаковою сумою й різним акцентом на станах. Перед запуском спрогнозуйте напрям зміни очікуваної оцінки. Зіставте прогноз з результатом та поясніть розбіжність. Не змінюйте одночасно матрицю й ймовірності в цьому експерименті.
Для підсумкового рішення напишіть припущення обраного критерію та конкретний ризик альтернативи. Якщо maximin і математичне сподівання дають різних переможців, це наслідок різного ставлення до наслідків. Потрібно обґрунтувати вибір процедури в контексті задачі. Збережіть проміжні таблиці, щоб читач міг відтворити ваш висновок без доступу до внутрішніх змінних програми.
Окремий контрольний сценарій
Для математичного сподівання перевірте крайній розподіл: одному стану надайте ймовірність 1, решті 0. Очікувана оцінка кожної альтернативи повинна дорівнювати її наслідку в цьому стані. Після перевірки поверніть погоджені ймовірності. Це простий спосіб виявити переплутаний порядок стовпців. У звіті збережіть назви станів разом із числами, щоб зміна їх порядку у файлі не стала непомітною зміною змісту моделі.
Схема процесу
Узгоджуємо однакові стани для всіх рядків.
Самоперевірка
Як обґрунтувати відповідь своїми словами?
Підсумок
Сценарна матриця дозволяє порівнювати рішення за різних правил ставлення до невизначеності. Перевірка розмірів, напрямів і ймовірностей захищає зміст обчислення. Рекомендація має називати критерій і межі припущень.