Bölüm 10: Çoklu Ajan Sistemleri

Algoritmik Oyun Kuramı
Ajan özellikleriİşbirliği ve rekabetMerkezi 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 çözüm yollarını tartış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ı en büyüklemeye ç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ışı
Müzakereci (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ı.
Çevrimiç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 ve konvansiyon 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ç

Hatırlatma: 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: Merkezi mi, Dağıtık mı?

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

Merkezi 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 ışığı da benzer biçimde bir korelasyonlu denge aracıdır.

İş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). Ortak dil ve protokol gerekir: FIPA-ACL mesaj standardı, sözleşme ağını da bir etkileşim protokolü olarak tanımlar.
Öğrenme ve uyumAjanlar geri bildirimle stratejisini günceller: en iyi tepki dinamiği, kurgusal oyun, 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. Reynolds'ın (1987) "boids" modelinde üç kural (ayrılma, hizalanma, birleşme) sürü hareketini; 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. Kamu malı deneylerinde katkıların turdan tura düşmesi de ajanlar arası etkileşimden doğan bir örüntüdür.

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
Merkezi optimizasyonTüm maliyetler toplanır, atama problemi çözülür (Macar algoritması, O(n³))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 bir açık artırmadır: yüklenici yalan söylerse ne olur? (Vickrey)

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

Merkezi çö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ı Bell sayısıdır: 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: 2N → ℝ, v(∅) = 0. Buna karakteristik fonksiyon denir; (N, v) aktarılabilir faydalı (TU) oyundur.
  • 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 (SHAP) da kullanılır.
VerimlilikΣ φᵢ = v(N).
SimetriAynı katkıyı yapan iki oyuncu aynı payı alır.
Kukla oyuncuHiçbir koalisyona katkısı yoksa φᵢ = 0.
Toplamsallıkφ(v + w) = φ(v) + φ(w).
Eşdeğer formül: φi = ΣS ⊆ N∖{i} |S|! (n − |S| − 1)! / n! · [ v(S ∪ {i}) − v(S) ]

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 50phi (toplam katkı, henüz bölünmedi)

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 xᵢ = v(N) ve her S ⊆ N için Σi∈S xᵢ ≥ 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): bir çokyüzlü; boş, tek nokta ya da 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) oyunlarda (örneğimiz öyle) Shapley değeri ç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 ε-çekirdek, çekirdekçik (nucleolus) gibi zayıflatılmış kavramlar kullanılır.
İleri okumaÇekirdeğin ne zaman boş olmadığını Bondareva–Shapley teoremi söyler: oyun dengeli (balanced) ise çekirdek boş değildir (Bondareva, 1963; Shapley, 1967).

Koalisyon Oyunları

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

sandalyeShapley–ShubikBanzhafA 50A 2/3A 3/5B 49B 1/6B 1/5CC 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 ci ∈ [0, e] katar. Havuz r çarpanıyla büyür ve herkese eşit dağıtılır.
  • Kazanç: uᵢ = e − cᵢ + (r/n)·Σⱼ cⱼ
  • r/n: bir jetonun katkı yapana geri dönen kısmı (MPCR). 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

Kamu Malı Oyunu: Dört Senaryo

senaryokatkılarhavuz × 1,6kazançlar (O1, O2, O3, O4)toplam
Herkes tam katkı····
Kimse katkı vermez····
Bir beleşçi····
Tek katkıcı····

Her oyuncu 10 jetonla başlar. Katkıların toplamı 1,6 ile çarpılır ve 4 kişiye eşit dağıtılır: ui = 10 − ci + 0,4·Σc.

senaryokatkılarhavuz × 1,6kazançlar (O1, O2, O3, O4)toplam
Herkes tam katkı(10, 10, 10, 10)64(16, 16, 16, 16)64
Kimse katkı vermez····
Bir beleşçi····
Tek katkıcı····

Herkes 10 verir: havuz 40 × 1,6 = 64; herkes 16 alır. Toplam refah en yüksek: 64.

senaryokatkılarhavuz × 1,6kazançlar (O1, O2, O3, O4)toplam
Herkes tam katkı(10, 10, 10, 10)64(16, 16, 16, 16)64
Kimse katkı vermez(0, 0, 0, 0)0(10, 10, 10, 10)40
Bir beleşçi····
Tek katkıcı····

