Pemodelan Python untuk ILP Minimum Dominating Set (MDS)
Nov 12 2020
Saya sedang menulis kode untuk memecahkan masalah MDS , masalahnya adalah:\begin{align}\min&\quad\sum_{v\in V}y_v\\\text{s.t.}&\quad y_v+\sum_{(u,v)\in E}y_u\ge1\quad\forall v\in V\\&\quad y_v\in\{0,1\}\quad\forall v\in V.\end{align}
Saya telah menggunakan Pulp dan nx.network dengan python untuk memodelkan masalah sebagai berikut:
- Masalah
prob = pulp.LpProblem("MinimumDominatingSet", pulp.LpMinimize) - Variabel
y = pulp.LpVariable.dicts("y", g.nodes(), cat=pulp.LpBinary) - Objektif
for (v,u) in g.edges(): prob += pulp.lpSum(y) - Paksaan
for (v,u) in g.edges(): prob += y.get(v) + sum(y.get(u) for (v,u) in g.edges) >= 1
Saya telah mencoba menguji output dengan sosok bintang sederhana. Sayangnya, hasilnya tidak benar. Saya curiga mungkin ada masalah dengan pemodelan kendala tersebut.
Adakah yang bisa membimbing saya melalui ini?
Jawaban
3 Kuifje Nov 12 2020 at 00:55
Tujuan Anda harus prob+= pulp.lpSum(y), dan batasannya harus:
for v in g.nodes():
prob += y[v] + pulp.lpSum([y[u] for u in g.neighbors(v)]) >= 1
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'