Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Інститут атомної та теплової енергетики
Кафедра цифрових технологій в енергетиці
ЛАБОРАТОРНА РОБОТА №2
з дисципліни «Комп’ютерне моделювання»
Варіант № 19
Тема: Моделювання та прийняття рішень в умовах конфлікту
Завдання: Розробити алгоритми та програмне забезпечення для розв’язку наведених задач теорії ігор. Алгоритми представити у вигляді блок-схем або діаграм діяльності UML. Програмне забезпечення розробити на будь-якій сучасній мові програмування. Знайти значення розв’язку задачі за допомогою математичних бібліотек (Excel) та порівняти його зі значеннями, отриманими в результаті роботи розробленого програмного забезпечення (тобто розрахунок в двох різних реалізаціях програмного забезпечення).
Хід роботи
Для задачі теорії ігор (номери задач визначаються як g+k+1, де – g остання цифра у номері студентського квитка, а k – передостання):
розробити модель гри (визначити гравців, описати критерій, скласти платіжну матрицю);
визначити тип гри;
звести задачу теорії ігор до задачі лінійного програмування та визначити
метод її розв’язку;
розробити алгоритм розв’язку у вигляді блок-схем або діаграм діяльності UML;
розробити програмне забезпечення для розв’язку задачі з використанням бібліотечних функцій.
Варіант № 12
У фарватері встановлена міна, вибухає після i-го проходження над нею корабля (кратність міни), i = 1,2,3. Мінний тральщик може пройти по фарватеру 3 рази для ліквідації міни. Нехай p ij - імовірність загибелі корабля на міні, виставленої на кратність i після j проходів тральщика.
/
Визначити стратегію поведінки для мінного тральщика і для установника мін.
Розробити модель гри (визначити гравців, описати критерій, скласти платіжну матрицю):
Гравець 1: Мінний тральщик (А).
Гравець 2: Міни (B).
Критерій гри - мінімізувати очікувані втрати для тральщика та максимізувати їх для міни.
Матриця:
A\B
1
2
3
?
?
1
0.5
0
0
0
2
1
0.5
0
0
3
1
1
0.5
0.5
?
?
1
1
0.5
0.5/0.5
?=
max
?
min
?
?
??
= ???
0; 0; 0.5
= 0.5 – нижня чиста ціна гри
? =
min
?
max
?
?
??
= ???
1; 1; 0.5
= 0.5 – верхня чиста ціна гри
?=?, тому ця гра має сідлову точку, яка дорівнює 0.5.
Визначити тип гри:
Тип гри - це матрична гра з нульовою сумою та повною інформацією. Це означає, що виграш одного гравця є протилежним до втрати іншого, і що обидва гравці знають платіжну матрицю та стратегії один одного.
Звести задачу теорії ігор до задачі лінійного програмування та визначити метод її розв’язку:
Гравець 1 (Мінний тральщик) прагне, щоб ціна гри була наймешою, то
х
1
+
х
2
+
х
3
→ ???
0.5
х
1
+0
х
2
+0
х
3
≤0.5,
1
х
1
+0.5
х
2
+0
х
3
≤0.5,
1
х
1
+1
х
2
+0.5
х
3
≤0.5
Гравець 2 (Міни) прагне, щоб ціна гри була максимальною, то
х
1
+
х
2
+
х
3
→ ???
0.5
х
1
+1
х
2
+1
х
3
≥0.5,
0
х
1
+0.5
х
2
+0
х
3
≥0.5,
1
х
1
+1
х
2
+0.5
х
3
≥0.5
Метод розв’язку задачі лінійного програмування - це симплекс-метод, який шукає оптимальне рішення, переходячи від однієї допустимої точки до іншої, поки не досягне максимуму або мінімуму функції цілі. Він ефективний і дозволяє швидко знаходити оптимальне рішення.
Розробити алгоритм розв’язку у вигляді блок-схем або діаграм діяльності UML:
/
Розробити програмне забезпечення для розв’язку задачі з використанням бібліотечних функцій:
# імпортувати бібліотеки
import numpy as np
import scipy.optimize as opt
import nashpy as nash
# задати платіжну матрицю
A = np.array([[0.5, 0, 0], [1, 0.5, 0], [1, 1, 0.5]])
B = -A # гра з нульовою сумою
# створити гру
game = nash.Game(A, B)
# знайти оптимальну змішану стратегію для кожного гравця
equilibrium = game.lemke_howson(initial_dropped_label=0) # використати алгоритм Лемке-Гаусона
x = equilibrium[0] # змішана стратегія тральщика
y = equilibrium[1] # змішана стратегія міни
v = game[x, y][0] # мінімальні очікувані втрати тральщика
# вивести результати
print(f"Оптимальна змішана стратегія тральщика: {x}")
print(f"Оптимальна змішана стратегія міни: {y}")
print(f"Мінімальні очікувані втрати тральщика: {v}")
/
Висновок: під час лабораторної роботи було успішно розроблено алгоритми та програмне забезпечення для вирішення задачі теорії ігор. Отримано важливі дані щодо гравців, критеріїв та типу гри, у тому числі складено платіжну матрицю. Дослідження показало наявність сідлової точки, що вказує на можливість вирішення гри в чистих стратегіях. Однак у випадку зміни вихідних даних ця стратегія може бути непридатною, тому задачу було переведено до задачі лінійного програмування. Результатом є розробка алгоритмів та програмного забезпечення на мові програмування Python, які дозволяють визначити оптимальну стратегію для цієї задачі.