Penerapan teori algoritmik game di Python bersama Nashpy

Teori permainan adalah metode mempelajari situasi strategis di mana hasilnya tidak hanya bergantung pada tindakan Anda, tetapi juga pada apa yang akan dilakukan orang lain.

Apa itu situasi strategis? Ingat jenis-jenis struktur pasar: ada persaingan sempurna ketika semua perusahaan menentukan harga, yaitu, mereka tidak perlu khawatir tentang strategi penetapan harga, dan ada monopoli ketika hanya ada satu perusahaan di pasar yang menetapkan harga. Jadi: segala sesuatu antara persaingan sempurna dan monopoli adalah situasi strategis.

Teori permainan Algoritmik berada di persimpangan teori permainan dan ilmu komputer dan bertujuan untuk mempelajari dan membuat algoritma untuk strategi.



Di bawah kucing, sebuah cerita pendek tentang bagaimana Anda dapat menggunakan teori permainan di Python menggunakan perpustakaan Nashpy.


Dari Editor: Mengapa kita tiba-tiba ingat tentang teori permainan? Ini sederhana - terus meningkatkan platform kami dengan 900 ribu peserta, kami terus dihadapkan pada situasi di mana kami perlu mengembangkan berbagai strategi. Misalnya, di portal pakar NTI: apakah akan mengonfirmasi setiap orang dalam satu baris atau, sebaliknya, tidak mengonfirmasi siapa pun, tetapi hanya meminta konfirmasi. Contoh lain: Di Boiling Points, perjuangan untuk sumber daya diamati secara teratur, dan ada dilema - apakah kita meminta semua peralatan sekaligus, menulis bilangan real ke jumlah peserta, atau melebih-lebihkan? Selain itu, solusi dari masalah ini harus dilakukan dengan manfaat maksimal untuk semua.

Nashpy


Seperti namanya, perpustakaan menyediakan kemampuan algoritmik untuk mencapai kesetimbangan Nash - seperangkat strategi untuk dua pemain, ketika masing-masing dari mereka memilih versi perilaku yang paling optimal berdasarkan pada pengaturan yang sama untuk pemain kedua. Secara jarak jauh, ini menyerupai prinsip win-win, tetapi dengan orientasi kerugian minimal dalam situasi apa pun.

Untuk memahami konsep ini, mari kita beralih ke model populer " Prisoner Dilemma ".

Untuk menyerah atau tidak menyerah


Ada dua pemain (tahanan) yang harus memutuskan apakah akan saling bekerja sama tanpa memberi nama lain saat diinterogasi oleh polisi. Kegunaan perilaku ini akan diperkirakan tiga poin untuk setiap pemain, jika keduanya memilih jalur ini. Titik awal di sini adalah hukuman: jika para pemain saling memberikan satu sama lain, mereka dapat didakwa dengan "tindakan konspirasi," yaitu, "bandit," dan hukuman bagi mereka dalam kasus ini akan lebih berat daripada jika mereka bertindak secara terpisah.

Jika satu pemain melewati yang lain (asalkan dia tidak lulus), utilitas untuknya adalah empat poin, untuk pemain lain - nol poin. Jika para tahanan saling menyerah, manfaatnya akan menjadi satu poin per saudara.

Untuk membuatnya lebih mudah untuk membayangkan set opsi ini, letakkan di atas piring, di mana di dalam sel, tunjukkan jumlah poin untuk masing-masing tahanan, tergantung pada pilihan yang dibuat:


P1 - pemain 1, P2 - pemain 2, C - kerjasama, NC - satu pemain melewati yang lain

Pada akhirnya, pilihan terbaik bagi keduanya adalah saling menyerahkan.

Mengapa para tahanan tidak akan bekerja sama? Pertimbangkan strategi pemain 1 (P1):
  • jika pemain 2 (P2) memutuskan untuk bekerja sama dengan P1, strategi terbaik untuk P1 adalah menyerahkan pemain P2, karena 4> 3
  • jika P2 memutuskan untuk menyerahkan P1, maka P1 lebih menguntungkan untuk menyerahkan untuk bermain P2, karena 1> 0