Kimse vermez: herkes 10'unu tutar; toplam 40. Herkes tam katkıya göre 6 jeton kaybeder.

senaryokatkılarhavuz × 1,6kazançlar (O1, O2, O3, O4)toplam
Herkes tam katkı(10, 10, 10, 10)64(16, 16, 16, 16)64
Kimse katkı vermez(0, 0, 0, 0)0(10, 10, 10, 10)40
Bir beleşçi(0, 10, 10, 10)48(22, 12, 12, 12)58
Tek katkıcı····

O1 beleşçi (0), diğerleri 10: havuz 30 × 1,6 = 48, kişi başı 12. Beleşçi 22 alır — tam katkıdaki 16'dan fazla!

senaryokatkılarhavuz × 1,6kazançlar (O1, O2, O3, O4)toplam
Herkes tam katkı(10, 10, 10, 10)64(16, 16, 16, 16)64
Kimse katkı vermez(0, 0, 0, 0)0(10, 10, 10, 10)40
Bir beleşçi(0, 10, 10, 10)48(22, 12, 12, 12)58
Tek katkıcı(10, 0, 0, 0)16(4, 14, 14, 14)46

Tek katkıcı: O1 10 verir, havuz 16, kişi başı 4. Katkıcı 4 alır (başladığı 10 jetonun 6 eksiği); diğerleri 14.

Kamu Malı Oyunu

Neden Beleşçilik (Free Riding)?

  • u1 = 10 − c1 + 0,4·(c1 + diğerleri) ⇒ ∂u1/∂c1 = −1 + 0,4 = −0,6.
  • Diğerleri ne yaparsa yapsın her jeton katkı O1'e 0,6 kaybettirir: c = 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ı c'yi verirse kişi başı 10'dan 16'ya çıkar.
1016220510katkı c (jeton)tek başına c (diğerleri 10)herkes c
Mahkûmun İkilemi'nin n kişilik hâli: bireysel teşvik (−0,6) ile sosyal refah (+0,6) ters yönde.

Kamu Malı Oyunu

Deneyler ve Beleşçiliğe Karşı Çözümler

Laboratuvar bulguları

  • İlk turda katkılar genellikle bütçenin %40–60'ı; teori 0 der (Ledyard, 1995).
  • Tekrarlanan turlarda katkılar giderek düşer: deneklerin yaklaşık yarısı koşullu işbirlikçidir, beleşçilere tepki verir (Fischbacher, Gächter, Fehr, 2001).
  • Maliyetli ceza imkânı verilince katkılar yüksek kalır (Fehr ve Gächter, 2000).
  • MAS örneği: dosya paylaşım ağında yükleme yapmadan yalnızca indirmek.
Ceza / ödülKatkı vermeyene yaptırım; teşvik gradyanını pozitife çevirir.
Tekrar ve itibarUzun ilişkide koşullu işbirliği sürdürülebilir.
Eşik + iadeHedef toplanmazsa para iade (bağış kampanyaları).
MekanizmaKatkıyı zorunlu/koşullu kılan kurallar (vergi, kota).

Kamu Malı Oyunu

Kod İzleme: kosullu_katki(c, tur)

0510012345turO2–O4 (koşullu)O1 (beleşçi) = 0tur 0: katkılar[0, 10, 10, 10]kazanç u = 10 − c + 0,4·ΣcO1: 22 O2: 12

Model: O1 hep 0 verir; O2–O4 koşullu işbirlikçi: bu tur, diğerlerinin önceki turdaki ortalaması kadar verir.

0510012345turO2–O4 (koşullu)O1 (beleşçi) = 0tur 0: katkılar[0, 10, 10, 10]kazanç u = 10 − c + 0,4·ΣcO1: 22 O2: 12

t = 0: O2 için diğerlerinin toplamı 20 ⇒ ortalama 20 / 3 = 6,7 (O3, O4 de aynı).

0510012345turO2–O4 (koşullu)O1 (beleşçi) = 0tur 1: katkılar[0, 6.7, 6.7, 6.7]kazanç u = 10 − c + 0,4·ΣcO1: 18 O2: 11,3

Tur 1: katkılar [0, 6.7, 6.7, 6.7]. Beleşçi O1, herkesten fazla kazanır.

