Game zero-sum dan kondisi Karush-Kun-Takker

Pada artikel ini, saya membahas masalah menemukan strategi campuran seimbang menggunakan game antagonis sebagai contoh.


Biarkan ada dua pemain, A dan B, yang berulang kali memainkan game tertentu. Setiap pemain di setiap undian mengikuti salah satu dari beberapa strategi - untuk kesederhanaan, kami menganggap bahwa jumlah strategi untuk kedua pemain bertepatan dan setara.n. Saat memilihsayapemain strategi pertama dan jstrategi pemain kedua, pemain pertama akan menerima kemenangan Sebuahsayajdan pemain kedua akan mendapatkan kerugian yang sama - ini adalah bagaimana permainan antagonis diatur. Kemenangan ini dapat ditulis sebagai matriks persegiSEBUAH:


SEBUAH=Sebuahsayaj,1saya,jn


Pemain memainkan game berulang kali dan dapat menggunakan strategi yang berbeda dalam undian yang berbeda. Strategi campuran adalah vektor probabilitas yang terkait dengan masing-masing strategi murni pemain. Setiap pemain memilih salah satu strategi dalam undian berikutnya sesuai dengan probabilitas yang ditentukan untuknya oleh strategi campurannya. Jika dilambangkan denganhal dan qstrategi campuran pemain, maka harapan matematis untuk memenangkan pemain pertama adalah


f(hal,q)=(SEBUAHhal,q)=saya=1nj=1nhalsayaqjSebuahsayaj


Sepasang strategi campuran disebut keseimbangan jika tidak ada pemain yang dapat meningkatkan kemenangan mereka dengan mengubah strategi mereka. Dengan kata lain, untuk setiap pasangan strategi lainnyahal, qdilakukan:


(SEBUAHhal,q)(SEBUAHhal,q)(SEBUAHhal,q)


Di sini kita sekarang mencari keseimbangan semacam itu.


1. Ekuilibrium


Jadi, sepasang strategi campuran membentuk keseimbangan jika perubahan dalam strategi campuran untuk pemain pertama tidak dapat meningkatkan keuntungannya, dan perubahan dalam strategi campuran untuk pemain kedua tidak dapat mengurangi kerugiannya.


Sebagai contoh, pertimbangkan matriks hasil seperti itu:


SEBUAH=(2341)


. , , . : (2 3). , , : (4 1). , , : (1 4). , . , , .


. , (1/2,1/2), (1/2,1/2). 2.5.


, , , . , .


halq, :


hal=argmakshal(SEBUAHhal,q),q=argminq(SEBUAHhal,q)


:


halsaya0,qj0,1saya,jn


saya=1nhalsaya=j=1nqj=1


, . - : , .


, , :


SEBUAH=(312-231-2-23)


, ,


saya=1nhalsaya=j=1nqj=1



hal=(0,74,0,Tanggal 29,-0,03)


- , . - --.


2. --


-, , 1951- , , 1939- .


:


msayanxRf(x)


, :


hsaya(x)0,1sayam


lj(x)=0,1jr


, , , --:


x(f(x)-saya=1mλsayahsaya(x)-j=1rμjlj(x))=0


λsayahsaya(x)=0,1sayam


λsaya0,1sayam


hsaya(x)0,1sayam


lj(x)=0,1jr


; .


— . :


  • hsaya(x)=0,
  • - hsaya(x)<0, λsaya=0.

, , , . , :


  • 2 λsaya;
  • 2, 1 5 ;
  • , 3 4;
  • 2 ;
  • , .

, . .


3.


. , , « ».


hal:


  • -(SEBUAHhal,q)min
  • -halsaya0,1sayan
  • j=1nhalsaya-1=0

q:


  • (SEBUAHhal,q)min
  • -qj0,1jn
  • j=1nqj-1=0

:


L.1(hal)=-(SEBUAHhal,q)+saya=1nαsayahalsaya-β(saya=1nhalsaya-1)


L.2(q)=(SEBUAHhal,q)+j=1nλjqj-μ(j=1nqj-1)


:


L.1(hal)halsaya=-j=1nSebuahsayajqj+αsaya-β


L.2(q)qj=saya=1nSebuahsayajhalsaya+λj-μ


--, . hal:


  • αsayahalsaya=0,1sayan
  • αsaya0,1sayan
  • saya=1nhalsaya=1
  • halsaya0,1sayan

q:


  • λjqj=0,1jn
  • λj0,1jn
  • j=1nqj=1
  • qj0,1jn

, :


j=1nSebuahsayajqj-αsaya+β=0,1sayan


saya=1nSebuahsayajhalsaya+λj-μ=0,1jn


saya=1nhalsaya=1,j=1nqj=1


4n+22n+2. :


  • αsayahalsaya=0,1sayan
  • λjqj=0,1jn

halsaya, αsaya, qj, λj. , 22n2n. 22n, 2n+22n+2( ).


, --:


αsaya,halsaya,λj,qj0,1saya,jn


.


, . saya:


j=1nSebuahsayajqj-αsaya+β=0


, αsaya,


j=1nSebuahsayajqj+β=0


αsaya, qβ:


αsaya=j=1nSebuahsayajqj+β


, : SEBUAH. , αsaya, λj: , ; . :


j=1nSebuahsayajqj+β=0,1sayan


saya=1nSebuahsayajhalsaya-μ=0,1jn


saya=1nhalsaya=1,j=1nqj=1


:


halsaya,qj0,1saya,jn


, n+1n+1. .


5.


: , . . , hal, q, hal, q:


(SEBUAHhal,q)(SEBUAHhal,q)(SEBUAHhal,q)


, , . , . , . : hal1,q1;hal2,q2;...;halk,qk— . hal,q,


saya1,...,k:(SEBUAHhalsaya,q)(SEBUAHhal,q)(SEBUAHhal,qsaya)


6.


GitHub: https://github.com/ashagraev/zero_sum_game


matrix.h : , , . . , .


kkt.cpp. . , callback'.


Mungkin ada lebih dari satu keseimbangan dalam permainan, apalagi, bisa ada banyak dari mereka. Dalam kasus apa pun, Anda harus siap dengan fakta bahwa algoritma akan menghasilkan lebih dari satu solusi (dan seluruh rangkaian solusi akan menjadi beberapa shell linier dari solusi yang diturunkan). Oleh karena itu, tanda tangan fungsi menganggap bahwa hasilnya adalah vektor strategi, dan bukan satu strategi. Dan pada intinya, dengan demikian, semua vektor ini ditampilkan .


Contoh-contoh matriks masukan untuk program ada di input.txt , dan hasil menjalankan program pada contoh-contoh ini ada di file output.txt .


All Articles