Jadi, strategi kemenangan untuk P1 adalah (NC; NC), yang juga berlaku untuk P2. Dengan demikian, ekuilibrium Nash akan menjadi strategi (NC; NC) ketika para pemain P1 dan P2 saling menyerahkan diri kepada polisi.

Kami mentransfer teorinya ke Python


Pertama, Anda perlu menginstal modul. Ini dapat dilakukan oleh tim pip install nashpymelalui konsol Jupyter. Di akhir instalasi, Anda dapat mulai mengatur kondisi game. Untuk dua pemain dengan hasil non-nol (yang merupakan nilai default di Nashpy), Anda perlu membuat dua matriks yang mencerminkan situasi permainan untuk setiap pemain. Misalnya, untuk pemain 1, matriks akan terlihat seperti ini:

C
NC
C
3
0
NC
4
1


Untuk pemain 2, seperti ini:

C
NC
C
3
4
NC
0
1


Mari kita mereproduksi ini dengan Python:

import nashpy as nash
import numpy as ns
P1=np.array([[3,0],[4,1]])
P2=np.array([[3,4],[0,1]])
prisoner_dilemma=nash.Game(P1,P2)

prisoner_dilemma




Melihat pelat ini, kita bisa mendapatkan perkiraan kegunaan interaksi pemain. Artinya, jika P1 tidak memberikan P2, dan P2 memberikan P1, maka nilai utilitas akan menjadi (0, 4). Kita bisa mendapatkan hal yang sama dengan perhitungan matriks di Nashphy. Kami mengambil vektor tindakan sebagai sigma (kami memiliki dua di antaranya: untuk berkolaborasi atau menyerahkan tahanan lain), di mana nilai 0 ditugaskan untuk semua sel kecuali yang di mana tindakan tersebut terjadi. Kemudian, untuk pemain 1, kegunaan tindakan akan dihitung sebagai:



Untuk pemain 2:



Menerapkan formula ke skenario, ketika pemain 1 telah memilih strategi untuk bekerja sama dengan pemain lain, dan pemain 2 telah memutuskan untuk menyerahkan pemain 1, kita mendapatkan:



Periksa dengan Nashpy:





Cari tahu apakah ia menemukan algoritma Ekuilibrium Nash, yang, seperti telah kita ketahui, adalah (NC; NC):





Seperti yang Anda lihat, ekuilibrium Nash terdiri dari dua vektor, yang masing-masing mencerminkan tindakan satu pemain: untuk pemain 1, ini adalah [0; 1], di mana 1 di bidang kedua berarti bahwa pemain 1 memutuskan untuk menyerahkan pemain 2. Kami melihat gambar serupa untuk pemain kedua.

PS apa yang bisa dibaca


  1. Game Theory (Avinash Dixit dan Barry Neilbuff) adalah publikasi yang cukup baru dari MYTH Publishing House. Dalam buku tersebut, dengan contoh-contoh dari bioskop, olahraga, politik dan sejarah, penulis menunjukkan bagaimana hampir semua perusahaan dan orang-orang terlibat dalam interaksi yang dijelaskan oleh teori permainan.
  2. Strategi Konflik (Thomas Schelling). Buku ini dikhususkan untuk studi tentang logika umum perilaku peserta dalam situasi konflik - teori permainan. Dirilis pada tahun 1960, itu menjadi kontribusi mendasar bagi ilmu ini, meletakkan dasar teori perilaku strategis.
  3. Rock, Paper, Scissors: Game Theory in Everyday Life (Len Fisher) adalah buku lain tentang ilmu kolaborasi. Fisher menunjukkan bagaimana teori permainan telah membantu ahli biologi memahami evolusi kolaborasi di alam, dan bagaimana kita bisa menerapkannya dalam masyarakat kita.

Source: https://habr.com/ru/post/undefined/


All Articles