Bölüm 10: Çoklu Ajan Sistemleri

Algoritmik Oyun Kuramı
Ajan özellikleriİşbirliği ve rekabetMerkezî mi dağıtık mıSözleşme ağıKoalisyon oyunlarıShapley değeriÇekirdekGüç endeksleriKamu malı ve beleşçilik
Sercan KÜLCÜ · Giresun Üniversitesi · Bilgisayar Mühendisliği

Ajanlar ve Çoklu Ajan Sistemleri

Oyunla Başlangıç: Shapley Koalisyon Oyunu

Oyunun kuralı

Her oyuncunun tek başına bir değeri vardır; bir koalisyonun değeri, üyelerin tek başına değerleri ile içindeki her ikilinin sinerji bonusunun toplamıdır. Büyük koalisyonun değeri v(N) oyunculara paylaştırılır.

Merak sorusu
  • Yandaki örnek turda 21 birim eşit bölünürse (7'şer) A haksızlığa uğrar mı?
  • Tek başına en değerli oyuncu her zaman en büyük payı mı almalı?

Shapley Koalisyon Oyunu →

Atek: 6Btek: 4Ctek: 5sinerji 4sinerji 2sinerji 0v(ABC) = 15 + 6 = 21

Ajanlar ve Çoklu Ajan Sistemleri

Öğrenme Çıktıları

Ajan ve MASAjanın temel özelliklerini ve çoklu ajan sistemlerinde işbirliği, rekabet ve koordinasyon sorunlarını açıklamak.
Görev tahsisiSözleşme ağı protokolünü (duyuru, teklif, ödül) küçük bir örnek üzerinde çalıştırmak ve optimumla karşılaştırmak.
Koalisyon oyunlarıKarakteristik fonksiyonu yazmak; Shapley değerini tüm sıralamalardaki marjinal katkılardan hesaplamak; çekirdeği sınamak; ağırlıklı oylamada güç endeksini bulmak.
Kamu malı ve beleşçilikKamu malı oyununda katkı vermemenin neden baskın strateji olduğunu sayısal olarak göstermek ve çoklu ajan sistemlerindeki karşılıklarını tanımak.

Ajanlar ve Çoklu Ajan Sistemleri

Çoklu Ajan Sistemi (Multi-Agent System, MAS) Nedir?

  • Aynı çevrede algılayan, karar veren ve eylem yapan birden fazla otonom ajandan oluşan sistem.
  • Ajanlar ortak hedefe sahip olabilir ya da kendi çıkarları doğrultusunda rekabet edebilir.
  • Her ajanın bilgisi yereldir; bu yüzden koordinasyon ve iletişim temel tasarım sorunlarıdır.
  • Örnekler: robot takımları, otonom araç filoları, dağıtık sensör ağları, trafik ve ekonomi simülasyonları.
ortak çevreAjan 1Ajan 2Ajan 3 eylem ↓algı ↑mesajlaşma (kesikli)
Oyun kuramı bağlantısı: ajanlar birbirinin kararından etkileniyorsa etkileşim bir oyundur; ajanları tasarlayan kişi ise kuralları koyan mekanizma tasarımcısıdır.

Ajanlar ve Çoklu Ajan Sistemleri

Ajan Kavramı ve Özellikleri

Wooldridge ve Jennings'in (1995) "zayıf ajan" tanımındaki dört özellik:

Otonomi (autonomy)İnsan müdahalesi olmadan kendi kararını verir, kendi durumunu yönetir.drone rotasını kendisi seçer
Reaktivite (reactivity)Çevredeki değişikliği algılar ve zamanında tepki verir.engel görünce frenler
Proaktivite (pro-activeness)Yalnızca tepki vermez; hedefe ulaşmak için inisiyatif alır, plan yapar.şarjı bitmeden istasyona gider
Sosyal yetenek (social ability)Diğer ajanlarla iletişim kurar, pazarlık eder, işbirliği yapar.görev için teklif verir
Oyun kuramında ajan = rasyonel oyuncu: tercihleri bir fayda fonksiyonuyla ifade edilir ve beklenen faydasını maksimize etmeye çalışır.

Ajanlar ve Çoklu Ajan Sistemleri

Ajan Nasıl Karar Verir? Mimariler

MimariKarar mekanizmasıGüçlü yanıÖrnek
ReaktifDurum → eylem kuralları; iç model yokHızlı, sağlamSüpürge robotu, sürü davranışı
Planlayan (deliberative)Çevre modeli + planlama / aramaUzun vadeli hedeflerKeşif robotu, lojistik planlayıcı
BDIİnanç (belief), arzu (desire), niyet (intention)İnsan benzeri akıl yürütmeHava trafik yönetimi, sanal asistan
ÖğrenenDeneyimden politika öğrenirBilinmeyen çevreye uyumOyun oynayan ajanlar
HibritReaktif alt katman + planlayıcı üst katmanHız ve öngörü birlikteOtonom araç

Mimari, ajanın içini anlatır; oyun kuramı ise ajanlar arasındaki etkileşimi inceler.

Ajanlar ve Çoklu Ajan Sistemleri

Gerçek Hayat Uygulamaları

Otonom araçlarKavşakta geçiş sırası, şerit değiştirme ve konvoy sürüşü için koordinasyon.
Drone takımlarıArama-kurtarmada bölgeleri paylaşma: görev tahsisi problemi.
Depo robotlarıYüzlerce robotun sipariş toplaması; çarpışmasız rota ve iş dağıtımı.
Çevrim içi pazar yerleriAlıcı ve satıcı ajanlar, fiyat teklifleri ve otomatik pazarlık.
Akıllı şebekeEvler, depolar ve üreticiler arasında enerji alışverişi; talep yönetimi.
SimülasyonTrafik, salgın ve ekonomi modellerinde bireylerin ajan olarak canlandırılması.
Ortak soru: kendi hedefi olan ajanlar bir araya geldiğinde sistem düzeyinde iyi bir sonuç nasıl elde edilir?

İşbirliği ve Koordinasyon

İşbirliği, Rekabet ve Karma Sistemler

İşbirlikçi MASOrtak hedef: ajanlar bilgi, görev ve kaynak paylaşır. Sorun koordinasyondur.arama-kurtarma drone takımı
Rekabetçi MASAmaçlar farklı: her ajan diğerlerinin davranışını hesaba katar. Sorun stratejidir.açık artırmada teklifçiler
Karma (mixed-motive)Bazı hedefler ortak, bazı kaynaklar rekabet konusu. Gerçek sistemlerin çoğu buradadır.aynı şebekeyi paylaşan evler
Hangisi daha verimli?Koşul
İşbirliğiHedefler örtüşüyor, iletişim ucuz, tek ajanın yapamayacağı iş var
RekabetÖzel bilgi var ve fiyat/teklif ile açığa çıkarılabilir (piyasa, açık artırma)

Yanıt, sistemin amacına ve kaynak yapısına bağlıdır; mekanizma tasarımı rekabeti iyi sonuca yönlendirmeye çalışır.

İşbirliği ve Koordinasyon

Çıkar Yelpazesi: Üç Küçük Oyun

tam işbirliğikarma güdü (mixed-motive)tam rekabetSaf koordinasyonortak çıkar: u₁ = u₂SağSolSağ(2, 2)(0, 0)Sol(0, 0)(1, 1)iki saf denge: sorun hangisi?Mahkûmun İkilemikarma çıkarSessizİhanetSessiz(−1, −1)(−3, 0)İhanet(0, −3)(−2, −2)tek denge (−2, −2), verimsizYazı-Tura Eşleştirmesaf rekabet: u₁ + u₂ = 0YazıTuraYazı(1, −1)(−1, 1)Tura(−1, 1)(1, −1)saf denge yok; karışık (½, ½)
  • Solda çıkarlar aynı: iletişim ya da ortak bir kural (konvansiyon, ör. “herkes sağdan”) yeter (koordinasyon sorunu).
  • Ortada çıkarlar kısmen çatışır: bireysel teşvik ortak iyiye ters düşer, teşvik tasarımı gerekir.
  • Sağda biri kazanırken öteki kaybeder (sıfır toplamlı): öngörülemez olmak, yani karışık strateji (mixed strategy) önemlidir.

Turuncu hücreler: saf Nash dengeleri (her iki oyuncu da en iyi tepkide).

İşbirliği ve Koordinasyon

Bireysel Rasyonellik ve Ortak Kötü Sonuç

Mahkûmun İkilemi

Ortadaki oyunda İhanet baskın stratejidir; denge (−2, −2), oysa (Sessiz, Sessiz) ikisine de (−1, −1) verirdi. Bireysel rasyonellik ortak kötü sonuç doğurur.

Bant genişliğiHer ajan kendi akışını artırınca ağ herkes için yavaşlar.
Ortak kaynakPaylaşılan işlemci, enerji ya da veri havuzu aşırı kullanılır.
Bilgi paylaşımıPaylaşmak ortak modeli iyileştirir, saklamak ajana kısa vadede avantaj sağlar.
Çok oyunculu sürümü kamu malı oyunudur; ortak kaynağın tükenmesi ise ortak mallar trajedisidir.

İşbirliği ve Koordinasyon

Karar Alma: Merkezî mi, Dağıtık mı?

Ajanlar çevresel bilgiye göre plan yapar. Kararı kim verir: tek bir merkez mi, her ajan kendisi mi?

Merkezî kontrolDağıtık (tam otonomi)
AvantajTüm bilgi tek noktada: optimum hesaplanabilir; kolay koordinasyon, düşük çatışma riskiEsnek, ölçeklenebilir, yerel olaylara hızlı tepki; bir parça bozulunca sistem çalışmaya devam eder
DezavantajTek nokta hatası ve darboğaz; ajan sayısı artınca hesaplama patlar; ajanlar özel bilgisini dürüst bildirmeyebilirYerel bilgiyle alınan kararlar uyumsuz olabilir; bencil ajanlar verimsiz dengeye gidebilir (Anarşinin Bedeli)
ÖrnekTrafik ışığı yönetim merkezi; sensör ağında merkezî sunucuDrone takımları, otonom araçlar, robotik keşif
Çoğu gerçek MAS hibrittir: ajanlar otonom karar verir, merkez kuralları, fiyatları ya da ihaleleri belirler. Sözleşme ağı buna bir örnektir.

İşbirliği ve Koordinasyon

Dağıtık Koordinasyon ve Konvansiyonlar

  • Ajanlar merkez olmadan yerel bilgi ve mesajlaşma ile karar verir.
  • Protokol; iletişim gecikmesi, hata toleransı ve ölçeklenebilirliği birlikte ele almalıdır.
  • Ortak bilgi eksikliği uyumsuz planlara yol açar: iki robot dar koridorda karşılaşınca ikisi de aynı tarafa kaçabilir.
  • Çözüm: konvansiyon / sosyal yasa ("herkes sağdan") — koordinasyon oyununda bir dengeyi önceden seçer.
R1 ╲ R2SağSol
Sağ(1, 1)(−1, −1)
Sol(−1, −1)(1, 1)

Koridor oyunu: iki saf Nash dengesi (turuncu)

İki denge de eşit iyidir; sorun hangisinin oynanacağıdır. Trafik ışığı herkese ortak bir sinyal verir ve iki dengeden hangisinin oynanacağını seçer (korelasyonlu denge).

İşbirliği ve Koordinasyon

MAS'te Oyun Kuramı ve Teşvikler

Analiz: Nash dengesiAjanların stratejik kararları dengede nereye varır? Denge verimli mi?
Tasarım: mekanizmaKurallar, ödemeler ve açık artırmalar ajanları dürüst bildirime ve işbirliğine yönlendirir.
Enerji paylaşımıDengeli teşvik (ör. fazla üretime adil ödeme) → herkes yeterli enerji alır; yanlış teşvik → herkes pik saatte çeker.
Dağıtık ağ kaynaklarıBant genişliği ve hesaplama gücü: kullanım ücreti ya da kota olmazsa aşırı kullanım.

Doğru teşvik

  • İşbirliğini artırır, çatışmayı azaltır.

Yanlış teşvik

  • Bencil davranış, aşırı risk ve beleşçilik doğurur.

İşbirliği ve Koordinasyon

İletişim, Öğrenme ve Ortaya Çıkan Davranış

İletişim ve bilgiAjanların bilgisi farklıdır; kimin neyi bildiği (bilgi yapısı) dengeyi değiştirir (eksik bilgili oyunlar). Bunun için ortak bir dil ve mesajlaşma protokolü gerekir.
Öğrenme ve uyumAjanlar geri bildirimle stratejisini günceller: en iyi tepki dinamiği, kurgusal oyun (her ajan rakibinin geçmiş hamlelerinin ortalamasına en iyi tepki verir), pekiştirmeli öğrenme. Diğer ajanlar da öğrendiği için her ajanın çevresi durağan olmayan bir çevredir; yakınsama garanti değildir.
Ortaya çıkan davranışBasit yerel kurallar sistem düzeyinde beklenmedik örüntüler doğurur: Schelling'in (1971) modelinde hafif bir komşu tercihi belirgin mahalle ayrışmasını üretir.
Sistemin davranışı tek tek ajanlara bakarak okunamaz: denge analizi ile simülasyon birlikte kullanılır. Trafik sıkışıklığı ve fiyat dalgalanmaları da ajanlar arası etkileşimden doğan örüntülerdir.

Görev Tahsisi

Görev ve Kaynak Tahsisi (Task Allocation)

  • Amaç: yetenek ve maliyetleri dikkate alarak işleri uygun ajanlara dağıtmak (ör. toplam süreyi en aza indirmek).
  • Zorluk: maliyetleri çoğu zaman yalnızca ajanın kendisi bilir (özel bilgi); ajan sayısı büyüktür; görevler zamanla gelir.
  • İyi bir yöntem çözüm kalitesini iletişim ve hesaplama maliyetiyle dengeler.
YöntemNasıl çalışır?Artı / eksi
Merkezî optimizasyonTüm maliyetler toplanır, atama problemi çözülür (Macar algoritması: n görevi n ajana en ucuz biçimde atayan, yaklaşık n³ adımlı klasik yöntem)Optimum / tüm bilgi gerekir
Sözleşme ağıGörev duyurulur, ajanlar teklif verir, en iyi teklif kazanırBasit, dağıtık / açgözlü olabilir
Açık artırmaGörevler/kaynaklar teklifle satılır; kombinatoryal açık artırmada paketlerTeşvik uyumlu tasarlanabilir
Pazar tabanlıFiyatlar arz–talebe göre ayarlanır, ajanlar fiyata tepki verirÖlçeklenir / yakınsama yavaş olabilir

Görev Tahsisi

Sözleşme Ağı Protokolü (Contract Net Protocol)

Smith (1980): görevi olan ajan yönetici (manager), işi yapabilecek ajanlar yüklenici (contractor) rolündedir. Roller görev başına değişebilir.

YöneticiYükleniciler1. Duyuru: görev + teklif son tarihi2. Teklif: maliyet / yetenek3. Ödül: sözleşme en iyi teklife4. Sonuç raporu
Yönetici maliyetleri bilmez; teklifler bu özel bilgiyi açığa çıkarır. Teklif verme ters bir açık artırmadır (en düşük teklif kazanır). Kazanana kendi teklifi ödenirse yüklenici maliyetini şişirmek ister; ikinci en düşük teklif ödenirse (Vickrey) dürüst teklif en iyisidir.

Görev Tahsisi

Sözleşme Ağı Adım Adım: 3 Görev, 3 Robot

YöneticiRobot 1Robot 2Robot 3maliyet (dk) = teklifR1R2R3G1236G2378G3549

Yönetici üç görevi (G1–G3) sırayla ihaleye çıkaracak. Her robot en çok bir görev alabilir; kendi maliyetini (tahmini süre) yalnızca robot bilir — yönetici tabloyu görmez.

YöneticiRobot 1Robot 2Robot 3duyuru: G1maliyet (dk) = teklifR1R2R3G1236G2378G3549toplam: 0 dk

Duyuru (task announcement): yönetici G1 görevini boştaki robotlara yayınlar: Robot 1, Robot 2, Robot 3.

YöneticiRobot 1Robot 2Robot 3236teklifler: G1maliyet (dk) = teklifR1R2R3G1236G2378G3549toplam: 0 dk

Teklifler (bid): her boş robot G1 için kendi maliyetini bildirir: R1 → 2, R2 → 3, R3 → 6.

YöneticiRobot 1görev: G1Robot 2Robot 3ödül: G1 → Robot 1maliyet (dk) = teklifR1R2R3G1236G2378G3549toplam: 2 dk

Ödül (award): en düşük teklif Robot 1 (2 dk) — G1 ona verilir; robot artık meşgul.

YöneticiRobot 1görev: G1Robot 2Robot 3duyuru: G2maliyet (dk) = teklifR1R2R3G1236G2378G3549toplam: 2 dk

Duyuru (task announcement): yönetici G2 görevini boştaki robotlara yayınlar: Robot 2, Robot 3.

YöneticiRobot 1görev: G1Robot 2Robot 378teklifler: G2maliyet (dk) = teklifR1R2R3G1236G2378G3549toplam: 2 dk

Teklifler (bid): her boş robot G2 için kendi maliyetini bildirir: R2 → 7, R3 → 8.

YöneticiRobot 1görev: G1Robot 2görev: G2Robot 3ödül: G2 → Robot 2maliyet (dk) = teklifR1R2R3G1236G2378G3549toplam: 9 dk

Ödül (award): en düşük teklif Robot 2 (7 dk) — G2 ona verilir; robot artık meşgul.

YöneticiRobot 1görev: G1Robot 2görev: G2Robot 3duyuru: G3maliyet (dk) = teklifR1R2R3G1236G2378G3549toplam: 9 dk

Duyuru (task announcement): yönetici G3 görevini boştaki robotlara yayınlar: Robot 3.

YöneticiRobot 1görev: G1Robot 2görev: G2Robot 39teklifler: G3maliyet (dk) = teklifR1R2R3G1236G2378G3549toplam: 9 dk

Teklifler (bid): her boş robot G3 için kendi maliyetini bildirir: R3 → 9.

YöneticiRobot 1görev: G1Robot 2görev: G2Robot 3görev: G3ödül: G3 → Robot 3maliyet (dk) = teklifR1R2R3G1236G2378G3549toplam: 18 dk

Ödül (award): en düşük teklif Robot 3 (9 dk) — G3 ona verilir; robot artık meşgul. Tek teklif kaldığı için seçim zorunlu.

YöneticiRobot 1görev: G1Robot 2görev: G2Robot 3görev: G3maliyet (dk) = teklifR1R2R3G1236G2378G3549sözleşme ağı: 18 dkoptimum: 13 dk

Sonuç: sözleşme ağı toplam 18 dk (kırmızı). Tüm 6 atamayı deneyen optimum 13 dk (kesikli mavi): G1→R3, G2→R1, G3→R2. Açgözlü sıralı ihale %38 daha pahalı.

Gösterim: kesikli ok = duyuru · turuncu = teklif · kalın kırmızı ok / çerçeve = ödül · soluk robot = meşgul · kesikli mavi çerçeve = optimum atama.

Görev Tahsisi

Kod İzleme: sozlesme_agi(gorevler, maliyet)

R1R2R3G1236G2378G3549maliyet[r][g] (dk) — yalnız robot biliratamaG1 → ?G2 → ?G3 → ?toplam = 0 dk

gorevler = [G1, G2, G3] sırayla ihaleye çıkar. Tüm robotlar boş; atama henüz yok.

R1R2R3G1236G2378G3549maliyet[r][g] (dk) — yalnız robot biliratamaG1 → ?G2 → ?G3 → ?toplam = 0 dk

Duyuru: G1. Boştaki robotlar teklif verir: R1 → 2, R2 → 3, R3 → 6.

R1R2R3G1236G2378G3549maliyet[r][g] (dk) — yalnız robot biliratamaG1 → ?G2 → ?G3 → ?toplam = 0 dk

Ödül: en düşük teklif R1 (2 dk).

R1 (meşgul)R2R3G1236G2378G3549maliyet[r][g] (dk) — yalnız robot biliratamaG1 → R1 (2 dk)G2 → ?G3 → ?toplam = 2 dk

atama[G1] = R1, toplam = 2; R1 artık meşgul.

R1 (meşgul)R2R3G1236G2378G3549maliyet[r][g] (dk) — yalnız robot biliratamaG1 → R1 (2 dk)G2 → ?G3 → ?toplam = 2 dk

Duyuru: G2. Boştaki robotlar teklif verir: R2 → 7, R3 → 8.

R1 (meşgul)R2R3G1236G2378G3549maliyet[r][g] (dk) — yalnız robot biliratamaG1 → R1 (2 dk)G2 → ?G3 → ?toplam = 2 dk

Ödül: en düşük teklif R2 (7 dk).

R1 (meşgul)R2 (meşgul)R3G1236G2378G3549maliyet[r][g] (dk) — yalnız robot biliratamaG1 → R1 (2 dk)G2 → R2 (7 dk)G3 → ?toplam = 9 dk

atama[G2] = R2, toplam = 9; R2 artık meşgul. G1'i ucuza alan R1, G2 için de en ucuzdu (3) ama artık yok.

R1 (meşgul)R2 (meşgul)R3G1236G2378G3549maliyet[r][g] (dk) — yalnız robot biliratamaG1 → R1 (2 dk)G2 → R2 (7 dk)G3 → ?toplam = 9 dk

Duyuru: G3. Boştaki robotlar teklif verir: R3 → 9.

R1 (meşgul)R2 (meşgul)R3G1236G2378G3549maliyet[r][g] (dk) — yalnız robot biliratamaG1 → R1 (2 dk)G2 → R2 (7 dk)G3 → ?toplam = 9 dk

Ödül: en düşük teklif R3 (9 dk). Tek teklif: seçim zorunlu.

R1 (meşgul)R2 (meşgul)R3 (meşgul)G1236G2378G3549maliyet[r][g] (dk) — yalnız robot biliratamaG1 → R1 (2 dk)G2 → R2 (7 dk)G3 → R3 (9 dk)toplam = 18 dk

atama[G3] = R3, toplam = 18; R3 artık meşgul.

R1R2R3G1236G2378G3549maliyet[r][g] (dk) — yalnız robot biliratamaG1 → R1 (2 dk)G2 → R2 (7 dk)G3 → R3 (9 dk)toplam = 18 dk

Sonuç 18 dk: her adımda yerel en iyi karar, ama toplam optimum değil.

def sozlesme_agi(gorevler, maliyet):
  bos = set(maliyet)
  atama, toplam = {}, 0
  for g in gorevler:
    teklif = {r: maliyet[r][g] for r in bos}
    kazanan = min(teklif, key=teklif.get)
    atama[g] = kazanan
    toplam += teklif[kazanan]
    bos.remove(kazanan)
  return atama, toplam

Görev Tahsisi

Kod İzleme: optimum(gorevler, maliyet)

R1R2R3G1236G2378G3549(R1, R2, R3)·(R1, R3, R2)·(R2, R1, R3)·(R2, R3, R1)·(R3, R1, R2)·(R3, R2, R1)·p = (G1, G2, G3) görevlerini alan robotlar; turuncu = en iyi

Merkezî çözüm: tüm maliyetleri bilen yönetici, 3 robotun 3! = 6 sıralamasını dener.

R1R2R3G1236G2378G3549(R1, R2, R3)18(R1, R3, R2)·(R2, R1, R3)·(R2, R3, R1)·(R3, R1, R2)·(R3, R2, R1)·p = (G1, G2, G3) görevlerini alan robotlar; turuncu = en iyi

p = (R1, R2, R3): t = 2 + 7 + 9 = 18 ⇒ yeni en iyi.

R1R2R3G1236G2378G3549(R1, R2, R3)18(R1, R3, R2)14(R2, R1, R3)·(R2, R3, R1)·(R3, R1, R2)·(R3, R2, R1)·p = (G1, G2, G3) görevlerini alan robotlar; turuncu = en iyi

p = (R1, R3, R2): t = 2 + 8 + 4 = 14 ⇒ yeni en iyi.

R1R2R3G1236G2378G3549(R1, R2, R3)18(R1, R3, R2)14(R2, R1, R3)15(R2, R3, R1)·(R3, R1, R2)·(R3, R2, R1)·p = (G1, G2, G3) görevlerini alan robotlar; turuncu = en iyi

p = (R2, R1, R3): t = 3 + 3 + 9 = 15 ≥ 14: değişmez.

R1R2R3G1236G2378G3549(R1, R2, R3)18(R1, R3, R2)14(R2, R1, R3)15(R2, R3, R1)16(R3, R1, R2)·(R3, R2, R1)·p = (G1, G2, G3) görevlerini alan robotlar; turuncu = en iyi

p = (R2, R3, R1): t = 3 + 8 + 5 = 16 ≥ 14: değişmez.

R1R2R3G1236G2378G3549(R1, R2, R3)18(R1, R3, R2)14(R2, R1, R3)15(R2, R3, R1)16(R3, R1, R2)13(R3, R2, R1)·p = (G1, G2, G3) görevlerini alan robotlar; turuncu = en iyi

p = (R3, R1, R2): t = 6 + 3 + 4 = 13 ⇒ yeni en iyi.

R1R2R3G1236G2378G3549(R1, R2, R3)18(R1, R3, R2)14(R2, R1, R3)15(R2, R3, R1)16(R3, R1, R2)13(R3, R2, R1)18p = (G1, G2, G3) görevlerini alan robotlar; turuncu = en iyi

p = (R3, R2, R1): t = 6 + 7 + 5 = 18 ≥ 13: değişmez.

R1R2R3G1236G2378G3549(R1, R2, R3)18(R1, R3, R2)14(R2, R1, R3)15(R2, R3, R1)16(R3, R1, R2)13(R3, R2, R1)18p = (G1, G2, G3) görevlerini alan robotlar; turuncu = en iyi

Optimum 13 dk: G1→R3, G2→R1, G3→R2; sözleşme ağı 18 dk (%38 fazla). Ama n robot için n! atama: n = 10'da 3 628 800 (Macar algoritması O(n³) ile çözer).

def optimum(gorevler, maliyet):
  en_iyi = None
  for p in permutations(maliyet):
    t = sum(maliyet[r][g]
            for g, r in zip(gorevler, p))
    if en_iyi is None or t < en_iyi[0]:
      en_iyi = (t, p)
  return en_iyi

Görev Tahsisi

Sözleşme Ağı: Güçlü ve Zayıf Yanlar

Güçlü yanlar

  • Dağıtık: yönetici maliyet tablosunu bilmeden iyi bir atama yapar.
  • Görev başına mesaj sayısı O(n): duyuru + n teklif + ödül.
  • Yeni robot eklemek kolay; bozulan robotun görevi yeniden ihaleye çıkar.

Zayıf yanlar

  • Açgözlü ve sıralı: örnekte 18 dk, optimum 13 dk (%38 fazla). G1'i ucuza alan R1, G2 için en iyi aday olduğu hâlde meşgul kaldı.
  • Robotlar maliyetini stratejik olarak şişirebilir.
  • Görev sırası sonucu değiştirir.
İyileştirmeler: yeniden ihale (atamaları takasla düzeltme), kombinatoryal açık artırma (robotlar görev paketlerine teklif verir), dürüst teklif için ikinci fiyat / VCG ödemeleri.

Koalisyon Oyunları

Koalisyon Oluşumu (Coalition Formation)

  • Tek başına hedefe ulaşamayan ajanlar geçici veya kalıcı koalisyonlar kurabilir: kargo firmaları araç paylaşır, drone'lar ağır yükü birlikte taşır.
  • Bu oyunlar işbirlikçidir: bağlayıcı anlaşma yapılabilir; soru "hangi strateji?" değil, "kim kiminle birleşir ve kazanç nasıl paylaşılır?"
  • Paylaşım adil değilse koalisyon dağılır: kararlılık doğrudan paylaşım kuralına bağlıdır.
Shapley değeriAdalet: herkes ortalama marjinal katkısı kadar alır.
Çekirdek (core)Kararlılık: hiçbir alt grup ayrılarak daha fazlasını alamaz.

Koalisyon Oyunları

Koalisyon Yapıları: Kim Kiminle?

{A}: 10{B}: 20{C}: 30toplam 60{B, C}: 70{A}: 10toplam 80{A, C}: 60{B}: 20toplam 80{A, B}: 50{C}: 30toplam 80{A, B, C}: 120toplam 120
  • Koalisyon yapısı: ajanların ayrık koalisyonlara bölünmesi. Toplum için soru: toplam değeri en büyük yapı hangisi?
  • Yapı sayısı, n ajanı boş olmayan ayrık gruplara bölmenin yol sayısıdır (Bell sayısı): n = 3 için 5 n = 4 için 15 n = 8 için 4 140 n = 10 için 115 975.
  • Örnekte oyun süperadditif: birleşmek hiç zarar vermez, en iyi yapı büyük koalisyon {A, B, C} (120).
  • Genel durumda en iyi yapıyı bulmak NP-zordur (Sandholm vd., 1999); geriye kalan soru 120'nin paylaşımı.

Koalisyon Oyunları

Koalisyon Oyunu ve Karakteristik Fonksiyon

  • Oyuncular kümesi N = {1, …, n}; her koalisyon S ⊆ N için v(S): S'nin üyeleri birlikte, diğerlerinden bağımsız olarak elde edebileceği toplam değer.
  • v her koalisyona, o grubun birlikte kazanabileceği toplam değeri atar; boş koalisyonun değeri 0'dır. v'ye karakteristik fonksiyon denir. Kazanç grup içinde serbestçe paylaştırılabildiği için bu oyunlara aktarılabilir faydalı (TU) oyun denir.
  • Süperadditif: ayrık S, T için v(S ∪ T) ≥ v(S) + v(T) → birleşmek zarar vermez; büyük koalisyon N oluşur.
  • Örnekte üç lojistik firması A, B, C: birlikte 120, en iyi ikili 70, tek başına en fazla 30 kazanır.
Sv(S)
{A}10
{B}20
{C}30
{A, B}50
{A, C}60
{B, C}70
{A, B, C}120

v(S) — kâr (bin TL)

Koalisyon Oyunları

120 Nasıl Paylaşılmalı?

Bir paylaşım (imputation) x = (xA, xB, xC): toplamı v(N) = 120 (verimlilik) ve herkes en az tek başına değerini alır (bireysel rasyonellik).

ÖnerixAxBxCGerekçe / sorun
Eşit bölüşüm404040Basit; ama C'nin daha fazla katkısını yok sayar
Tek başına değerle orantılı (10 : 20 : 30)204060Yalnızca v({i})'ye bakar; sinerjileri görmez
Güçlü C'nin önerisi102585A ve B birlikte 50 alabilir; kabul etmezler
Shapley değeri304050Ortalama marjinal katkı
İki ölçüt: paylaşım adil mi (Shapley) ve kararlı mı (çekirdek)?

Koalisyon Oyunları

Shapley Değeri (Shapley Value)

  • Oyuncular rastgele bir sırayla gelip koalisyona katılır. Her oyuncuya, geldiği anda kattığı değer (marjinal katkı) verilir.
  • Shapley değeri: n! sıranın hepsi üzerinden ortalama marjinal katkı.
  • Hesap maliyeti: n! sıra (ya da 2n−1 alt küme); büyük n için örnekleme ile yaklaşık hesaplanır.
  • Shapley (1953): yandaki dört aksiyomu sağlayan tek kural. Model açıklamada da kullanılır (SHAP: bir modelin kararını özelliklerin katkılarına bölen yöntem).
VerimlilikΣ φi = v(N).
SimetriAynı katkıyı yapan iki oyuncu aynı payı alır.
Kukla oyuncuHiçbir koalisyona katkısı yoksa φi = 0.
Toplamsallıkİki oyunun değerleri toplanırsa Shapley payları da toplanır.

Koalisyon Oyunları

Shapley Değeri Adım Adım: 6 Sıralama

Sv(S)
{A}10
{B}20
{C}30
{A, B}50
{A, C}60
{B, C}70
{A, B, C}120

v(S)

sıraABC
A → B → C···
A → C → B···
B → A → C···
B → C → A···
C → A → B···
C → B → A···
toplam···
φ = toplam / 6···

Her sırada ajanlar tek tek gelir; her birine geldiği anda koalisyona kattığı değer (marjinal katkı) yazılır.

sıraABC
A → B → C104070
A → C → B···
B → A → C···
B → C → A···
C → A → B···
C → B → A···
toplam···
φ = toplam / 6···

Sıra A → B → C — A: 10 − 0 = 10; B: 50 − 10 = 40; C: 120 − 50 = 70. Satır toplamı 120 = v(ABC).

sıraABC
A → B → C104070
A → C → B106050
B → A → C···
B → C → A···
C → A → B···
C → B → A···
toplam···
φ = toplam / 6···

Sıra A → C → B — A: 10 − 0 = 10; C: 60 − 10 = 50; B: 120 − 60 = 60. Satır toplamı 120 = v(ABC).

sıraABC
A → B → C104070
A → C → B106050
B → A → C302070
B → C → A···
C → A → B···
C → B → A···
toplam···
φ = toplam / 6···

Sıra B → A → C — B: 20 − 0 = 20; A: 50 − 20 = 30; C: 120 − 50 = 70. Satır toplamı 120 = v(ABC).

sıraABC
A → B → C104070
A → C → B106050
B → A → C302070
B → C → A502050
C → A → B···
C → B → A···
toplam···
φ = toplam / 6···

Sıra B → C → A — B: 20 − 0 = 20; C: 70 − 20 = 50; A: 120 − 70 = 50. Satır toplamı 120 = v(ABC).

sıraABC
A → B → C104070
A → C → B106050
B → A → C302070
B → C → A502050
C → A → B306030
C → B → A···
toplam···
φ = toplam / 6···

Sıra C → A → B — C: 30 − 0 = 30; A: 60 − 30 = 30; B: 120 − 60 = 60. Satır toplamı 120 = v(ABC).

sıraABC
A → B → C104070
A → C → B106050
B → A → C302070
B → C → A502050
C → A → B306030
C → B → A504030
toplam···
φ = toplam / 6···

Sıra C → B → A — C: 30 − 0 = 30; B: 70 − 30 = 40; A: 120 − 70 = 50. Satır toplamı 120 = v(ABC).

sıraABC
A → B → C104070
A → C → B106050
B → A → C302070
B → C → A502050
C → A → B306030
C → B → A504030
toplam180240300
φ = toplam / 6304050

Ortalama marjinal katkı: φ = (30, 40, 50). Toplam 120: verimlilik aksiyomu sağlanır.

Koalisyon Oyunları

Kod İzleme: shapley(N, v) (1/2)

sıra (katılım sırası)S = ∅φA 0φB 0φC 0phi (toplam katkı, henüz bölünmedi)

phi sözlüğü sıfırlanır; permutations (itertools) 3! = 6 sırayı üretir.

sıra (katılım sırası)ABCS = ∅φA 0φB 0φC 0phi (toplam katkı, henüz bölünmedi)

1. sıra (A, B, C): ajanlar bu sırayla gelir. S boş koalisyonla başlar.

sıra (katılım sırası)ABCS = {A}φA 10φB 0φC 0phi (toplam katkı, henüz bölünmedi)

A katılır: katkı = v(A) − v(∅) = 10 − 0 = 10; phi[A] = 10.

sıra (katılım sırası)ABCS = {A, B}φA 10φB 40φC 0phi (toplam katkı, henüz bölünmedi)

B katılır: katkı = v(AB) − v(A) = 50 − 10 = 40; phi[B] = 40.

sıra (katılım sırası)ABCS = {A, B, C}φA 10φB 40φC 70phi (toplam katkı, henüz bölünmedi)

C katılır: katkı = v(ABC) − v(AB) = 120 − 50 = 70; phi[C] = 70.

sıra (katılım sırası)ACBS = ∅φA 10φB 40φC 70phi (toplam katkı, henüz bölünmedi)

2. sıra (A, C, B): ajanlar bu sırayla gelir. S boş koalisyonla başlar.

sıra (katılım sırası)ACBS = {A}φA 20φB 40φC 70phi (toplam katkı, henüz bölünmedi)

A katılır: katkı = v(A) − v(∅) = 10 − 0 = 10; phi[A] = 20.

sıra (katılım sırası)ACBS = {A, C}φA 20φB 40φC 120phi (toplam katkı, henüz bölünmedi)

C katılır: katkı = v(AC) − v(A) = 60 − 10 = 50; phi[C] = 120.

sıra (katılım sırası)ACBS = {A, B, C}φA 20φB 100φC 120phi (toplam katkı, henüz bölünmedi)

B katılır: katkı = v(ABC) − v(AC) = 120 − 60 = 60; phi[B] = 100.

sıra (katılım sırası)BACS = ∅φA 20φB 100φC 120phi (toplam katkı, henüz bölünmedi)

3. sıra (B, A, C): ajanlar bu sırayla gelir. S boş koalisyonla başlar.

sıra (katılım sırası)BACS = {B}φA 20φB 120φC 120phi (toplam katkı, henüz bölünmedi)

B katılır: katkı = v(B) − v(∅) = 20 − 0 = 20; phi[B] = 120.

sıra (katılım sırası)BACS = {A, B}φA 50φB 120φC 120phi (toplam katkı, henüz bölünmedi)

A katılır: katkı = v(AB) − v(B) = 50 − 20 = 30; phi[A] = 50.

sıra (katılım sırası)BACS = {A, B, C}φA 50φB 120φC 190phi (toplam katkı, henüz bölünmedi)

C katılır: katkı = v(ABC) − v(AB) = 120 − 50 = 70; phi[C] = 190.

def shapley(N, v):
  phi = {i: 0 for i in N}
  siralar = list(permutations(N))
  for sira in siralar:
    S = frozenset()
    for i in sira:
      katki = v[S | {i}] - v[S]
      phi[i] += katki
      S = S | {i}
  return {i: phi[i] / len(siralar) for i in N}

Koalisyon Oyunları

Kod İzleme: shapley(N, v) (2/2)

sıra (katılım sırası)BCAS = ∅φA 50φB 120φC 190phi (toplam katkı, henüz bölünmedi)

4. sıra (B, C, A): ajanlar bu sırayla gelir. S boş koalisyonla başlar.

sıra (katılım sırası)BCAS = {B}φA 50φB 140φC 190phi (toplam katkı, henüz bölünmedi)

B katılır: katkı = v(B) − v(∅) = 20 − 0 = 20; phi[B] = 140.

sıra (katılım sırası)BCAS = {B, C}φA 50φB 140φC 240phi (toplam katkı, henüz bölünmedi)

C katılır: katkı = v(BC) − v(B) = 70 − 20 = 50; phi[C] = 240.

sıra (katılım sırası)BCAS = {A, B, C}φA 100φB 140φC 240phi (toplam katkı, henüz bölünmedi)

A katılır: katkı = v(ABC) − v(BC) = 120 − 70 = 50; phi[A] = 100.

sıra (katılım sırası)CABS = ∅φA 100φB 140φC 240phi (toplam katkı, henüz bölünmedi)

5. sıra (C, A, B): ajanlar bu sırayla gelir. S boş koalisyonla başlar.

sıra (katılım sırası)CABS = {C}φA 100φB 140φC 270phi (toplam katkı, henüz bölünmedi)

C katılır: katkı = v(C) − v(∅) = 30 − 0 = 30; phi[C] = 270.

sıra (katılım sırası)CABS = {A, C}φA 130φB 140φC 270phi (toplam katkı, henüz bölünmedi)

A katılır: katkı = v(AC) − v(C) = 60 − 30 = 30; phi[A] = 130.

sıra (katılım sırası)CABS = {A, B, C}φA 130φB 200φC 270phi (toplam katkı, henüz bölünmedi)

B katılır: katkı = v(ABC) − v(AC) = 120 − 60 = 60; phi[B] = 200.

sıra (katılım sırası)CBAS = ∅φA 130φB 200φC 270phi (toplam katkı, henüz bölünmedi)

6. sıra (C, B, A): ajanlar bu sırayla gelir. S boş koalisyonla başlar.

sıra (katılım sırası)CBAS = {C}φA 130φB 200φC 300phi (toplam katkı, henüz bölünmedi)

C katılır: katkı = v(C) − v(∅) = 30 − 0 = 30; phi[C] = 300.

sıra (katılım sırası)CBAS = {B, C}φA 130φB 240φC 300phi (toplam katkı, henüz bölünmedi)

B katılır: katkı = v(BC) − v(C) = 70 − 30 = 40; phi[B] = 240.

sıra (katılım sırası)CBAS = {A, B, C}φA 180φB 240φC 300phi (toplam katkı, henüz bölünmedi)

A katılır: katkı = v(ABC) − v(BC) = 120 − 70 = 50; phi[A] = 180.

sıra (katılım sırası)S = ∅φA 30φB 40φC 50φ = toplam / 6

Toplamlar 6'ya bölünür: φA = 180/6 = 30, φB = 240/6 = 40, φC = 300/6 = 50. Toplam 120 = v(ABC).

def shapley(N, v):
  phi = {i: 0 for i in N}
  siralar = list(permutations(N))
  for sira in siralar:
    S = frozenset()
    for i in sira:
      katki = v[S | {i}] - v[S]
      phi[i] += katki
      S = S | {i}
  return {i: phi[i] / len(siralar) for i in N}

Koalisyon Oyunları

Oyuna Dönüş: Shapley Koalisyon Oyunu

Kuramın cevabı

Oyunun ikili sinerji modelinde marjinal katkıların ortalaması kısa bir kurala iner: φi = tek başına değer + içinde yer aldığı her sinerjinin yarısı.

OyuncuTekSinerji payıφEşit pay
A64/2 + 2/2 = 397
B44/2 + 0 = 267
C52/2 + 0 = 167
Toplam1562121

Altı katılım sırasının ortalaması da (9, 6, 6) verir. Eşit bölüşümde A, katkısının 2 altında kalır.

Gerçekte

Üç kişilik koalisyon oyunlarında başkaları için “adil” paylaşım öneren deneklerin seçimleri, Shapley değeri ile eşit bölüşümün bir karışımı olarak en iyi açıklanmıştır (de Clippel ve Rozen, 2022). Örnekte yarı yarıya karışım (8; 6,5; 6,5) verir.

Oyundaki eşit bölüşüm hatası da bu farkı ölçer: |7 − 9| + |7 − 6| + |7 − 6| = 4.

Katkıya göre paylaşım (Shapley) ile eşit paylaşım çoğu zaman ayrışır; hangisinin adil sayılacağı bağlama bağlıdır.

Koalisyon Oyunları

Çekirdek (Core)

  • x paylaşımı çekirdektedir ⇔ Σi∈N xi = v(N) ve her S ⊆ N için Σi∈S xi ≥ v(S).
  • Yani hiçbir koalisyon büyük koalisyondan ayrılarak (block) üyelerine daha fazlasını sağlayamaz.
  • Çekirdek bir doğrusal eşitsizlikler sistemidir (Gillies, 1959): boş, tek nokta ya da bir bölge olabilir.
Tekli kısıtlarxA ≥ 10, xB ≥ 20, xC ≥ 30
İkili kısıtlarxA+xB ≥ 50, xA+xC ≥ 60, xB+xC ≥ 70
VerimlilikxA+xB+xC = 120
Shapley adalet, çekirdek kararlılık ölçütüdür; ikisi her zaman örtüşmez. Dışbükey (convex) oyun: bir oyuncunun katkısı, katıldığı koalisyon büyüdükçe azalmaz. Örneğimiz böyle bir oyun; bu oyunlarda Shapley paylaşımı her zaman çekirdektedir (Shapley, 1971).

Koalisyon Oyunları

Çekirdeğin Geometrisi Adım Adım

A: (70, 20, 30)B: (10, 80, 30)C: (10, 20, 90)paylaşım x = (xA, xB, xC), toplam 120üçgen: xA ≥ 10, xB ≥ 20, xC ≥ 30· A+B ≥ 50 ⇔ xC ≤ 70· A+C ≥ 60 ⇔ xB ≤ 60· B+C ≥ 70 ⇔ xA ≤ 50

Bireysel rasyonel ve verimli tüm paylaşımlar bir üçgendir; köşede bir ajan artan 60'ın hepsini alır.

A: (70, 20, 30)B: (10, 80, 30)C: (10, 20, 90)paylaşım x = (xA, xB, xC), toplam 120üçgen: xA ≥ 10, xB ≥ 20, xC ≥ 30✓ A+B ≥ 50 ⇔ xC ≤ 70· A+C ≥ 60 ⇔ xB ≤ 60· B+C ≥ 70 ⇔ xA ≤ 50

{A, B}: xA + xB ≥ 50 ⇔ xC ≤ 70: C'ye 70'ten fazlası verilirse A ve B ayrılıp kendi 50'lerini alır. C köşesi kesilir.

A: (70, 20, 30)B: (10, 80, 30)C: (10, 20, 90)paylaşım x = (xA, xB, xC), toplam 120üçgen: xA ≥ 10, xB ≥ 20, xC ≥ 30✓ A+B ≥ 50 ⇔ xC ≤ 70✓ A+C ≥ 60 ⇔ xB ≤ 60· B+C ≥ 70 ⇔ xA ≤ 50

{A, C}: xA + xC ≥ 60 ⇔ xB ≤ 60: B köşesi kesilir.

A: (70, 20, 30)B: (10, 80, 30)C: (10, 20, 90)paylaşım x = (xA, xB, xC), toplam 120üçgen: xA ≥ 10, xB ≥ 20, xC ≥ 30✓ A+B ≥ 50 ⇔ xC ≤ 70✓ A+C ≥ 60 ⇔ xB ≤ 60✓ B+C ≥ 70 ⇔ xA ≤ 50çekirdek: 6 köşeli çokgenköşeler: (10, 40, 70), (10, 60, 50), (30, 20, 70) (30, 60, 30), (50, 20, 50), (50, 40, 30)

{B, C}: xB + xC ≥ 70 ⇔ xA ≤ 50: A köşesi de kesilir. Kalan turuncu altıgen çekirdektir.

A: (70, 20, 30)B: (10, 80, 30)C: (10, 20, 90)φ Shapley (30, 40, 50)eşit (40, 40, 40)y (10, 25, 85)paylaşım x = (xA, xB, xC), toplam 120üçgen: xA ≥ 10, xB ≥ 20, xC ≥ 30✓ A+B ≥ 50 ⇔ xC ≤ 70✓ A+C ≥ 60 ⇔ xB ≤ 60✓ B+C ≥ 70 ⇔ xA ≤ 50çekirdek: 6 köşeli çokgenköşeler: (10, 40, 70), (10, 60, 50), (30, 20, 70) (30, 60, 30), (50, 20, 50), (50, 40, 30)

φ = (30, 40, 50) ve eşit bölüşüm çekirdekte (mavi). y = (10, 25, 85) dışarıda (kırmızı): xA + xB = 35 < 50.

Koalisyon Oyunları

Çekirdek Kontrolü Adım Adım

koalisyon Skısıtx = (30, 40, 50)y = (10, 25, 85)
{A}Σ ≥ 10··
{B}Σ ≥ 20··
{C}Σ ≥ 30··
{A, B}Σ ≥ 50··
{A, C}Σ ≥ 60··
{B, C}Σ ≥ 70··
{A, B, C}toplam = 120··

Bir paylaşım çekirdekteyse hiçbir koalisyon ayrılıp kendi değerini (v(S)) alarak daha iyi duruma geçemez. İki paylaşımı 7 kısıtla sınayalım.

koalisyon Skısıtx = (30, 40, 50)y = (10, 25, 85)
{A}Σ ≥ 1030 ✓10 ✓
{B}Σ ≥ 20··
{C}Σ ≥ 30··
{A, B}Σ ≥ 50··
{A, C}Σ ≥ 60··
{B, C}Σ ≥ 70··
{A, B, C}toplam = 120··

{A}: v(A) = 10. x için 30 ≥ 10 ✓; y için 10 ≥ 10 ✓.

koalisyon Skısıtx = (30, 40, 50)y = (10, 25, 85)
{A}Σ ≥ 1030 ✓10 ✓
{B}Σ ≥ 2040 ✓25 ✓
{C}Σ ≥ 30··
{A, B}Σ ≥ 50··
{A, C}Σ ≥ 60··
{B, C}Σ ≥ 70··
{A, B, C}toplam = 120··

{B}: v(B) = 20. x için 40 ≥ 20 ✓; y için 25 ≥ 20 ✓.

koalisyon Skısıtx = (30, 40, 50)y = (10, 25, 85)
{A}Σ ≥ 1030 ✓10 ✓
{B}Σ ≥ 2040 ✓25 ✓
{C}Σ ≥ 3050 ✓85 ✓
{A, B}Σ ≥ 50··
{A, C}Σ ≥ 60··
{B, C}Σ ≥ 70··
{A, B, C}toplam = 120··

{C}: v(C) = 30. x için 50 ≥ 30 ✓; y için 85 ≥ 30 ✓.

koalisyon Skısıtx = (30, 40, 50)y = (10, 25, 85)
{A}Σ ≥ 1030 ✓10 ✓
{B}Σ ≥ 2040 ✓25 ✓
{C}Σ ≥ 3050 ✓85 ✓
{A, B}Σ ≥ 5070 ✓35 ✗
{A, C}Σ ≥ 60··
{B, C}Σ ≥ 70··
{A, B, C}toplam = 120··

{A, B}: v(AB) = 50. x için 70 ≥ 50 ✓; y için 35 ≥ 50 ✗. {A, B} birlikte ayrılırsa 50 alır: y'yi engeller (block).

koalisyon Skısıtx = (30, 40, 50)y = (10, 25, 85)
{A}Σ ≥ 1030 ✓10 ✓
{B}Σ ≥ 2040 ✓25 ✓
{C}Σ ≥ 3050 ✓85 ✓
{A, B}Σ ≥ 5070 ✓35 ✗
{A, C}Σ ≥ 6080 ✓95 ✓
{B, C}Σ ≥ 70··
{A, B, C}toplam = 120··

{A, C}: v(AC) = 60. x için 80 ≥ 60 ✓; y için 95 ≥ 60 ✓.

koalisyon Skısıtx = (30, 40, 50)y = (10, 25, 85)
{A}Σ ≥ 1030 ✓10 ✓
{B}Σ ≥ 2040 ✓25 ✓
{C}Σ ≥ 3050 ✓85 ✓
{A, B}Σ ≥ 5070 ✓35 ✗
{A, C}Σ ≥ 6080 ✓95 ✓
{B, C}Σ ≥ 7090 ✓110 ✓
{A, B, C}toplam = 120··

{B, C}: v(BC) = 70. x için 90 ≥ 70 ✓; y için 110 ≥ 70 ✓.

koalisyon Skısıtx = (30, 40, 50)y = (10, 25, 85)
{A}Σ ≥ 1030 ✓10 ✓
{B}Σ ≥ 2040 ✓25 ✓
{C}Σ ≥ 3050 ✓85 ✓
{A, B}Σ ≥ 5070 ✓35 ✗
{A, C}Σ ≥ 6080 ✓95 ✓
{B, C}Σ ≥ 7090 ✓110 ✓
{A, B, C}toplam = 120120 ✓120 ✓

{A, B, C}: v(ABC) = 120. x için 120 = 120 ✓; y için 120 = 120 ✓.

koalisyon Skısıtx = (30, 40, 50)y = (10, 25, 85)
{A}Σ ≥ 1030 ✓10 ✓
{B}Σ ≥ 2040 ✓25 ✓
{C}Σ ≥ 3050 ✓85 ✓
{A, B}Σ ≥ 5070 ✓35 ✗
{A, C}Σ ≥ 6080 ✓95 ✓
{B, C}Σ ≥ 7090 ✓110 ✓
{A, B, C}toplam = 120120 ✓120 ✓

Sonuç: Shapley paylaşımı x çekirdekte; y ise {A, B} tarafından engellendiği için çekirdek dışında. (Oyun dışbükey olduğundan Shapley değeri çekirdektedir.)

Koalisyon Oyunları

Çekirdeği Boş Bir Oyun: Çoğunluk Oyunu

  • Üç ajan 1 birimlik ödülü paylaşacak; herhangi iki ajan anlaşırsa ödülü alır: v(S) = 1 (|S| ≥ 2), aksi hâlde 0.
  • Çekirdek kısıtları: xA+xB ≥ 1, xA+xC ≥ 1, xB+xC ≥ 1.
  • Toplayınca 2(xA+xB+xC) ≥ 3, yani toplam ≥ 3/2. Ama toplam = 1 olmalı ⇒ çekirdek boş.
  • Her paylaşımda en az bir çift ≤ 2/3 alır ve üçüncüyü dışlayıp 1'i paylaşmak ister: sonsuz pazarlık.
Shapleyφ = (1/3, 1/3, 1/3): adil ama kararlı değil.
DersKararlı paylaşım her oyunda yoktur. O zaman “hiçbir grup ayrılarak çok fazla kazanamasın” gibi gevşetilmiş kurallar kullanılır (ör. ε-çekirdek: hiçbir koalisyon ayrılarak ε'dan fazla kazanamaz).

Koalisyon Oyunları

Ağırlıklı Oylama: Ağırlık ≠ Güç

sandalyeShapley–ShubikBanzhafA 50A 2/3A 3/5B 49B 1/6B 1/5C 1C 1/6C 1/5kota 51
  • Ağırlıklı oylama oyunu [q; w1, …, wn]: koalisyon ağırlıkları toplamı q'ya ulaşırsa kazanır, v(S) = 1; yoksa 0.
  • Shapley–Shubik endeksi (1954) = bu oyunun Shapley değeri: i'nin kilit (pivotal) olduğu sıraların oranı.
  • Meclis [51; 50, 49, 1]: B ile C, 48 sandalye farkına rağmen eşit güçtedir (1/6); Banzhaf endeksi kritik üyelikleri sayar: A üç kazanan koalisyonda ({A, B}, {A, C}, {A, B, C}), B ve C birer koalisyonda kilittir ⇒ (3/5, 1/5, 1/5).
  • 1958 AET Bakanlar Konseyi [12; 4, 4, 4, 2, 2, 1]: Lüksemburg'un oyu hiçbir koalisyonun sonucunu değiştiremiyordu, güç = 0.

Koalisyon Oyunları

Kod İzleme: guc_endeksi(N, w, q)

q = 51kilit sayacıA0B0C0

w = {A: 50, B: 49, C: 1}, q = 51. 3! = 6 geliş sırası; her sırada kotayı geçiren oyuncu kilittir.

q = 51A 50B 49Csıra: A → B → Ckilit sayacıA0B0C0

Sıra A → B → C: toplam 50 < 51 iken B gelir, toplam 99 ≥ 51.

q = 51A 50B 49Csıra: A → B → C kilit: Bkilit sayacıA0B1C0

B kilit: kilit[B] = 1; break ile sıradaki geliş sırasına geçilir.

q = 51A 50CB 49sıra: A → C → Bkilit sayacıA0B1C0

Sıra A → C → B: toplam 50 < 51 iken C gelir, toplam 51 ≥ 51.

q = 51A 50CB 49sıra: A → C → B kilit: Ckilit sayacıA0B1C1

C kilit: kilit[C] = 1; break ile sıradaki geliş sırasına geçilir.

q = 51B 49A 50Csıra: B → A → Ckilit sayacıA0B1C1

Sıra B → A → C: toplam 49 < 51 iken A gelir, toplam 99 ≥ 51.

q = 51B 49A 50Csıra: B → A → C kilit: Akilit sayacıA1B1C1

A kilit: kilit[A] = 1; break ile sıradaki geliş sırasına geçilir.

q = 51B 49CA 50sıra: B → C → Akilit sayacıA1B1C1

Sıra B → C → A: toplam 50 < 51 iken A gelir, toplam 100 ≥ 51.

q = 51B 49CA 50sıra: B → C → A kilit: Akilit sayacıA2B1C1

A kilit: kilit[A] = 2; break ile sıradaki geliş sırasına geçilir.

q = 51CA 50B 49sıra: C → A → Bkilit sayacıA2B1C1

Sıra C → A → B: toplam 1 < 51 iken A gelir, toplam 51 ≥ 51.

q = 51CA 50B 49sıra: C → A → B kilit: Akilit sayacıA3B1C1

A kilit: kilit[A] = 3; break ile sıradaki geliş sırasına geçilir.

q = 51CB 49A 50sıra: C → B → Akilit sayacıA3B1C1

Sıra C → B → A: toplam 50 < 51 iken A gelir, toplam 100 ≥ 51.

q = 51CB 49A 50sıra: C → B → A kilit: Akilit sayacıA4B1C1

A kilit: kilit[A] = 4; break ile sıradaki geliş sırasına geçilir.

q = 51kilit sayacıA4B1C1

Güç = kilit / 6 ⇒ (2/3, 1/6, 1/6). B'nin 49 sandalyesi C'nin 1 sandalyesinden fazla güç getirmiyor.

def guc_endeksi(N, w, q):
  kilit = {i: 0 for i in N}
  siralar = list(permutations(N))
  for sira in siralar:
    toplam = 0
    for i in sira:
      toplam += w[i]
      if toplam >= q:
        kilit[i] += 1
        break
  return {i: kilit[i] / len(siralar) for i in N}

Kamu Malı Oyunu

Kamu Malı Oyunu (Public Goods Game)

  • Kamu malı: kimse kullanımdan dışlanamaz ve bir kişinin kullanımı diğerininkini azaltmaz (ör. açık kaynak yazılım, temiz hava, ortak veri kümesi).
  • Oyun: n oyuncu, her biri e jeton. Oyuncu i ortak havuza 0 ile e arasında ki jeton katar. Havuz r çarpanıyla büyür ve herkese eşit dağıtılır.
  • Kazanç: ui = e − ki + (r/n)·Σj kj (Σj kj: havuza giren toplam jeton)
  • r/n: bir jetonun katkı yapana geri dönen kısmı (MPCR: kişi başı marjinal getiri). 1/n < r/n < 1 ise ikilem vardır.
Örneğimizn = 4, e = 10, r = 1,6 ⇒ r/n = 0,4
Bireysel1 jeton katkı: kendine 0,4 döner ⇒ net −0,6
Sosyal1 jeton katkı: gruba 1,6 döner ⇒ net +0,6

Kamu Malı Oyunu

Neden Beleşçilik (Free Riding)?

  • u1 = 10 − k1 + 0,4·(k1 + diğerleri). O1 bir jeton daha verirse cebinden 1 jeton çıkar, havuzdan 0,4 geri gelir: net −0,6.
  • Diğerleri ne yaparsa yapsın her jeton katkı O1'e 0,6 kaybettirir: k = 0 baskın strateji.
  • Tek Nash dengesi: herkes 0 → kişi başı 10. Oysa herkes 10 verse kişi başı 16: denge Pareto optimal değil.
  • Kırmızı doğru: diğerleri tam katkı verirken O1'in kazancı 22'den 16'ya düşer. Mavi: herkes aynı k'yi verirse kişi başı 10'dan 16'ya çıkar.
  • Çoklu ajan karşılığı: dosya paylaşım ağında yükleme yapmadan yalnızca indiren eş, federe öğrenmede güncelleme göndermeden ortak modeli kullanan istemci.
1016220510katkı k (jeton)tek başına k (diğerleri 10)herkes k
Mahkûmun İkilemi'nin n kişilik hâli: bireysel teşvik (−0,6) ile sosyal refah (+0,6) ters yönde.

Özet

Özet

Ajan ve MASOtonom, reaktif, proaktif ve sosyal ajanlar; işbirlikçi, rekabetçi ya da karma sistemler; çoğu gerçek sistem hibrit kontrol kullanır.
Sözleşme ağıDuyuru → teklif → ödül. Dağıtık ve basit, ama açgözlü: örnekte 18 dk vs optimum 13 dk.
Koalisyon oyunlarıv(S) koalisyon değerini verir. Shapley = ortalama marjinal katkı: (30, 40, 50). Ağırlıklı oylamada güç ≠ ağırlık.
ÇekirdekHiçbir koalisyonun ayrılmak istemediği paylaşımlar; boş olabilir (çoğunluk oyunu).
Kamu malır/n < 1 ise katkı vermemek baskın: denge 10, optimum 16 (kişi başı).
BeleşçilikOrtak kaynağa katkı vermeyen ajan (yalnızca indiren eş) bireysel olarak kazanır, sistem kaybeder.

Özet

Etkileşimli Oyunlar

Shapley Koalisyon OyunuKarakteristik fonksiyondan marjinal katkılar ve Shapley değeri.
Kamu Malı OyunuTurlar boyunca katkı ve beleşçilerin etkisi.

Özet

Örnek Problemler

  1. Sözleşme ağı örneğinde görevler G3, G2, G1 sırasıyla ihaleye çıksaydı atama ve toplam süre ne olurdu?
  2. Eldiven oyunu: A'nın sol, B ve C'nin sağ eldiveni var; bir çift 1 değerinde. v'yi yazın, Shapley değerini hesaplayın.
  3. Aynı eldiven oyununun çekirdeği nedir?
  4. Ana örnekte (40, 40, 40) çekirdekte mi? (20, 25, 75) çekirdekte mi?
  5. Kamu malı: n = 5, e = 10, r = 2. Herkes tam katkı verirse ve biri beleşçi olursa kazançlar?
  6. Kamu malı oyununda r ≥ n olsaydı baskın strateji ne olurdu?
Cevapları göster
  1. G3→R2; G2→R1; G1→R3: toplam 13 dk — bu sırada optimuma ulaşılır; sıra sonucu değiştirir.
  2. v = 1 yalnızca A'yı ve en az bir sağ eldiveni içeren koalisyonlarda. φ = (2/3, 1/6, 1/6).
  3. Tek nokta (1, 0, 0): xA+xB ≥ 1 ve xA+xC ≥ 1 ⇒ xB = xC = 0. Shapley çekirdekte değil.
  4. (40, 40, 40): tüm kısıtlar sağlanır, çekirdekte. (20, 25, 75): xA+xB = 45 < 50 ⇒ değil.
  5. Herkes 10: havuz 50·2 = 100, herkes 20. Biri 0: havuz 80, kişi başı 16; beleşçi 26, diğerleri 16.
  6. r/n ≥ 1 ⇒ her jeton kendine en az 1 döndürür: tam katkı (zayıf) baskın; ikilem kalkar.

Özet

Kaynaklar

  • M. Wooldridge, An Introduction to MultiAgent Systems, 2. baskı, Wiley, 2009.
  • Y. Shoham, K. Leyton-Brown, Multiagent Systems: Algorithmic, Game-Theoretic, and Logical Foundations, Cambridge University Press, 2009 (Bölüm 12).
  • G. Chalkiadakis, E. Elkind, M. Wooldridge, Computational Aspects of Cooperative Game Theory, Morgan & Claypool, 2011.
  • R. G. Smith, "The contract net protocol: High-level communication and control in a distributed problem solver", IEEE Trans. Computers C-29(12), 1980.
  • L. S. Shapley, "A value for n-person games", Contributions to the Theory of Games II, Princeton, 1953; "Cores of convex games", Int. J. Game Theory 1, 1971; L. S. Shapley, M. Shubik, APSR 48(3), 1954.
  • G. de Clippel, K. Rozen, "Fairness through the lens of cooperative game theory: An experimental approach", American Economic Journal: Microeconomics 14(3), 2022.
  • T. Sandholm vd., "Coalition structure generation with worst case guarantees", Artificial Intelligence 111, 1999.

Özet

Kaynaklar: Kitaplar, Dersler ve Araçlar

  • A. R. Karlin, Y. Peres, Game Theory, Alive, American Mathematical Society, 2017 (koalisyonlar ve Shapley değeri bölümü).
  • N. Nisan, T. Roughgarden, É. Tardos, V. Vazirani (ed.), Algorithmic Game Theory, Cambridge University Press, 2007 (Bölüm 15: maliyet paylaşımı, çekirdek ve Shapley değeri).
  • C. W. Reynolds, "Flocks, herds and schools: A distributed behavioral model", SIGGRAPH '87, 1987; T. C. Schelling, "Dynamic models of segregation", J. Mathematical Sociology 1(2), 1971.
  • FIPA, Contract Net Interaction Protocol Specification (SC00029H), 2002.
  • M. Wooldridge, N. R. Jennings, "Intelligent agents: Theory and practice", Knowledge Engineering Review 10(2), 1995; D. B. Gillies, "Solutions to general non-zero-sum games", Contributions to the Theory of Games IV, Princeton, 1959.
  • O. N. Bondareva, "Some applications of linear programming methods to the theory of cooperative games", Problemy Kibernetiki 10, 1963; L. S. Shapley, "On balanced sets and cores", Naval Research Logistics Quarterly 14(4), 1967; J. Schaeffer vd., "Checkers is solved", Science 317(5844), 2007.
  • Ders sayfaları: N. Shah, CSC304 (Toronto) · A. Procaccia, 15-896 (CMU) · T. Roughgarden, CS364A (Stanford) · M. Hoefer, AGT (Frankfurt)
  • Araçlar: Nashpy (iki oyunculu oyunlarda Nash dengesi; ör. çıkar yelpazesindeki üç oyun) · Gambit (açık kaynak oyun kuramı araçları).

Son

Bölüm 10: Çoklu Ajan Sistemleri
Sonraki bölüm: Bölüm 11: Algoritmik Adalet ve Etik
Çalışma soruları · Terim sözlüğü
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.