0510012345turO2–O4 (koşullu)O1 (beleşçi) = 0tur 1: katkılar[0, 6.7, 6.7, 6.7]kazanç u = 10 − c + 0,4·ΣcO1: 18 O2: 11,3

t = 1: O2 için diğerlerinin toplamı 13,3 ⇒ ortalama 13,3 / 3 = 4,4 (O3, O4 de aynı).

0510012345turO2–O4 (koşullu)O1 (beleşçi) = 0tur 2: katkılar[0, 4.4, 4.4, 4.4]kazanç u = 10 − c + 0,4·ΣcO1: 15,3 O2: 10,9

Tur 2: katkılar [0, 4.4, 4.4, 4.4]. Her tur katkı bir önceki değerin üçte ikisine iner (üçte bir oranında azalır).

0510012345turO2–O4 (koşullu)O1 (beleşçi) = 0tur 2: katkılar[0, 4.4, 4.4, 4.4]kazanç u = 10 − c + 0,4·ΣcO1: 15,3 O2: 10,9

t = 2: O2 için diğerlerinin toplamı 8,9 ⇒ ortalama 8,9 / 3 = 3,0 (O3, O4 de aynı).

0510012345turO2–O4 (koşullu)O1 (beleşçi) = 0tur 3: katkılar[0, 3.0, 3.0, 3.0]kazanç u = 10 − c + 0,4·ΣcO1: 13,6 O2: 10,6

Tur 3: katkılar [0, 3.0, 3.0, 3.0].

0510012345turO2–O4 (koşullu)O1 (beleşçi) = 0tur 3: katkılar[0, 3.0, 3.0, 3.0]kazanç u = 10 − c + 0,4·ΣcO1: 13,6 O2: 10,6

t = 3: O2 için diğerlerinin toplamı 5,9 ⇒ ortalama 5,9 / 3 = 2,0 (O3, O4 de aynı).

0510012345turO2–O4 (koşullu)O1 (beleşçi) = 0tur 4: katkılar[0, 2.0, 2.0, 2.0]kazanç u = 10 − c + 0,4·ΣcO1: 12,4 O2: 10,4

Tur 4: katkılar [0, 2.0, 2.0, 2.0].

0510012345turO2–O4 (koşullu)O1 (beleşçi) = 0tur 4: katkılar[0, 2.0, 2.0, 2.0]kazanç u = 10 − c + 0,4·ΣcO1: 12,4 O2: 10,4

t = 4: O2 için diğerlerinin toplamı 4,0 ⇒ ortalama 4,0 / 3 = 1,3 (O3, O4 de aynı).

0510012345turO2–O4 (koşullu)O1 (beleşçi) = 0tur 5: katkılar[0, 1.3, 1.3, 1.3]kazanç u = 10 − c + 0,4·ΣcO1: 11,6 O2: 10,3

Tur 5: katkılar [0, 1.3, 1.3, 1.3].

0510012345turO2–O4 (koşullu)O1 (beleşçi) = 0tur 5: katkılar[0, 1.3, 1.3, 1.3]kazanç u = 10 − c + 0,4·ΣcO1: 11,6 O2: 10,3

5 turda katkı 10 → 1,3: tek beleşçi, çoğunluğun işbirliğini çözer (laboratuvardaki düşüşün basit modeli).

def kosullu_katki(c, tur):
  gecmis = [c]
  for t in range(tur):
    yeni = [0]                  # O1 hep beleşçi
    for i in range(1, len(c)):
      digerleri = sum(c) - c[i]
      yeni.append(digerleri / (len(c) - 1))
    c = yeni
    gecmis.append(c)
  return gecmis

Ö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şı).
ÇözümlerCeza, itibar, eşik ve mekanizma tasarımı teşvikleri sosyal refahla hizalar.

Özet

Etkileşimli Oyunlar

Shapley Koalisyon OyunuKarakteristik fonksiyondan marjinal katkılar ve Shapley değeri.
Kamu Malı OyunuTurlar boyunca katkı; beleşçilerin ve cezanın 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.
  • J. O. Ledyard, "Public goods: A survey of experimental research", Handbook of Experimental Economics, 1995.
  • E. Fehr, S. Gächter, "Cooperation and punishment in public goods experiments", American Economic Review 90(4), 2000; U. Fischbacher, S. Gächter, E. Fehr, "Are people conditionally cooperative?", Economics Letters 71(3), 2001.
  • 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.